Lingua

MediaSync Classe

Definizione

La classe MediaSync può essere usata per riprodurre in modo sincrono flussi audio e video.

[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
Ereditarietà
Attributi

Commenti

La classe MediaSync può essere usata per riprodurre in modo sincrono flussi audio e video. Può essere usato anche per riprodurre lo streaming solo audio o solo video.

MediaSync viene in genere usato come segue:

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

Il client deve configurare il sink corrispondente impostando il Surface e/o AudioTrack in base al tipo di flusso che verrà riprodotto.

Per il video, il client deve chiamare #createInputSurface per ottenere una superficie in cui eseguirà il rendering dei fotogrammi video.

Per l'audio, il client deve configurare correttamente la traccia audio, ad esempio usando AudioTrack#MODE_STREAM. I buffer audio vengono inviati direttamente a MediaSync tramite #queueAudioe vengono restituiti al client in Callback#onAudioBufferConsumed modo asincrono. Il client non deve modificare un buffer audio fino a quando non viene restituito.

Il client può facoltativamente pre-riempire buffer audio/video impostando la frequenza di riproduzione su 0,0 e quindi inserire buffer audio/video ai componenti corrispondenti. Ciò può ridurre le possibili sottoesegui iniziali.

per android.media.MediaSync.

Le parti di questa pagina sono modifiche basate sul lavoro creato e condiviso dalla e usati in base ai termini descritti in Creative License 2.5 Attribution License.

Costruttori

Nome Descrizione
MediaSync()

Costruttore di classe.

Proprietà

Nome Descrizione
Class

Restituisce la classe di runtime di questo Objectoggetto .

(Ereditato da Object)
Handle

Handle per l'istanza di Android sottostante.

(Ereditato da Object)
JniIdentityHashCode

Ottiene il codice hash di identità assegnato a questo Java peer dal runtime di interoperabilità.

(Ereditato da Object)
JniManagedPeerState

La classe MediaSync può essere usata per riprodurre in modo sincrono flussi audio e video.

(Ereditato da JavaObject)
JniPeerMembers

La classe MediaSync può essere usata per riprodurre in modo sincrono flussi audio e video.

PeerReference

Ottiene il riferimento all'oggetto JNI per questo peer Java.

(Ereditato da Object)
PlaybackParams

Ottiene la frequenza di riproduzione utilizzando PlaybackParams. -oppure- Imposta la frequenza di riproduzione usando PlaybackParams.

SyncParams

Ottiene la modalità di sincronizzazione A/V. -oppure- Imposta la modalità di sincronizzazione A/V.

ThresholdClass

Questa API supporta l'infrastruttura Mono per Android e non deve essere usata direttamente dal codice.

(Ereditato da Object)
ThresholdType

Questa API supporta l'infrastruttura Mono per Android e non deve essere usata direttamente dal codice.

(Ereditato da Object)
Timestamp

Ottiene la posizione di riproduzione corrente.

Metodi

Nome Descrizione
Clone()

Crea e restituisce una copia di questo oggetto.

(Ereditato da Object)
Construct(JniObjectReference, JniObjectReferenceOptions)

La classe MediaSync può essere usata per riprodurre in modo sincrono flussi audio e video.

(Ereditato da JavaObject)
CreateInputSurface()

Richiede un Surface da usare come input.

Dispose()

Rilascia le risorse contenute in questo peer Java.

(Ereditato da Object)
Dispose(Boolean)

Rilascia le risorse contenute in questo peer Java.

(Ereditato da Object)
DisposeUnlessReferenced()

La classe MediaSync può essere usata per riprodurre in modo sincrono flussi audio e video.

(Ereditato da JavaObject)
Equals(Object)

La classe MediaSync può essere usata per riprodurre in modo sincrono flussi audio e video.

(Ereditato da JavaObject)
Equals(Object)

Indica se un altro oggetto è "uguale a" questo.

(Ereditato da Object)
Flush()

Scarica tutti i buffer dall'oggetto di sincronizzazione.

GetHashCode()

Restituisce un valore di codice hash per l'oggetto .

(Ereditato da Object)
JavaFinalize()

Chiamato dal Garbage Collector su un oggetto quando Garbage Collection determina che non sono presenti altri riferimenti all'oggetto .

(Ereditato da Object)
Notify()

Riattiva un singolo thread in attesa del monitor dell'oggetto.

(Ereditato da Object)
NotifyAll()

Riattiva tutti i thread in attesa del monitor dell'oggetto.

(Ereditato da Object)
QueueAudio(ByteBuffer, Int32, Int64)

Accoda i dati audio in modo asincrono per la riproduzione (AudioTrack deve essere in modalità di streaming).

Release()

Assicurarsi di chiamare questa operazione al termine per liberare qualsiasi istanza del componente aperta invece di basarsi sul Garbage Collector per eseguire questa operazione a un certo punto in futuro.

SetAudioTrack(AudioTrack)

Imposta la traccia audio per MediaSync.

SetCallback(MediaSync+Callback, Handler)

Imposta un callback asincrono per gli eventi MediaSync interattivi.

SetHandle(IntPtr, JniHandleOwnership)

Imposta la proprietà Handle.

(Ereditato da Object)
SetOnErrorListener(MediaSync+IOnErrorListener, Handler)

Imposta un callback asincrono per gli eventi di errore.

SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

La classe MediaSync può essere usata per riprodurre in modo sincrono flussi audio e video.

(Ereditato da JavaObject)
SetSurface(Surface)

Imposta la superficie di output per MediaSync.

ToArray<T>()

Crea una matrice gestita da questo wrapper di matrice Java.

(Ereditato da Object)
ToString()

Restituisce una rappresentazione di stringa dell'oggetto .

(Ereditato da Object)
UnregisterFromRuntime()

Annulla la registrazione di questo Java peer dal runtime di interoperabilità.

(Ereditato da Object)
Wait()

Fa sì che il thread corrente attenda finché non viene risvegliato, in genere ricevendo <>una notifica</em> o <em>interrotto</em>.

(Ereditato da Object)
Wait(Int64, Int32)

Fa sì che il thread corrente attenda finché non viene risvegliato, in genere ricevendo<> una notifica</em> o <em>interrotto</em> o fino a quando non è trascorsa una determinata quantità di tempo reale.

(Ereditato da Object)
Wait(Int64)

Fa sì che il thread corrente attenda finché non viene risvegliato, in genere ricevendo<> una notifica</em> o <em>interrotto</em> o fino a quando non è trascorsa una determinata quantità di tempo reale.

(Ereditato da Object)

Implementazioni dell'interfaccia esplicita

Nome Descrizione
IJavaPeerable.Disposed()

La classe MediaSync può essere usata per riprodurre in modo sincrono flussi audio e video.

(Ereditato da JavaObject)
IJavaPeerable.Finalized()

La classe MediaSync può essere usata per riprodurre in modo sincrono flussi audio e video.

(Ereditato da JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

La classe MediaSync può essere usata per riprodurre in modo sincrono flussi audio e video.

(Ereditato da JavaObject)
IJavaPeerable.SetJniIdentityHashCode(Int32)

La classe MediaSync può essere usata per riprodurre in modo sincrono flussi audio e video.

(Ereditato da JavaObject)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

La classe MediaSync può essere usata per riprodurre in modo sincrono flussi audio e video.

(Ereditato da JavaObject)
IJavaPeerable.SetPeerReference(JniObjectReference)

La classe MediaSync può essere usata per riprodurre in modo sincrono flussi audio e video.

(Ereditato da JavaObject)

Metodi di estensione

Nome Descrizione
GetJniTypeName(IJavaPeerable)

Ottiene il nome JNI del tipo dell'istanza selfdi .

JavaAs<TResult>(IJavaPeerable)

Provare a digitare selfTResult, verificando che la coercizione sia valida sul lato Java.

JavaCast<TResult>(IJavaObject)

Esegue una conversione del tipo di tipo controllato dal runtime Android.

JavaCast<TResult>(IJavaObject)

La classe MediaSync può essere usata per riprodurre in modo sincrono flussi audio e video.

TryJavaCast<TResult>(IJavaPeerable, TResult)

Provare a digitare selfTResult, verificando che la coercizione sia valida sul lato Java.

Si applica a