MediaSync Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
A classe MediaSync pode ser usada para reproduzir fluxos de áudio e vídeo de forma síncrona.
[Android.Runtime.Register("android/media/MediaSync", ApiSince=23, DoNotGenerateAcw=true)]
public sealed class MediaSync : Java.Lang.Object
[<Android.Runtime.Register("android/media/MediaSync", ApiSince=23, DoNotGenerateAcw=true)>]
type MediaSync = class
inherit Object
- Herança
- Atributos
Comentários
A classe MediaSync pode ser usada para reproduzir fluxos de áudio e vídeo de forma síncrona. Ele também pode ser usado para reproduzir fluxo somente áudio ou somente vídeo.
O MediaSync geralmente é usado assim:
MediaSync sync = new MediaSync();
sync.setSurface(surface);
Surface inputSurface = sync.createInputSurface();
...
// MediaCodec videoDecoder = ...;
videoDecoder.configure(format, inputSurface, ...);
...
sync.setAudioTrack(audioTrack);
sync.setCallback(new MediaSync.Callback() {
{@literal @Override}
public void onAudioBufferConsumed(MediaSync sync, ByteBuffer audioBuffer, int bufferId) {
...
}
}, null);
// This needs to be done since sync is paused on creation.
sync.setPlaybackParams(new PlaybackParams().setSpeed(1.f));
for (;;) {
...
// send video frames to surface for rendering, e.g., call
// videoDecoder.releaseOutputBuffer(videoOutputBufferIx, videoPresentationTimeNs);
// More details are available as below.
...
sync.queueAudio(audioByteBuffer, bufferId, audioPresentationTimeUs); // non-blocking.
// The audioByteBuffer and bufferId will be returned via callback.
// More details are available as below.
...
...
}
sync.setPlaybackParams(new PlaybackParams().setSpeed(0.f));
sync.release();
sync = null;
// The following code snippet illustrates how video/audio raw frames are created by
// MediaCodec's, how they are fed to MediaSync and how they are returned by MediaSync.
// This is the callback from MediaCodec.
onOutputBufferAvailable(MediaCodec codec, int bufferId, BufferInfo info) {
// ...
if (codec == videoDecoder) {
// surface timestamp must contain media presentation time in nanoseconds.
codec.releaseOutputBuffer(bufferId, 1000 * info.presentationTime);
} else {
ByteBuffer audioByteBuffer = codec.getOutputBuffer(bufferId);
sync.queueAudio(audioByteBuffer, bufferId, info.presentationTime);
}
// ...
}
// This is the callback from MediaSync.
onAudioBufferConsumed(MediaSync sync, ByteBuffer buffer, int bufferId) {
// ...
audioDecoder.releaseBuffer(bufferId, false);
// ...
}
O cliente precisa configurar o coletor correspondente definindo o Surface e/ou AudioTrack com base no tipo de fluxo que será reproduzido.
Para vídeo, o cliente precisa chamar #createInputSurface para obter uma superfície na qual renderizará quadros de vídeo.
Para áudio, o cliente precisa configurar a faixa de áudio corretamente, por exemplo, usando AudioTrack#MODE_STREAM. Os buffers de áudio são enviados diretamente ao MediaSync por meio #queueAudioe são retornados para o cliente de forma Callback#onAudioBufferConsumed assíncrona. O cliente não deve modificar um buffer de áudio até que ele seja retornado.
Opcionalmente, o cliente pode pré-preencher buffers de áudio/vídeo definindo a taxa de reprodução como 0,0 e, em seguida, alimentar buffers de áudio/vídeo para componentes correspondentes. Isso pode reduzir a possível subexecução inicial.
Java documentação para android.media.MediaSync.
Partes desta página são modificações baseadas no trabalho criado e compartilhado pelo Project Open Source do Open Source e usadas de acordo com os termos descritos na Creative Commons 2.5.
Construtores
| Nome | Description |
|---|---|
| MediaSync() |
Construtor de classe. |
Propriedades
| Nome | Description |
|---|---|
| Class |
Retorna a classe de runtime deste |
| Handle |
O identificador para a instância subjacente do Android. (Herdado de Object) |
| JniIdentityHashCode |
Obtém o código de hash de identidade atribuído a esse par Java pelo runtime de interoperabilidade. (Herdado de Object) |
| JniManagedPeerState |
A classe MediaSync pode ser usada para reproduzir fluxos de áudio e vídeo de forma síncrona. (Herdado de JavaObject) |
| JniPeerMembers |
A classe MediaSync pode ser usada para reproduzir fluxos de áudio e vídeo de forma síncrona. |
| PeerReference |
Obtém a referência de objeto JNI para este par Java. (Herdado de Object) |
| PlaybackParams |
Obtém a taxa de reprodução usando |
| SyncParams |
Obtém o modo de sincronização A/V. -ou- Define o modo de sincronização A/V. |
| ThresholdClass |
Essa API dá suporte à infraestrutura do Mono para Android e não se destina a ser usada diretamente do seu código. (Herdado de Object) |
| ThresholdType |
Essa API dá suporte à infraestrutura do Mono para Android e não se destina a ser usada diretamente do seu código. (Herdado de Object) |
| Timestamp |
Obter a posição de reprodução atual. |
Métodos
| Nome | Description |
|---|---|
| Clone() |
Cria e retorna uma cópia desse objeto. (Herdado de Object) |
| Construct(JniObjectReference, JniObjectReferenceOptions) |
A classe MediaSync pode ser usada para reproduzir fluxos de áudio e vídeo de forma síncrona. (Herdado de JavaObject) |
| CreateInputSurface() |
Solicita um Surface a ser usado como entrada. |
| Dispose() |
Libera os recursos mantidos por esse par Java. (Herdado de Object) |
| Dispose(Boolean) |
Libera os recursos mantidos por esse par Java. (Herdado de Object) |
| DisposeUnlessReferenced() |
A classe MediaSync pode ser usada para reproduzir fluxos de áudio e vídeo de forma síncrona. (Herdado de JavaObject) |
| Equals(Object) |
A classe MediaSync pode ser usada para reproduzir fluxos de áudio e vídeo de forma síncrona. (Herdado de JavaObject) |
| Equals(Object) |
Indica se algum outro objeto é "igual a" este. (Herdado de Object) |
| Flush() |
Libera todos os buffers do objeto de sincronização. |
| GetHashCode() |
Retorna um valor de código hash para o objeto. (Herdado de Object) |
| JavaFinalize() |
Chamado pelo coletor de lixo em um objeto quando a coleta de lixo determina que não há mais referências ao objeto. (Herdado de Object) |
| Notify() |
Ativa um único thread que está aguardando no monitor deste objeto. (Herdado de Object) |
| NotifyAll() |
Ativa todos os threads que estão aguardando no monitor deste objeto. (Herdado de Object) |
| QueueAudio(ByteBuffer, Int32, Int64) |
Enfileira os dados de áudio de forma assíncrona para reprodução (o AudioTrack deve estar no modo de streaming). |
| Release() |
Certifique-se de chamar isso quando terminar de liberar qualquer instância de componente aberta em vez de depender do coletor de lixo para fazer isso por você em algum momento no futuro. |
| SetAudioTrack(AudioTrack) |
Define a faixa de áudio para MediaSync. |
| SetCallback(MediaSync+Callback, Handler) |
Define um retorno de chamada assíncrono para eventos MediaSync acionáveis. |
| SetHandle(IntPtr, JniHandleOwnership) |
Define a propriedade Handle (Herdado de Object) |
| SetOnErrorListener(MediaSync+IOnErrorListener, Handler) |
Define um retorno de chamada assíncrono para eventos de erro. |
| SetPeerReference(JniObjectReference, JniObjectReferenceOptions) |
A classe MediaSync pode ser usada para reproduzir fluxos de áudio e vídeo de forma síncrona. (Herdado de JavaObject) |
| SetSurface(Surface) |
Define a superfície de saída para MediaSync. |
| ToArray<T>() |
Cria uma matriz gerenciada com base nesse wrapper de matriz Java. (Herdado de Object) |
| ToString() |
Retorna uma representação de cadeia de caracteres do objeto. (Herdado de Object) |
| UnregisterFromRuntime() |
Cancela o registro desse par Java do runtime de interoperabilidade. (Herdado de Object) |
| Wait() |
Faz com que o thread atual aguarde até ser despertado, normalmente por ser <notificado/em> ou <em>interrompido</em>.<> (Herdado de Object) |
| Wait(Int64, Int32) |
Faz com que o thread atual aguarde até que ele seja despertado, normalmente por ser <>notificado</em> ou <em>interrompido</em>, ou até que uma determinada quantidade de tempo real tenha decorrido. (Herdado de Object) |
| Wait(Int64) |
Faz com que o thread atual aguarde até que ele seja despertado, normalmente por ser <>notificado</em> ou <em>interrompido</em>, ou até que uma determinada quantidade de tempo real tenha decorrido. (Herdado de Object) |
Implantações explícitas de interface
| Nome | Description |
|---|---|
| IJavaPeerable.Disposed() |
A classe MediaSync pode ser usada para reproduzir fluxos de áudio e vídeo de forma síncrona. (Herdado de JavaObject) |
| IJavaPeerable.Finalized() |
A classe MediaSync pode ser usada para reproduzir fluxos de áudio e vídeo de forma síncrona. (Herdado de JavaObject) |
| IJavaPeerable.JniObjectReferenceControlBlock |
A classe MediaSync pode ser usada para reproduzir fluxos de áudio e vídeo de forma síncrona. (Herdado de JavaObject) |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
A classe MediaSync pode ser usada para reproduzir fluxos de áudio e vídeo de forma síncrona. (Herdado de JavaObject) |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
A classe MediaSync pode ser usada para reproduzir fluxos de áudio e vídeo de forma síncrona. (Herdado de JavaObject) |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
A classe MediaSync pode ser usada para reproduzir fluxos de áudio e vídeo de forma síncrona. (Herdado de JavaObject) |
Métodos de Extensão
| Nome | Description |
|---|---|
| GetJniTypeName(IJavaPeerable) |
Obtém o nome JNI do tipo da instância |
| JavaAs<TResult>(IJavaPeerable) |
Tente coagir a digitar |
| JavaCast<TResult>(IJavaObject) |
Executa uma conversão de tipo marcada por runtime do Android. |
| JavaCast<TResult>(IJavaObject) |
A classe MediaSync pode ser usada para reproduzir fluxos de áudio e vídeo de forma síncrona. |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
Tente coagir a digitar |