0

MediaCodecと を使用して、2 つのオーディオ トラックで mpeg2-ts ストリームを再生するプレーヤーを構築しようとしていますMediaExtractor。URL をエクストラクタに設定すると: extractor.setDataSource(URL)int the Logcat フレームワークが 2 つのオーディオ トラックを検出したことがわかります。2 つのオーディオ トラックと 1 つのビデオ トラック

しかしその後、私は電話します:

int trackCount = extractor.getTrackCount();
for (int i = 0; i < track_count; i++){
    format = extractor.getTrackFormat(i);
    String mime = format.getString(MediaFormat.KEY_MIME);
    if (mime.startsWith("video/")) ...
    if (mime.startsWith("audio/")) ...
}

trackCount離れた場所は 2 (オーディオ トラック 1 つとビデオ トラック 1 つ) に相当します。私は何を間違っていますか?

4

1 に答える 1

4

MPEG2TSExtractor クラス (mpeg2 ts ファイルの MediaExtractor の背後にある実際の実装) は、1 つのオーディオ ストリームと 1 つのビデオ ストリームしかサポートしていないようです。

たとえば、https ://android.googlesource.com/platform/frameworks/av/+/1a9c3954a/media/libstagefright/mpeg2ts/MPEG2TSExtractor.cpp (行 156-193) の init メソッドを参照してください。そのため、複数のオーディオ ストリームを含む mpeg2 ts ストリームをデマルチプレクサする必要がある場合は、基本的に独自のデマルチプレクサをバンドルする必要があります。

于 2014-11-28T18:33:24.990 に答える