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 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 |
| 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 |
| 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 |
| JavaAs<TResult>(IJavaPeerable) |
Intente coerció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 sincrónicamente. |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
Intente coerción |