次の方法で共有


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

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

の Java ドキュメントandroid.media.MediaSync

このページの一部は、Android オープンソース プロジェクトによって作成および共有され、クリエイティブ コモンズ 2.5 属性ライセンスに記載されている条件に従って使用される作業に基づく変更です。

コンストラクター

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

(継承元 Object)
ThresholdType

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

(継承元 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 クラスを使用すると、オーディオ ストリームとビデオ ストリームを同期的に再生できます。

適用対象