8

HLS ビデオをストリーミングするネイティブ Android アプリケーションに取り組んでいます。CEA-608 クローズド キャプション データを表示しようとしていますが、問題が発生しています。

方法論: クローズド キャプションと HLS 再生 ( http://developer.android.com/about/versions/android-4.1.html#Multimedia ) をサポートするジェリー ビーン デバイス (API 4.1+) で実行しています。

テスト フィード: キャプション データを含む Apple サンプル HLS bip-bop フィードを使用してテストしています ( https://devimages.apple.com.edgekey.net/resources/http-streaming/examples/bipbop_16x9/bipbop_16x9_variant.m3u8 )

キャプション データの取得: Android のドキュメントに従って、次のように呼び出してキャプション トラックを取得しようとしています。

"MediaPlayer.getTrackInfo()"

問題: getTrackInfo() 行を実行するとプレーヤーがクラッシュし、LogCat に次の出力が表示されます。

E/AndroidRuntime(7311): FATAL EXCEPTION: main E/AndroidRuntime(7311): java.lang.RuntimeException: エラー コード: -38

質問: 1) HLS フィードのインストリーム キャプション データからのクローズド キャプションのレンダリングは、ネイティブの Android アプリでサポートされていますか? 2) そうでない場合、代替手段はありますか? 3) 上記のリンクのドキュメント (以下に引用) は、インストリーム キャプションが MP4 または 3GPP メディア ソースでサポートされていることを示しています。それは必然的にHLS(MPEG-2ベースだと思います)の動作を除外しますか?

MediaPlayer は、帯域内と帯域外の両方のテキスト トラックを処理できるようになりました。インバンド テキスト トラックは、MP4 または 3GPP メディア ソース内のテキスト トラックとして提供されます。帯域外テキスト トラックは、addTimedTextSource() メソッドを介して外部テキスト ソースとして追加できます。すべての外部テキスト トラック ソースが追加されたら、getTrackInfo() を呼び出して、データ ソースで使用可能なすべてのトラックの更新されたリストを取得する必要があります。

ご協力いただきありがとうございます。

4

2 に答える 2

5

まったく同じ演習を行いました。AndroidのMediaPlayerは、HLSに組み込まれたCEA-608をサポートしていないようです。メディアプレーヤー(MP)の再生中に、OnTimedTextListenerが呼び出されることはありませんでした。MPの再生中にgetTrackInfo()を呼び出そうとすると、前述のようにクラッシュしました。

Android MPは、MP4に含まれているSRTのみをデコードできる可能性があります。

別の方法は、外部の時間指定テキストトラックを使用することですが、ライブストリーミング環境では困難になります。

于 2013-02-07T20:34:46.120 に答える
1

質問はかなり古いですが、一部の人々はまだ問題に直面している可能性があります.

ExoPlayerは、Android のバージョンに依存しない一般的なマルチメディア ライブラリとして問題を解決しようとします。

現在、CEA-608、SubRip、TTML、TX3g、および WebVtt 字幕をサポートしています。もちろん、すべての規格を網羅しているわけではありませんが、そのうちの有用な部分です。

于 2016-02-06T06:00:48.010 に答える