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 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 #queueAudio
de 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.
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 abierto de Android y se usan según los términos descritos en la licencia de atribución de Creative Commons 2.5.
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 sincrónicamente. (Heredado de Object) |
JniPeerMembers |
La clase MediaSync se puede usar para reproducir secuencias de audio y vídeo sincrónicamente. |
PeerReference |
La clase MediaSync se puede usar para reproducir secuencias de audio y vídeo sincrónicamente. (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 use como entrada. |
Dispose() |
La clase MediaSync se puede usar para reproducir secuencias de audio y vídeo sincrónicamente. (Heredado de Object) |
Dispose(Boolean) |
La clase MediaSync se puede usar para reproducir secuencias de audio y vídeo sincrónicamente. (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 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. |
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 sincrónicamente. (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 sincrónicamente. (Heredado de Object) |
Wait() |
Hace que el subproceso actual espere hasta que se despierta, 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
IJavaPeerable.Disposed() |
La clase MediaSync se puede usar para reproducir secuencias de audio y vídeo sincrónicamente. (Heredado de Object) |
IJavaPeerable.DisposeUnlessReferenced() |
La clase MediaSync se puede usar para reproducir secuencias de audio y vídeo sincrónicamente. (Heredado de Object) |
IJavaPeerable.Finalized() |
La clase MediaSync se puede usar para reproducir secuencias de audio y vídeo sincrónicamente. (Heredado de Object) |
IJavaPeerable.JniManagedPeerState |
La clase MediaSync se puede usar para reproducir secuencias de audio y vídeo sincrónicamente. (Heredado de Object) |
IJavaPeerable.SetJniIdentityHashCode(Int32) |
La clase MediaSync se puede usar para reproducir secuencias de audio y vídeo sincrónicamente. (Heredado de Object) |
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
La clase MediaSync se puede usar para reproducir secuencias de audio y vídeo sincrónicamente. (Heredado de Object) |
IJavaPeerable.SetPeerReference(JniObjectReference) |
La clase MediaSync se puede usar para reproducir secuencias de audio y vídeo sincrónicamente. (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 sincrónicamente. |
GetJniTypeName(IJavaPeerable) |
La clase MediaSync se puede usar para reproducir secuencias de audio y vídeo sincrónicamente. |