MediaParser クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
メディア コンテナーの形式を解析し、含まれているメディア のサンプルとメタデータを抽出します。
[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
- 継承
- 属性
注釈
メディア コンテナーの形式を解析し、含まれているメディア のサンプルとメタデータを抽出します。
このクラスは、低レベルのメディア コンテナー パーサーのバッテリへのアクセスを提供します。 このクラスの各インスタンスは、特定のメディア コンテナー形式からの抽出に適した特定のメディア パーサーの実装に関連付けられています。 メディア パーサーの実装の割り当ては、インスタンスの作成に使用されるファクトリ メソッド ( #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;
@Override
public void onSeekMapFound(int i, @NonNull MediaFormat mediaFormat) {
// Do nothing.
}
@Override
public void onTrackDataFound(int i, @NonNull TrackData trackData) {
MediaFormat mediaFormat = trackData.mediaFormat;
if (videoTrackIndex == -1 &&
mediaFormat
.getString(MediaFormat.KEY_MIME, /* defaultValue= */ "")
.startsWith("video/")) {
videoTrackIndex = i;
}
}
@Override
public void onSampleDataFound(int trackIndex, @NonNull InputReader inputReader)
throws IOException {
int numberOfBytesToRead = (int) inputReader.getLength();
if (videoTrackIndex != trackIndex) {
// Discard contents.
inputReader.read(
discardedDataBuffer,
/* offset= */ 0,
Math.min(discardDataBuffer.length, numberOfBytesToRead));
} else {
ensureSpaceInBuffer(numberOfBytesToRead);
int bytesRead = inputReader.read(
sampleDataBuffer, bytesWrittenCount, numberOfBytesToRead);
bytesWrittenCount += bytesRead;
}
}
@Override
public void onSampleCompleted(
int trackIndex,
long timeMicros,
int flags,
int size,
int offset,
@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,
/* destPos= */ 0,
size);
// Place trailing bytes at the start of the buffer.
System.arraycopy(
sampleDataBuffer,
bytesWrittenCount - offset,
sampleDataBuffer,
/* destPos= */ 0,
/* size= */ offset);
bytesWrittenCount = bytesWrittenCount - offset;
publishSample(sampleData, timeMicros, flags);
}
private void ensureSpaceInBuffer(int numberOfBytesToRead) {
int requiredLength = bytesWrittenCount + numberOfBytesToRead;
if (requiredLength > sampleDataBuffer.length) {
sampleDataBuffer = Arrays.copyOf(sampleDataBuffer, requiredLength);
}
}
}
このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。
フィールド
| 名前 | 説明 |
|---|---|
| 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 |
パーサーがまだ選択されていない場合に |
| ParserNameWav |
マルチメディア プログラミング インターフェイスとデータ仕様で定義されている WAV コンテナー形式のパーサー。 |
| SampleFlagDecodeOnly |
古い.
サンプルをデコードする必要がありますが、レンダリングしないことを示します。 |
| SampleFlagEncrypted |
古い.
サンプルが (少なくとも部分的に) 暗号化されていることを示します。 |
| SampleFlagHasSupplementalData |
古い.
サンプルに補足データがあることを示します。 |
| SampleFlagKeyFrame |
古い.
サンプルが同期サンプルを保持していることを示します。 |
| SampleFlagLastSample |
古い.
サンプルにストリームの最後のメディア サンプルが含まれていることがわかっていることを示します。 |
プロパティ
| 名前 | 説明 |
|---|---|
| Class |
この |
| 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[]) |
最初の |
| CreateByName(String, MediaParser+IOutputConsumer) |
指定された |
| Dispose() |
このJava ピアによって保持されているリソースを解放します。 (継承元 Object) |
| Dispose(Boolean) |
このJava ピアによって保持されているリソースを解放します。 (継承元 Object) |
| DisposeUnlessReferenced() |
メディア コンテナーの形式を解析し、含まれているメディア のサンプルとメタデータを抽出します。 (継承元 JavaObject) |
| Equals(Object) |
メディア コンテナーの形式を解析し、含まれているメディア のサンプルとメタデータを抽出します。 (継承元 JavaObject) |
| Equals(Object) |
他のオブジェクトがこのオブジェクトと "等しい" かどうかを示します。 (継承元 Object) |
| GetHashCode() |
オブジェクトのハッシュ コード値を返します。 (継承元 Object) |
| GetParserNames(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) |
指定した |
| 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) |
インスタンス |
| JavaAs<TResult>(IJavaPeerable) |
|
| JavaCast<TResult>(IJavaObject) |
Android ランタイムチェック型変換を実行します。 |
| JavaCast<TResult>(IJavaObject) |
メディア コンテナーの形式を解析し、含まれているメディア のサンプルとメタデータを抽出します。 |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
|