Language

MediaSync クラス

定義

MediaSync クラスを使用すると、オーディオ ストリームとビデオ ストリームを同期的に再生できます。

[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
継承
属性

注釈

MediaSync クラスを使用すると、オーディオ ストリームとビデオ ストリームを同期的に再生できます。 オーディオのみのストリームまたはビデオのみのストリームの再生にも使用できます。

MediaSync は一般に次のように使用されます。

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

クライアントは、再生するストリームの種類に基づいてSurfaceや AudioTrack を設定して、対応するシンクを構成する必要があります。

ビデオの場合、クライアントは #createInputSurface を呼び出して、ビデオ フレームをレンダリングするサーフェスを取得する必要があります。

オーディオの場合、クライアントは、たとえば、 AudioTrack#MODE_STREAMを使用して、オーディオ トラックを正しく設定する必要があります。 オーディオ バッファーは、 #queueAudio経由で直接 MediaSync に送信され、 Callback#onAudioBufferConsumed 非同期でクライアントに返されます。 クライアントは、返されるまでオーディオ バッファーを変更しないでください。

必要に応じて、再生レートを 0.0 に設定してオーディオ/ビデオ バッファーを事前に埋め、対応するコンポーネントにオーディオ/ビデオ バッファーをフィードできます。 これにより、初期アンダーランの可能性を減らすことができます。

Javaドキュメント。

このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。

コンストラクター

名前 説明
MediaSync()

クラス コンストラクター。

プロパティ

名前 説明
Class

この Objectのランタイム クラスを返します。

(継承元 Object)
Handle

基になる Android インスタンスへのハンドル。

(継承元 Object)
JniIdentityHashCode

相互運用ランタイムによってこのJava ピアに割り当てられた ID ハッシュ コードを取得します。

(継承元 Object)
JniManagedPeerState

MediaSync クラスを使用すると、オーディオ ストリームとビデオ ストリームを同期的に再生できます。

(継承元 JavaObject)
JniPeerMembers

MediaSync クラスを使用すると、オーディオ ストリームとビデオ ストリームを同期的に再生できます。

PeerReference

このJava ピアの JNI オブジェクト参照を取得します。

(継承元 Object)
PlaybackParams

PlaybackParamsを使用して再生速度を取得します。 または、 PlaybackParamsを使用して再生速度を設定します。

SyncParams

A/V 同期モードを取得します。 または、A/V 同期モードを設定します。

ThresholdClass

この API は Android 用 Mono インフラストラクチャをサポートしており、コードから直接使用するためのものではありません。

(継承元 Object)
ThresholdType

この API は Android 用 Mono インフラストラクチャをサポートしており、コードから直接使用するためのものではありません。

(継承元 Object)
Timestamp

現在の再生位置を取得します。

メソッド

名前 説明
Clone()

このオブジェクトのコピーを作成して返します。

(継承元 Object)
Construct(JniObjectReference, JniObjectReferenceOptions)

MediaSync クラスを使用すると、オーディオ ストリームとビデオ ストリームを同期的に再生できます。

(継承元 JavaObject)
CreateInputSurface()

入力として使用するSurfaceを要求します。

Dispose()

このJava ピアによって保持されているリソースを解放します。

(継承元 Object)
Dispose(Boolean)

このJava ピアによって保持されているリソースを解放します。

(継承元 Object)
DisposeUnlessReferenced()

MediaSync クラスを使用すると、オーディオ ストリームとビデオ ストリームを同期的に再生できます。

(継承元 JavaObject)
Equals(Object)

MediaSync クラスを使用すると、オーディオ ストリームとビデオ ストリームを同期的に再生できます。

(継承元 JavaObject)
Equals(Object)

他のオブジェクトがこのオブジェクトと "等しい" かどうかを示します。

(継承元 Object)
Flush()

同期オブジェクトからすべてのバッファーをフラッシュします。

GetHashCode()

オブジェクトのハッシュ コード値を返します。

(継承元 Object)
JavaFinalize()
古い.

オブジェクトへの参照がなくなったとガベージ コレクションによって判断されたときに、オブジェクトのガベージ コレクターによって呼び出されます。

(継承元 Object)
Notify()

このオブジェクトのモニターで待機している 1 つのスレッドを起動します。

(継承元 Object)
NotifyAll()

このオブジェクトのモニターで待機しているすべてのスレッドを起動します。

(継承元 Object)
QueueAudio(ByteBuffer, Int32, Int64)

再生のためにオーディオ データを非同期的にキューに入れます (AudioTrack はストリーミング モードである必要があります)。

Release()

将来のどこかの時点でガベージ コレクターに依存するのではなく、開いているコンポーネント インスタンスを解放したら、これを呼び出してください。

SetAudioTrack(AudioTrack)

MediaSync のオーディオ トラックを設定します。

SetCallback(MediaSync+Callback, Handler)

アクション可能な MediaSync イベントの非同期コールバックを設定します。

SetHandle(IntPtr, JniHandleOwnership)

Handle プロパティを設定します。

(継承元 Object)
SetOnErrorListener(MediaSync+IOnErrorListener, Handler)

エラー イベントの非同期コールバックを設定します。

SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

MediaSync クラスを使用すると、オーディオ ストリームとビデオ ストリームを同期的に再生できます。

(継承元 JavaObject)
SetSurface(Surface)

MediaSync の出力サーフェイスを設定します。

ToArray<T>()

このJava配列ラッパーからマネージド配列を作成します。

(継承元 Object)
ToString()

オブジェクトの文字列形式を返します。

(継承元 Object)
UnregisterFromRuntime()

相互運用ランタイムからこのJava ピアの登録を解除します。

(継承元 Object)
Wait()

現在のスレッドが起動するまで待機します。通常は、 <em>notified</em> または <em>interrupted</em>。

(継承元 Object)
Wait(Int64, Int32)

現在のスレッドは、通常、 <em>notified</em> または <em>interrupted</em>、または一定のリアルタイムが経過するまで、起動されるまで待機します。

(継承元 Object)
Wait(Int64)

現在のスレッドは、通常、 <em>notified</em> または <em>interrupted</em>、または一定のリアルタイムが経過するまで、起動されるまで待機します。

(継承元 Object)

明示的なインターフェイスの実装

名前 説明
IJavaPeerable.Disposed()

MediaSync クラスを使用すると、オーディオ ストリームとビデオ ストリームを同期的に再生できます。

(継承元 JavaObject)
IJavaPeerable.Finalized()

MediaSync クラスを使用すると、オーディオ ストリームとビデオ ストリームを同期的に再生できます。

(継承元 JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

MediaSync クラスを使用すると、オーディオ ストリームとビデオ ストリームを同期的に再生できます。

(継承元 JavaObject)
IJavaPeerable.SetJniIdentityHashCode(Int32)

MediaSync クラスを使用すると、オーディオ ストリームとビデオ ストリームを同期的に再生できます。

(継承元 JavaObject)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

MediaSync クラスを使用すると、オーディオ ストリームとビデオ ストリームを同期的に再生できます。

(継承元 JavaObject)
IJavaPeerable.SetPeerReference(JniObjectReference)

MediaSync クラスを使用すると、オーディオ ストリームとビデオ ストリームを同期的に再生できます。

(継承元 JavaObject)

拡張メソッド

名前 説明
GetJniTypeName(IJavaPeerable)

インスタンス selfの型の JNI 名を取得します。

JavaAs<TResult>(IJavaPeerable)

selfを強制的にTResult入力し、強制型がJava側で有効であることを確認します。

JavaCast<TResult>(IJavaObject)

Android ランタイムチェック型変換を実行します。

JavaCast<TResult>(IJavaObject)

MediaSync クラスを使用すると、オーディオ ストリームとビデオ ストリームを同期的に再生できます。

TryJavaCast<TResult>(IJavaPeerable, TResult)

selfを強制的にTResult入力し、強制型がJava側で有効であることを確認します。

適用対象