MediaSync クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
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
オーディオ バッファーは MediaSync に直接送信 #queueAudio
され、非同期でクライアント Callback#onAudioBufferConsumed
に返されます。 クライアントは、返されるまでオーディオ バッファーを変更しないでください。
必要に応じて、再生レートを 0.0 に設定してオーディオ/ビデオ バッファーを事前に埋め、対応するコンポーネントにオーディオ/ビデオ バッファーをフィードできます。 これにより、初期アンダーランの可能性を減らすことができます。
の Java ドキュメントandroid.media.MediaSync
このページの一部は、Android オープンソース プロジェクトによって作成および共有され、クリエイティブ コモンズ 2.5 属性ライセンスに記載されている条件に従って使用される作業に基づく変更です。
コンストラクター
MediaSync() |
クラス コンストラクター。 |
プロパティ
Class |
この |
Handle |
基になる Android インスタンスへのハンドル。 (継承元 Object) |
JniIdentityHashCode |
MediaSync クラスを使用すると、オーディオ ストリームとビデオ ストリームを同期的に再生できます。 (継承元 Object) |
JniPeerMembers |
MediaSync クラスを使用すると、オーディオ ストリームとビデオ ストリームを同期的に再生できます。 |
PeerReference |
MediaSync クラスを使用すると、オーディオ ストリームとビデオ ストリームを同期的に再生できます。 (継承元 Object) |
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 クラスを使用すると、オーディオ ストリームとビデオ ストリームを同期的に再生できます。 |