MediaSync Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
La clase MediaSync se puede usar para reproducir secuencias de audio y vídeo de forma sincrónica.
[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
- Herencia
- Atributos
Comentarios
La clase MediaSync se puede usar para reproducir secuencias de audio y vídeo de forma sincrónica. También se puede usar para reproducir secuencias de solo audio o de solo vídeo.
MediaSync se usa normalmente de la siguiente manera:
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);
// ...
}
El cliente debe configurar el receptor correspondiente estableciendo Surface o AudioTrack en función del tipo de secuencia que reproducirá.
En el caso del vídeo, el cliente debe llamar #createInputSurface
a para obtener una superficie en la que representará fotogramas de vídeo.
En el caso del audio, el cliente debe configurar la pista de audio correctamente, por ejemplo, mediante AudioTrack#MODE_STREAM
. Los búferes de audio se envían a MediaSync directamente a través #queueAudio
de y se devuelven al cliente a través Callback#onAudioBufferConsumed
de de forma asincrónica. El cliente no debe modificar un búfer de audio hasta que se devuelva.
Opcionalmente, el cliente puede rellenar previamente los búferes de audio/vídeo estableciendo la velocidad de reproducción en 0,0 y, a continuación, alimentando los búferes de audio/vídeo a los componentes correspondientes. Esto puede reducir la posible ejecución inicial.
Documentación de Java para android.media.MediaSync
.
Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el proyecto de código Project y que se usan según los términos Creative Commons 2.5 Attribution License.
Constructores
MediaSync() |
Constructor de clase. |
Propiedades
Class |
Devuelve la clase en tiempo de ejecución de este |
Handle |
Identificador de la instancia de Android subyacente. (Heredado de Object) |
JniIdentityHashCode |
La clase MediaSync se puede usar para reproducir secuencias de audio y vídeo de forma sincrónica. (Heredado de Object) |
JniPeerMembers |
La clase MediaSync se puede usar para reproducir secuencias de audio y vídeo de forma sincrónica. |
PeerReference |
La clase MediaSync se puede usar para reproducir secuencias de audio y vídeo de forma sincrónica. (Heredado de Object) |
PlaybackParams |
Obtiene la velocidad de reproducción mediante |
SyncParams |
Obtiene el modo de sincronización de A/V. -o bien- Establece el modo de sincronización A/V. |
ThresholdClass |
Esta API admite la infraestructura mono para Android y no está pensada para usarse directamente desde el código. (Heredado de Object) |
ThresholdType |
Esta API admite la infraestructura mono para Android y no está pensada para usarse directamente desde el código. (Heredado de Object) |
Timestamp |
Obtener la posición de reproducción actual. |
Métodos
Clone() |
Crea y devuelve una copia de este objeto. (Heredado de Object) |
CreateInputSurface() |
Solicita a Surface que se use como entrada. |
Dispose() |
La clase MediaSync se puede usar para reproducir secuencias de audio y vídeo de forma sincrónica. (Heredado de Object) |
Dispose(Boolean) |
La clase MediaSync se puede usar para reproducir secuencias de audio y vídeo de forma sincrónica. (Heredado de Object) |
Equals(Object) |
Indica si algún otro objeto es "igual a" este. (Heredado de Object) |
Flush() |
Vacía todos los búferes del objeto de sincronización. |
GetHashCode() |
Devuelve un valor de código hash del objeto. (Heredado de Object) |
JavaFinalize() |
Lo llama el recolector de elementos no utilizados en un objeto cuando la recolección de elementos no utilizados determina que no hay más referencias al objeto . (Heredado de Object) |
Notify() |
Activa un único subproceso que está esperando en el monitor de este objeto. (Heredado de Object) |
NotifyAll() |
Activa todos los subprocesos que están esperando en el monitor de este objeto. (Heredado de Object) |
QueueAudio(ByteBuffer, Int32, Int64) |
Pone en cola los datos de audio de forma asincrónica para la reproducción (AudioTrack debe estar en modo de streaming). |
Release() |
Asegúrese de llamar a esto cuando haya terminado de liberar cualquier instancia de componente abierta en lugar de confiar en que el recolector de elementos no utilizados lo haga por usted en algún momento en el futuro. |
SetAudioTrack(AudioTrack) |
Establece la pista de audio para MediaSync. |
SetCallback(MediaSync+Callback, Handler) |
Establece una devolución de llamada asincrónica para eventos mediaSync accionables. |
SetHandle(IntPtr, JniHandleOwnership) |
Establece la propiedad Handle. (Heredado de Object) |
SetOnErrorListener(MediaSync+IOnErrorListener, Handler) |
Establece una devolución de llamada asincrónica para eventos de error. |
SetSurface(Surface) |
Establece la superficie de salida para MediaSync. |
ToArray<T>() |
La clase MediaSync se puede usar para reproducir secuencias de audio y vídeo de forma sincrónica. (Heredado de Object) |
ToString() |
Devuelve una representación de cadena del objeto. (Heredado de Object) |
UnregisterFromRuntime() |
La clase MediaSync se puede usar para reproducir secuencias de audio y vídeo de forma sincrónica. (Heredado de Object) |
Wait() |
Hace que el subproceso actual espere hasta que se despierte, normalmente por ser em notificado/em> o <em>interrumpido</em>.<>< (Heredado de Object) |
Wait(Int64) |
Hace que el subproceso actual espere hasta que se despierte, normalmente por ser <em>notificado</em> o <em>interrumpido</em>, o hasta que haya transcurrido una cierta cantidad de tiempo real. (Heredado de Object) |
Wait(Int64, Int32) |
Hace que el subproceso actual espere hasta que se despierte, normalmente por ser <em>notificado</em> o <em>interrumpido</em>, o hasta que haya transcurrido una cierta cantidad de tiempo real. (Heredado de Object) |
Implementaciones de interfaz explícitas
IJavaPeerable.Disposed() |
La clase MediaSync se puede usar para reproducir secuencias de audio y vídeo de forma sincrónica. (Heredado de Object) |
IJavaPeerable.DisposeUnlessReferenced() |
La clase MediaSync se puede usar para reproducir secuencias de audio y vídeo de forma sincrónica. (Heredado de Object) |
IJavaPeerable.Finalized() |
La clase MediaSync se puede usar para reproducir secuencias de audio y vídeo de forma sincrónica. (Heredado de Object) |
IJavaPeerable.JniManagedPeerState |
La clase MediaSync se puede usar para reproducir secuencias de audio y vídeo de forma sincrónica. (Heredado de Object) |
IJavaPeerable.SetJniIdentityHashCode(Int32) |
La clase MediaSync se puede usar para reproducir secuencias de audio y vídeo de forma sincrónica. (Heredado de Object) |
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
La clase MediaSync se puede usar para reproducir secuencias de audio y vídeo de forma sincrónica. (Heredado de Object) |
IJavaPeerable.SetPeerReference(JniObjectReference) |
La clase MediaSync se puede usar para reproducir secuencias de audio y vídeo de forma sincrónica. (Heredado de Object) |
Métodos de extensión
JavaCast<TResult>(IJavaObject) |
Realiza una conversión de tipos comprobados en tiempo de ejecución de Android. |
JavaCast<TResult>(IJavaObject) |
La clase MediaSync se puede usar para reproducir secuencias de audio y vídeo de forma sincrónica. |
GetJniTypeName(IJavaPeerable) |
La clase MediaSync se puede usar para reproducir secuencias de audio y vídeo de forma sincrónica. |