MediaSync Klasse

Definition

Die MediaSync-Klasse kann verwendet werden, um Audio- und Videodatenströme synchron wiederzugeben.

[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
Vererbung
MediaSync
Attribute

Hinweise

Die MediaSync-Klasse kann verwendet werden, um Audio- und Videodatenströme synchron wiederzugeben. Es kann auch verwendet werden, um den reinen Audio- oder Videostream abzuspielen.

MediaSync wird im Allgemeinen wie folgt verwendet:

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

Der Client muss die entsprechende Senke konfigurieren, indem das Surface und/oder AudioTrack basierend auf dem stream-Typ festgelegt wird, der wiedergegeben wird.

Für Videos muss der Client aufrufen #createInputSurface , um eine Oberfläche zu erhalten, auf der Videoframes gerendert werden.

Für Audio muss der Client die Audiospur ordnungsgemäß einrichten, z. B. mithilfe von AudioTrack#MODE_STREAM. Die Audiopuffer werden direkt über #queueAudiomediaSync gesendet und asynchron Callback#onAudioBufferConsumed an den Client zurückgegeben. Der Client sollte keinen Audiopuffer ändern, bis er zurückgegeben wird.

Der Client kann optional Audio-/Videopuffer vorab ausfüllen, indem er die Wiedergaberate auf 0,0 festlegt und dann Audio-/Videopuffer an die entsprechenden Komponenten weitergibt. Dadurch kann eine mögliche anfängliche Unterausführung verringert werden.

Java-Dokumentation für android.media.MediaSync.

Teile dieser Seite sind Änderungen, die auf Arbeiten basieren, die vom Android Open Source Project erstellt und freigegeben wurden und gemäß den In der Attribution License beschriebenen Begriffen verwendet werden.

Konstruktoren

MediaSync()

Klassenkonstruktor.

Eigenschaften

Class

Gibt die Laufzeitklasse dieses Objectzurück.

(Geerbt von Object)
Handle

Das Handle zum zugrunde liegenden Android-instance.

(Geerbt von Object)
JniIdentityHashCode

Die MediaSync-Klasse kann verwendet werden, um Audio- und Videodatenströme synchron wiederzugeben.

(Geerbt von Object)
JniPeerMembers

Die MediaSync-Klasse kann verwendet werden, um Audio- und Videodatenströme synchron wiederzugeben.

PeerReference

Die MediaSync-Klasse kann verwendet werden, um Audio- und Videodatenströme synchron wiederzugeben.

(Geerbt von Object)
PlaybackParams

Ruft die Wiedergaberate mit PlaybackParamsab. - oder: Legt die Wiedergaberate mithilfe von PlaybackParamsfest.

SyncParams

Ruft den A/V-Synchronisierungsmodus ab. - oder: Legt den A/V-Synchronisierungsmodus fest.

ThresholdClass

Diese API unterstützt die Mono für Android-Infrastruktur und ist nicht für die direkte Verwendung aus Ihrem Code vorgesehen.

(Geerbt von Object)
ThresholdType

Diese API unterstützt die Mono für Android-Infrastruktur und ist nicht für die direkte Verwendung aus Ihrem Code vorgesehen.

(Geerbt von Object)
Timestamp

Abrufen der aktuellen Wiedergabeposition.

Methoden

Clone()

Erstellt und gibt eine Kopie dieses Objekts zurück.

(Geerbt von Object)
CreateInputSurface()

Fordert ein Surface an, das als Eingabe verwendet werden soll.

Dispose()

Die MediaSync-Klasse kann verwendet werden, um Audio- und Videodatenströme synchron wiederzugeben.

(Geerbt von Object)
Dispose(Boolean)

Die MediaSync-Klasse kann verwendet werden, um Audio- und Videodatenströme synchron wiederzugeben.

(Geerbt von Object)
Equals(Object)

Gibt an, ob ein anderes Objekt diesem "gleich" ist.

(Geerbt von Object)
Flush()

Leert alle Puffer aus dem Synchronisierungsobjekt.

GetHashCode()

Gibt einen Hashcodewert für das Objekt zurück.

(Geerbt von Object)
JavaFinalize()

Wird vom Garbage Collector für ein Objekt aufgerufen, wenn die Garbage Collection feststellt, dass keine Verweise mehr auf das Objekt vorhanden sind.

(Geerbt von Object)
Notify()

Aktiviert einen einzelnen Thread, der auf dem Monitor dieses Objekts wartet.

(Geerbt von Object)
NotifyAll()

Aktiviert alle Threads, die auf dem Monitor dieses Objekts warten.

(Geerbt von Object)
QueueAudio(ByteBuffer, Int32, Int64)

Stellt die Audiodaten asynchron für die Wiedergabe in die Warteschlange (AudioTrack muss sich im Streamingmodus befinden).

Release()

Stellen Sie sicher, dass Sie dies aufrufen, wenn Sie fertig sind, um alle geöffneten Komponenten instance freizugeben, anstatt sich auf den Garbage Collector zu verlassen, um dies zu einem bestimmten Zeitpunkt in der Zukunft für Sie zu tun.

SetAudioTrack(AudioTrack)

Legt die Audiospur für MediaSync fest.

SetCallback(MediaSync+Callback, Handler)

Legt einen asynchronen Rückruf für verwertbare MediaSync-Ereignisse fest.

SetHandle(IntPtr, JniHandleOwnership)

Legt die Handle-Eigenschaft fest.

(Geerbt von Object)
SetOnErrorListener(MediaSync+IOnErrorListener, Handler)

Legt einen asynchronen Rückruf für Fehlerereignisse fest.

SetSurface(Surface)

Legt die Ausgabeoberfläche für MediaSync fest.

ToArray<T>()

Die MediaSync-Klasse kann verwendet werden, um Audio- und Videodatenströme synchron wiederzugeben.

(Geerbt von Object)
ToString()

Gibt eine Zeichenfolgendarstellung des Objekts zurück.

(Geerbt von Object)
UnregisterFromRuntime()

Die MediaSync-Klasse kann verwendet werden, um Audio- und Videodatenströme synchron wiederzugeben.

(Geerbt von Object)
Wait()

Bewirkt, dass der aktuelle Thread wartet, bis er aktiviert wird, in der Regel durch em benachrichtigen/em> oder <em>interrupted</em>.<><

(Geerbt von Object)
Wait(Int64)

Bewirkt, dass der aktuelle Thread wartet, bis er aktiviert wird, in der Regel, indem <er>benachrichtigt</em> oder <em>interrupted</em> oder bis eine bestimmte Menge an Echtzeit verstrichen ist.

(Geerbt von Object)
Wait(Int64, Int32)

Bewirkt, dass der aktuelle Thread wartet, bis er aktiviert wird, in der Regel, indem <er>benachrichtigt</em> oder <em>interrupted</em> oder bis eine bestimmte Menge an Echtzeit verstrichen ist.

(Geerbt von Object)

Explizite Schnittstellenimplementierungen

IJavaPeerable.Disposed()

Die MediaSync-Klasse kann verwendet werden, um Audio- und Videodatenströme synchron wiederzugeben.

(Geerbt von Object)
IJavaPeerable.DisposeUnlessReferenced()

Die MediaSync-Klasse kann verwendet werden, um Audio- und Videodatenströme synchron wiederzugeben.

(Geerbt von Object)
IJavaPeerable.Finalized()

Die MediaSync-Klasse kann verwendet werden, um Audio- und Videodatenströme synchron wiederzugeben.

(Geerbt von Object)
IJavaPeerable.JniManagedPeerState

Die MediaSync-Klasse kann verwendet werden, um Audio- und Videodatenströme synchron wiederzugeben.

(Geerbt von Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Die MediaSync-Klasse kann verwendet werden, um Audio- und Videodatenströme synchron wiederzugeben.

(Geerbt von Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

Die MediaSync-Klasse kann verwendet werden, um Audio- und Videodatenströme synchron wiederzugeben.

(Geerbt von Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

Die MediaSync-Klasse kann verwendet werden, um Audio- und Videodatenströme synchron wiederzugeben.

(Geerbt von Object)

Erweiterungsmethoden

JavaCast<TResult>(IJavaObject)

Führt eine Für Android-Runtime überprüfte Typkonvertierung aus.

JavaCast<TResult>(IJavaObject)

Die MediaSync-Klasse kann verwendet werden, um Audio- und Videodatenströme synchron wiederzugeben.

GetJniTypeName(IJavaPeerable)

Die MediaSync-Klasse kann verwendet werden, um Audio- und Videodatenströme synchron wiederzugeben.

Gilt für: