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を使用して、オーディオ トラックを正しく設定する必要があります。 オーディオ バッファーは、 #queueAudio経由で直接 MediaSync に送信され、 Callback#onAudioBufferConsumed 非同期でクライアントに返されます。 クライアントは、返されるまでオーディオ バッファーを変更しないでください。
必要に応じて、再生レートを 0.0 に設定してオーディオ/ビデオ バッファーを事前に埋め、対応するコンポーネントにオーディオ/ビデオ バッファーをフィードできます。 これにより、初期アンダーランの可能性を減らすことができます。
このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。
コンストラクター
| 名前 | 説明 |
|---|---|
| MediaSync() |
クラス コンストラクター。 |
プロパティ
| 名前 | 説明 |
|---|---|
| Class |
この |
| Handle |
基になる Android インスタンスへのハンドル。 (継承元 Object) |
| JniIdentityHashCode |
相互運用ランタイムによってこのJava ピアに割り当てられた ID ハッシュ コードを取得します。 (継承元 Object) |
| JniManagedPeerState |
MediaSync クラスを使用すると、オーディオ ストリームとビデオ ストリームを同期的に再生できます。 (継承元 JavaObject) |
| JniPeerMembers |
MediaSync クラスを使用すると、オーディオ ストリームとビデオ ストリームを同期的に再生できます。 |
| PeerReference |
このJava ピアの JNI オブジェクト参照を取得します。 (継承元 Object) |
| 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) |
インスタンス |
| JavaAs<TResult>(IJavaPeerable) |
|
| JavaCast<TResult>(IJavaObject) |
Android ランタイムチェック型変換を実行します。 |
| JavaCast<TResult>(IJavaObject) |
MediaSync クラスを使用すると、オーディオ ストリームとビデオ ストリームを同期的に再生できます。 |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
|