Partager via


MediaSync Classe

Définition

La classe MediaSync peut être utilisée pour lire de manière synchrone des flux audio et vidéo.

[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
Héritage
MediaSync
Attributs

Remarques

La classe MediaSync peut être utilisée pour lire de manière synchrone des flux audio et vidéo. Il peut également être utilisé pour lire le flux audio uniquement ou vidéo uniquement.

MediaSync est généralement utilisé comme suit :

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);
                // ...
            }

Le client doit configurer le récepteur correspondant en définissant Surface et/ou AudioTrack en fonction du type de flux qu’il lirea.

Pour la vidéo, le client doit appeler #createInputSurface pour obtenir une surface sur laquelle il affiche des images vidéo.

Pour l’audio, le client doit configurer correctement la piste audio, par exemple, à l’aide AudioTrack#MODE_STREAMde . Les mémoires tampons audio sont envoyées directement à MediaSync via #queueAudio, et sont retournées au client Callback#onAudioBufferConsumed de manière asynchrone. Le client ne doit pas modifier une mémoire tampon audio tant qu’il n’est pas retourné.

Le client peut éventuellement pré-remplir des mémoires tampons audio/vidéo en définissant le taux de lecture sur 0,0, puis en filant des mémoires tampons audio/vidéo sur les composants correspondants. Cela peut réduire l’exécution initiale possible.

Documentation Java pour android.media.MediaSync.

Les parties de cette page sont des modifications basées sur le travail créé et partagé par le projet Android Open Source et utilisés en fonction des termes décrits dans la licence d’attribution Creative Commons 2.5.

Constructeurs

MediaSync()

Constructeur de classe.

Propriétés

Class

Retourne la classe runtime de ce Object.

(Hérité de Object)
Handle

Handle de l’instance Android sous-jacente.

(Hérité de Object)
JniIdentityHashCode

La classe MediaSync peut être utilisée pour lire de manière synchrone des flux audio et vidéo.

(Hérité de Object)
JniPeerMembers

La classe MediaSync peut être utilisée pour lire de manière synchrone des flux audio et vidéo.

PeerReference

La classe MediaSync peut être utilisée pour lire de manière synchrone des flux audio et vidéo.

(Hérité de Object)
PlaybackParams

Obtient le taux de lecture à l’aide PlaybackParamsde . -ou- Définit le taux de lecture à l’aide PlaybackParamsde .

SyncParams

Obtient le mode de synchronisation A/V. -ou- Définit le mode de synchronisation A/V.

ThresholdClass

Cette API prend en charge l’infrastructure Mono pour Android et n’est pas destinée à être utilisée directement à partir de votre code.

(Hérité de Object)
ThresholdType

Cette API prend en charge l’infrastructure Mono pour Android et n’est pas destinée à être utilisée directement à partir de votre code.

(Hérité de Object)
Timestamp

Obtenir la position de lecture actuelle.

Méthodes

Clone()

Crée et retourne une copie de cet objet.

(Hérité de Object)
CreateInputSurface()

Demande à une Surface d’utiliser comme entrée.

Dispose()

La classe MediaSync peut être utilisée pour lire de manière synchrone des flux audio et vidéo.

(Hérité de Object)
Dispose(Boolean)

La classe MediaSync peut être utilisée pour lire de manière synchrone des flux audio et vidéo.

(Hérité de Object)
Equals(Object)

Indique si un autre objet est « égal à » celui-ci.

(Hérité de Object)
Flush()

Vide toutes les mémoires tampons de l’objet de synchronisation.

GetHashCode()

Retourne une valeur de code de hachage pour l'objet.

(Hérité de Object)
JavaFinalize()

Appelé par le garbage collector sur un objet lorsque le garbage collection détermine qu’il n’y a plus de références à l’objet.

(Hérité de Object)
Notify()

Réveille un thread unique qui attend le moniteur de cet objet.

(Hérité de Object)
NotifyAll()

Réveille tous les threads qui attendent le moniteur de cet objet.

(Hérité de Object)
QueueAudio(ByteBuffer, Int32, Int64)

Met en file d’attente les données audio de manière asynchrone pour la lecture (AudioTrack doit être en mode streaming).

Release()

Assurez-vous que vous appelez cela lorsque vous avez terminé de libérer une instance de composant ouverte au lieu de vous appuyer sur le garbage collector pour le faire à un moment donné dans le futur.

SetAudioTrack(AudioTrack)

Définit la piste audio pour MediaSync.

SetCallback(MediaSync+Callback, Handler)

Définit un rappel asynchrone pour les événements MediaSync actionnables.

SetHandle(IntPtr, JniHandleOwnership)

Définit la propriété Handle.

(Hérité de Object)
SetOnErrorListener(MediaSync+IOnErrorListener, Handler)

Définit un rappel asynchrone pour les événements d’erreur.

SetSurface(Surface)

Définit l’aire de sortie pour MediaSync.

ToArray<T>()

La classe MediaSync peut être utilisée pour lire de manière synchrone des flux audio et vidéo.

(Hérité de Object)
ToString()

Retourne une représentation de chaîne de l'objet.

(Hérité de Object)
UnregisterFromRuntime()

La classe MediaSync peut être utilisée pour lire de manière synchrone des flux audio et vidéo.

(Hérité de Object)
Wait()

Provoque l’attente du thread actuel jusqu’à ce qu’il soit réveillé, généralement en étant <averti par em ou> <em>interrompu</em>.<>

(Hérité de Object)
Wait(Int64, Int32)

Provoque l’attente du thread actuel jusqu’à ce qu’il soit réveillé, généralement en étant <averti< par> em>ou <em>interrompu/em>,< ou jusqu’à ce qu’une certaine quantité de temps réel s’est écoulée.

(Hérité de Object)
Wait(Int64)

Provoque l’attente du thread actuel jusqu’à ce qu’il soit réveillé, généralement en étant <averti< par> em>ou <em>interrompu/em>,< ou jusqu’à ce qu’une certaine quantité de temps réel s’est écoulée.

(Hérité de Object)

Implémentations d’interfaces explicites

IJavaPeerable.Disposed()

La classe MediaSync peut être utilisée pour lire de manière synchrone des flux audio et vidéo.

(Hérité de Object)
IJavaPeerable.DisposeUnlessReferenced()

La classe MediaSync peut être utilisée pour lire de manière synchrone des flux audio et vidéo.

(Hérité de Object)
IJavaPeerable.Finalized()

La classe MediaSync peut être utilisée pour lire de manière synchrone des flux audio et vidéo.

(Hérité de Object)
IJavaPeerable.JniManagedPeerState

La classe MediaSync peut être utilisée pour lire de manière synchrone des flux audio et vidéo.

(Hérité de Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

La classe MediaSync peut être utilisée pour lire de manière synchrone des flux audio et vidéo.

(Hérité de Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

La classe MediaSync peut être utilisée pour lire de manière synchrone des flux audio et vidéo.

(Hérité de Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

La classe MediaSync peut être utilisée pour lire de manière synchrone des flux audio et vidéo.

(Hérité de Object)

Méthodes d’extension

JavaCast<TResult>(IJavaObject)

Effectue une conversion de type vérifiée par le runtime Android.

JavaCast<TResult>(IJavaObject)

La classe MediaSync peut être utilisée pour lire de manière synchrone des flux audio et vidéo.

GetJniTypeName(IJavaPeerable)

La classe MediaSync peut être utilisée pour lire de manière synchrone des flux audio et vidéo.

S’applique à