Lenguaje

MediaSync Clase

Definición

La clase MediaSync se puede usar para reproducir secuencias de audio y vídeo sincrónicamente.

[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 sincrónicamente. 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 el Surface o AudioTrack en función del tipo de secuencia que reproducirá.

En el caso del vídeo, el cliente debe llamar #createInputSurface para obtener una superficie en la que representará fotogramas de vídeo.

En el caso del audio, el cliente debe configurar correctamente la pista de audio, por ejemplo, mediante AudioTrack#MODE_STREAM. Los búferes de audio se envían directamente a MediaSync a través #queueAudiode y se devuelven al cliente mediante Callback#onAudioBufferConsumed asincrónicamente. 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 y vídeo estableciendo la velocidad de reproducción en 0,0 y, a continuación, alimenta los búferes de audio y vídeo a los componentes correspondientes. Esto puede reducir la posible ejecución inicial.

Java documentación para android.media.MediaSync.

Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el Android y se usan según los términos descritos en creative Creative Commons 2.5 Attribution License.

Constructores

Nombre Description
MediaSync()

Constructor de clase.

Propiedades

Nombre Description
Class

Devuelve la clase en tiempo de ejecución de este Objectobjeto .

(Heredado de Object)
Handle

Identificador de la instancia de Android subyacente.

(Heredado de Object)
JniIdentityHashCode

Obtiene el código hash de identidad asignado a este Java del mismo nivel por el tiempo de ejecución de interoperabilidad.

(Heredado de Object)
JniManagedPeerState

La clase MediaSync se puede usar para reproducir secuencias de audio y vídeo sincrónicamente.

(Heredado de JavaObject)
JniPeerMembers

La clase MediaSync se puede usar para reproducir secuencias de audio y vídeo sincrónicamente.

PeerReference

Obtiene la referencia de objeto JNI para este Java del mismo nivel.

(Heredado de Object)
PlaybackParams

Obtiene la velocidad de reproducción mediante PlaybackParams. -o bien- Establece la velocidad de reproducción mediante PlaybackParams.

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

Nombre Description
Clone()

Crea y devuelve una copia de este objeto.

(Heredado de Object)
Construct(JniObjectReference, JniObjectReferenceOptions)

La clase MediaSync se puede usar para reproducir secuencias de audio y vídeo sincrónicamente.

(Heredado de JavaObject)
CreateInputSurface()

Solicita un Surface que se use como entrada.

Dispose()

Libera los recursos mantenidos por este Java del mismo nivel.

(Heredado de Object)
Dispose(Boolean)

Libera los recursos mantenidos por este Java del mismo nivel.

(Heredado de Object)
DisposeUnlessReferenced()

La clase MediaSync se puede usar para reproducir secuencias de audio y vídeo sincrónicamente.

(Heredado de JavaObject)
Equals(Object)

La clase MediaSync se puede usar para reproducir secuencias de audio y vídeo sincrónicamente.

(Heredado de JavaObject)
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 para el objeto .

(Heredado de Object)
JavaFinalize()
Obsoletos.

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 el recolector de elementos no utilizados para hacerlo 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.

SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

La clase MediaSync se puede usar para reproducir secuencias de audio y vídeo sincrónicamente.

(Heredado de JavaObject)
SetSurface(Surface)

Establece la superficie de salida para MediaSync.

ToArray<T>()

Crea una matriz administrada a partir de este contenedor de matriz Java.

(Heredado de Object)
ToString()

Devuelve una representación de cadena del objeto .

(Heredado de Object)
UnregisterFromRuntime()

Anula el registro de este Java del mismo nivel del tiempo de ejecución de interoperabilidad.

(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, 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)
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)

Implementaciones de interfaz explícitas

Nombre Description
IJavaPeerable.Disposed()

La clase MediaSync se puede usar para reproducir secuencias de audio y vídeo sincrónicamente.

(Heredado de JavaObject)
IJavaPeerable.Finalized()

La clase MediaSync se puede usar para reproducir secuencias de audio y vídeo sincrónicamente.

(Heredado de JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

La clase MediaSync se puede usar para reproducir secuencias de audio y vídeo sincrónicamente.

(Heredado de JavaObject)
IJavaPeerable.SetJniIdentityHashCode(Int32)

La clase MediaSync se puede usar para reproducir secuencias de audio y vídeo sincrónicamente.

(Heredado de JavaObject)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

La clase MediaSync se puede usar para reproducir secuencias de audio y vídeo sincrónicamente.

(Heredado de JavaObject)
IJavaPeerable.SetPeerReference(JniObjectReference)

La clase MediaSync se puede usar para reproducir secuencias de audio y vídeo sincrónicamente.

(Heredado de JavaObject)

Métodos de extensión

Nombre Description
GetJniTypeName(IJavaPeerable)

Obtiene el nombre JNI del tipo de la instancia self.

JavaAs<TResult>(IJavaPeerable)

Intente coerción self para escribir TResult, comprobando que la coerción es válida en el lado de Java.

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 sincrónicamente.

TryJavaCast<TResult>(IJavaPeerable, TResult)

Intente coerción self para escribir TResult, comprobando que la coerción es válida en el lado de Java.

Se aplica a