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 de áudio ou somente vídeo.
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 o AudioTrack com base no tipo de fluxo que será reproduzido.
Para vídeo, o cliente precisa ligar #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
o . Os buffers de áudio são enviados para o MediaSync diretamente via #queueAudio
, e são retornados ao cliente de Callback#onAudioBufferConsumed
forma assíncrona. O cliente não deve modificar um buffer de áudio até que ele seja retornado.
O cliente pode, opcionalmente, 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 os componentes correspondentes. Isso pode reduzir um possível underrun inicial.
Documentação Java para android.media.MediaSync
.
Partes desta página são modificações baseadas no trabalho criado e compartilhado pelo Android Open Source Project e usado de acordo com os termos descritos na Creative Commons 2.5 Attribution License.
Construtores
MediaSync() |
Construtor de classe. |
Propriedades
Class |
Retorna a classe de tempo de execução deste |
Handle |
O identificador para a instância subjacente do Android. (Herdado de Object) |
JniIdentityHashCode |
A classe MediaSync pode ser usada para reproduzir fluxos de áudio e vídeo de forma síncrona. (Herdado de Object) |
JniPeerMembers |
A classe MediaSync pode ser usada para reproduzir fluxos de áudio e vídeo de forma síncrona. |
PeerReference |
A classe MediaSync pode ser usada para reproduzir fluxos de áudio e vídeo de forma síncrona. (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 |
Esta API suporta a infraestrutura Mono para Android e não se destina a ser usada diretamente do seu código. (Herdado de Object) |
ThresholdType |
Esta API suporta a infraestrutura Mono para Android e não se destina a ser usada diretamente do seu código. (Herdado de Object) |
Timestamp |
Obtenha a posição de reprodução atual. |
Métodos
Clone() |
Cria e retorna uma cópia desse objeto. (Herdado de Object) |
CreateInputSurface() |
Solicita que um Surface seja utilizado como entrada. |
Dispose() |
A classe MediaSync pode ser usada para reproduzir fluxos de áudio e vídeo de forma síncrona. (Herdado de Object) |
Dispose(Boolean) |
A classe MediaSync pode ser usada para reproduzir fluxos de áudio e vídeo de forma síncrona. (Herdado de Object) |
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. |
SetSurface(Surface) |
Define a superfície de saída para MediaSync. |
ToArray<T>() |
A classe MediaSync pode ser usada para reproduzir fluxos de áudio e vídeo de forma síncrona. (Herdado de Object) |
ToString() |
Retorna uma representação de cadeia de caracteres do objeto. (Herdado de Object) |
UnregisterFromRuntime() |
A classe MediaSync pode ser usada para reproduzir fluxos de áudio e vídeo de forma síncrona. (Herdado de Object) |
Wait() |
Faz com que o thread atual aguarde até que ele seja ativado, normalmente sendo <em 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 sendo <em>notificado</em> ou <em interrompido</em>, ou até que>uma certa quantidade de tempo real tenha decorrido. (Herdado de Object) |
Wait(Int64) |
Faz com que o thread atual aguarde até que ele seja despertado, normalmente sendo <em>notificado</em> ou <em interrompido</em>, ou até que>uma certa quantidade de tempo real tenha decorrido. (Herdado de Object) |
Implantações explícitas de interface
IJavaPeerable.Disposed() |
A classe MediaSync pode ser usada para reproduzir fluxos de áudio e vídeo de forma síncrona. (Herdado de Object) |
IJavaPeerable.DisposeUnlessReferenced() |
A classe MediaSync pode ser usada para reproduzir fluxos de áudio e vídeo de forma síncrona. (Herdado de Object) |
IJavaPeerable.Finalized() |
A classe MediaSync pode ser usada para reproduzir fluxos de áudio e vídeo de forma síncrona. (Herdado de Object) |
IJavaPeerable.JniManagedPeerState |
A classe MediaSync pode ser usada para reproduzir fluxos de áudio e vídeo de forma síncrona. (Herdado de Object) |
IJavaPeerable.SetJniIdentityHashCode(Int32) |
A classe MediaSync pode ser usada para reproduzir fluxos de áudio e vídeo de forma síncrona. (Herdado de Object) |
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
A classe MediaSync pode ser usada para reproduzir fluxos de áudio e vídeo de forma síncrona. (Herdado de Object) |
IJavaPeerable.SetPeerReference(JniObjectReference) |
A classe MediaSync pode ser usada para reproduzir fluxos de áudio e vídeo de forma síncrona. (Herdado de Object) |
Métodos de Extensão
JavaCast<TResult>(IJavaObject) |
Executa uma conversão de tipo verificada em tempo de execução do Android. |
JavaCast<TResult>(IJavaObject) |
A classe MediaSync pode ser usada para reproduzir fluxos de áudio e vídeo de forma síncrona. |
GetJniTypeName(IJavaPeerable) |
A classe MediaSync pode ser usada para reproduzir fluxos de áudio e vídeo de forma síncrona. |