Language

MediaParser クラス

定義

メディア コンテナーの形式を解析し、含まれているメディア のサンプルとメタデータを抽出します。

[Android.Runtime.Register("android/media/MediaParser", ApiSince=30, DoNotGenerateAcw=true)]
public sealed class MediaParser : Java.Lang.Object
[<Android.Runtime.Register("android/media/MediaParser", ApiSince=30, DoNotGenerateAcw=true)>]
type MediaParser = class
    inherit Object
継承
MediaParser
属性

注釈

メディア コンテナーの形式を解析し、含まれているメディア のサンプルとメタデータを抽出します。

このクラスは、低レベルのメディア コンテナー パーサーのバッテリへのアクセスを提供します。 このクラスの各インスタンスは、特定のメディア コンテナー形式からの抽出に適した特定のメディア パーサーの実装に関連付けられています。 メディア パーサーの実装の割り当ては、インスタンスの作成に使用されるファクトリ メソッド ( #create と #createByNameを参照) によって異なります。

このクラスを使用するには、ユーザーが次のコードを実装する必要があります。

<ul><li>InputReader: 解析するメディア コンテナーのバイトを提供します。 <li>OutputConsumer: 抽出されたすべてのデータとメタデータのシンクを提供します。 </ul>

次のコード スニペットには、使用例が含まれています。

MyOutputConsumer myOutputConsumer = new MyOutputConsumer();
            MyInputReader myInputReader = new MyInputReader("www.example.com");
            MediaParser mediaParser = MediaParser.create(myOutputConsumer);

            while (mediaParser.advance(myInputReader)) {}

            mediaParser.release();
            mediaParser = null;

次のコード スニペットは、すべてのビデオ サンプルを抽出して公開する基本的な OutputConsumer サンプル実装を示しています。

class VideoOutputConsumer implements MediaParser.OutputConsumer {

                private byte[] sampleDataBuffer = new byte[4096];
                private byte[] discardedDataBuffer = new byte[4096];
                private int videoTrackIndex = -1;
                private int bytesWrittenCount = 0;

                &#64;Override
                public void onSeekMapFound(int i, &#64;NonNull MediaFormat mediaFormat) {
                  // Do nothing.
                }

                &#64;Override
                public void onTrackDataFound(int i, &#64;NonNull TrackData trackData) {
                  MediaFormat mediaFormat = trackData.mediaFormat;
                  if (videoTrackIndex == -1 &amp;&amp;
                      mediaFormat
                          .getString(MediaFormat.KEY_MIME, &#47;* defaultValue= *&#47; "")
                          .startsWith("video/")) {
                    videoTrackIndex = i;
                  }
                }

                &#64;Override
                public void onSampleDataFound(int trackIndex, &#64;NonNull InputReader inputReader)
                    throws IOException {
                  int numberOfBytesToRead = (int) inputReader.getLength();
                  if (videoTrackIndex != trackIndex) {
                    // Discard contents.
                    inputReader.read(
                        discardedDataBuffer,
                        &#47;* offset= *&#47; 0,
                        Math.min(discardDataBuffer.length, numberOfBytesToRead));
                  } else {
                    ensureSpaceInBuffer(numberOfBytesToRead);
                    int bytesRead = inputReader.read(
                        sampleDataBuffer, bytesWrittenCount, numberOfBytesToRead);
                    bytesWrittenCount += bytesRead;
                  }
                }

                &#64;Override
                public void onSampleCompleted(
                    int trackIndex,
                    long timeMicros,
                    int flags,
                    int size,
                    int offset,
                    &#64;Nullable CryptoInfo cryptoData) {
                  if (videoTrackIndex != trackIndex) {
                    return; // It's not the video track. Ignore.
                  }
                  byte[] sampleData = new byte[size];
                  int sampleStartOffset = bytesWrittenCount - size - offset;
                  System.arraycopy(
                      sampleDataBuffer,
                      sampleStartOffset,
                      sampleData,
                      &#47;* destPos= *&#47; 0,
                      size);
                  // Place trailing bytes at the start of the buffer.
                  System.arraycopy(
                      sampleDataBuffer,
                      bytesWrittenCount - offset,
                      sampleDataBuffer,
                      &#47;* destPos= *&#47; 0,
                      &#47;* size= *&#47; offset);
                  bytesWrittenCount = bytesWrittenCount - offset;
                  publishSample(sampleData, timeMicros, flags);
                }

               private void ensureSpaceInBuffer(int numberOfBytesToRead) {
                 int requiredLength = bytesWrittenCount + numberOfBytesToRead;
                 if (requiredLength &gt; sampleDataBuffer.length) {
                   sampleDataBuffer = Arrays.copyOf(sampleDataBuffer, requiredLength);
                 }
               }

              }

Javaドキュメント。

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

フィールド

名前 説明
ParameterAdtsEnableCbrSeeking

ADTS 解析で一定のビットレート シークを有効にするかどうかを設定します。

ParameterAmrEnableCbrSeeking

AMR に対して一定のビットレート シークを有効にするかどうかを設定します。

ParameterFlacDisableId3

ID3 トラックをFLAC に対して無効にするかどうかを設定します。

ParameterMatroskaDisableCuesSeeking

Matroska 解析でキュー要素へのシークを回避するかどうかを設定します。

ParameterMp3DisableId3

MP3 の ID3 トラックを無効にするかどうかを設定します。

ParameterMp3EnableCbrSeeking

MP3 に対して一定のビットレート シークを有効にするかどうかを設定します。

ParameterMp3EnableIndexSeeking

MP3 解析で時間からバイトへのマッピングを生成するかどうかを設定します。

ParameterMp4IgnoreEditLists

MP4 解析で編集リストを無視するかどうかを設定します。

ParameterMp4IgnoreTfdtBox

MP4 解析で tfdt ボックスを無視するかどうかを設定します。

ParameterMp4TreatVideoFramesAsKeyframes

MP4 解析ですべてのビデオ フレームをキー フレームとして扱うかどうかを設定します。

ParameterTsAllowNonIdrAvcKeyframes

非 IDR I スライスで構成されるサンプルを TS が同期サンプル (キー フレーム) として扱うかどうかを設定します。

ParameterTsDetectAccessUnits

TS 解析で、スライス ヘッダーに基づいて AVC ストリームをアクセス ユニットに分割するかどうかを設定します。

ParameterTsEnableHdmvDtsAudioStreams

TS 解析で HDMV DTS オーディオ ストリームを処理するかどうかを設定します。

ParameterTsIgnoreAacStream

TS 解析で AAC 基本ストリームを無視するかどうかを設定します。

ParameterTsIgnoreAvcStream

TS 解析で AVC 基本ストリームを無視するかどうかを設定します。

ParameterTsIgnoreSpliceInfoStream

TS 解析でスプライス情報ストリームを無視するかどうかを設定します。

ParameterTsMode

TS 解析の操作モードを設定します。

ParserNameAc3

デジタル オーディオ圧縮標準 (AC-3) で定義されている AC-3 コンテナー形式のパーサー。

ParserNameAc4

Dolby AC-4 によって定義されている AC-4 コンテナー形式のパーサー: 次世代エンターテイメント サービスのオーディオ配信。

ParserNameAdts

ISO/IEC 13818-7 で定義されている ADTS コンテナー形式のパーサー。

ParserNameAmr

RFC 4867 で定義されている AMR コンテナー形式のパーサー。

ParserNameFlac

仕様で定義されている、LACF コンテナー形式のパーサー。

ParserNameFlv

ADOBE Flash Video File Format Specification で定義されている、FLV コンテナー形式のパーサー。

ParserNameFmp4

ISO/IEC 14496-12 で定義されている MP4 コンテナー形式を使用するフラグメント 化されたファイルのパーサー。

ParserNameMatroska

仕様で定義されている Matroska コンテナー形式のパーサー。

ParserNameMp3

ISO/IEC 11172-3 で定義されている MP3 コンテナー形式のパーサー。

ParserNameMp4

ISO/IEC 14496-12 で定義されている MP4 コンテナー形式を使用する非フラグメント ファイルのパーサー。

ParserNameOgg

RFC 3533 で定義されている OGG コンテナー形式のパーサー。

ParserNamePs

ISO/IEC 11172-1 で定義されている PS コンテナー形式のパーサー。

ParserNameTs

ISO/IEC 13818-1 で定義されている TS コンテナー形式のパーサー。

ParserNameUnknown

パーサーがまだ選択されていない場合に #getParserName() によって返されるパーサー名。

ParserNameWav

マルチメディア プログラミング インターフェイスとデータ仕様で定義されている WAV コンテナー形式のパーサー。

SampleFlagDecodeOnly
古い.

サンプルをデコードする必要がありますが、レンダリングしないことを示します。

SampleFlagEncrypted
古い.

サンプルが (少なくとも部分的に) 暗号化されていることを示します。

SampleFlagHasSupplementalData
古い.

サンプルに補足データがあることを示します。

SampleFlagKeyFrame
古い.

サンプルが同期サンプルを保持していることを示します。

SampleFlagLastSample
古い.

サンプルにストリームの最後のメディア サンプルが含まれていることがわかっていることを示します。

プロパティ

名前 説明
Class

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

(継承元 Object)
Handle

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

(継承元 Object)
JniIdentityHashCode

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

(継承元 Object)
JniManagedPeerState

メディア コンテナーの形式を解析し、含まれているメディア のサンプルとメタデータを抽出します。

(継承元 JavaObject)
JniPeerMembers

メディア コンテナーの形式を解析し、含まれているメディア のサンプルとメタデータを抽出します。

LogSessionId

メディア コンテナーの形式を解析し、含まれているメディア のサンプルとメタデータを抽出します。

ParserName

バッキング パーサー実装の名前を返します。

PeerReference

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

(継承元 Object)
ThresholdClass

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

(継承元 Object)
ThresholdType

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

(継承元 Object)

メソッド

名前 説明
Advance(MediaParser+ISeekableInputReader)

入力の末尾に達していない限り、入力メディア ストリームの抽出が進行します。

Clone()

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

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

メディア コンテナーの形式を解析し、含まれているメディア のサンプルとメタデータを抽出します。

(継承元 JavaObject)
Create(MediaParser+IOutputConsumer, String[])

最初の #advance 呼び出し中にコンテンツをスニッフィングしてバッキング パーサーを選択するインスタンスを作成します。

CreateByName(String, MediaParser+IOutputConsumer)

指定された nameを使用して、パーサーによってサポートされるインスタンスを作成します。

Dispose()

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

(継承元 Object)
Dispose(Boolean)

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

(継承元 Object)
DisposeUnlessReferenced()

メディア コンテナーの形式を解析し、含まれているメディア のサンプルとメタデータを抽出します。

(継承元 JavaObject)
Equals(Object)

メディア コンテナーの形式を解析し、含まれているメディア のサンプルとメタデータを抽出します。

(継承元 JavaObject)
Equals(Object)

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

(継承元 Object)
GetHashCode()

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

(継承元 Object)
GetParserNames(MediaFormat)

指定された MediaFormatを持つコンテナー形式に適したパーサーの名前を持つ変更できないリストを返します。

JavaFinalize()
古い.

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

(継承元 Object)
Notify()

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

(継承元 Object)
NotifyAll()

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

(継承元 Object)
Release()

取得したリソースを解放します。

Seek(MediaParser+SeekPoint)

抽出されるメディア コンテナー内でシークします。

SetHandle(IntPtr, JniHandleOwnership)

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

(継承元 Object)
SetParameter(String, Object)

動作のカスタマイズを可能にするパーサー固有のパラメーターを設定します。

SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

メディア コンテナーの形式を解析し、含まれているメディア のサンプルとメタデータを抽出します。

(継承元 JavaObject)
SupportsParameter(String)

指定した parameterName がこのパーサーでサポートされているかどうかを返します。

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()

メディア コンテナーの形式を解析し、含まれているメディア のサンプルとメタデータを抽出します。

(継承元 JavaObject)
IJavaPeerable.Finalized()

メディア コンテナーの形式を解析し、含まれているメディア のサンプルとメタデータを抽出します。

(継承元 JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

メディア コンテナーの形式を解析し、含まれているメディア のサンプルとメタデータを抽出します。

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

メディア コンテナーの形式を解析し、含まれているメディア のサンプルとメタデータを抽出します。

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

メディア コンテナーの形式を解析し、含まれているメディア のサンプルとメタデータを抽出します。

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

メディア コンテナーの形式を解析し、含まれているメディア のサンプルとメタデータを抽出します。

(継承元 JavaObject)

拡張メソッド

名前 説明
GetJniTypeName(IJavaPeerable)

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

JavaAs<TResult>(IJavaPeerable)

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

JavaCast<TResult>(IJavaObject)

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

JavaCast<TResult>(IJavaObject)

メディア コンテナーの形式を解析し、含まれているメディア のサンプルとメタデータを抽出します。

TryJavaCast<TResult>(IJavaPeerable, TResult)

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

適用対象