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 は一般に次のように使用されます。

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。 オーディオ バッファーは を介して #queueAudioMediaSync に直接送信され、非同期的にクライアント Callback#onAudioBufferConsumed に返されます。 クライアントは、返されるまでオーディオ バッファーを変更しないでください。

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

android.media.MediaSyncJava ドキュメント。

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

コンストラクター

MediaSync()

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

プロパティ

Class

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

(継承元 Object)
Handle

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

(継承元 Object)
JniIdentityHashCode

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

(継承元 Object)
JniPeerMembers

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

PeerReference

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

(継承元 Object)
PlaybackParams

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

SyncParams

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

ThresholdClass

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

(継承元 Object)
ThresholdType

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

(継承元 Object)
Timestamp

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

メソッド

Clone()

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

(継承元 Object)
CreateInputSurface()

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

Dispose()

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

(継承元 Object)
Dispose(Boolean)

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

(継承元 Object)
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)

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

SetSurface(Surface)

MediaSync の出力画面を設定します。

ToArray<T>()

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

(継承元 Object)
ToString()

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

(継承元 Object)
UnregisterFromRuntime()

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

(継承元 Object)
Wait()

現在のスレッドが起動するまで待機します。通常<は、通知</em> または>< em 中断</em によって待機します>。>

(継承元 Object)
Wait(Int64)

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

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

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

(継承元 Object)

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

IJavaPeerable.Disposed()

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

(継承元 Object)
IJavaPeerable.DisposeUnlessReferenced()

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

(継承元 Object)
IJavaPeerable.Finalized()

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

(継承元 Object)
IJavaPeerable.JniManagedPeerState

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

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

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

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

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

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

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

(継承元 Object)

拡張メソッド

JavaCast<TResult>(IJavaObject)

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

JavaCast<TResult>(IJavaObject)

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

GetJniTypeName(IJavaPeerable)

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

適用対象