私は、AndroidのMediaCodecクラスを使用してH.264ビデオをデコードする方法を理解しようとしています。まず、H.264ファイルからNALユニットを手作業で解析し、MediaCodecにデコードするようにしています。私はファイルからNALユニットを正しく解析していると思います(ファイル内の0x00 0x00 0x01シーケンスの検索はNALユニットの開始を示します)。しかし、MediaCodecは常にタイムアウトし、dequeueOutputBufferを呼び出すたびに-1を返します。 ()。デコードのためにH.264 NALユニットをMediaCodecに供給する方法の詳細を知っている人はいますか?私はそれをNALユニットに送る前に0x00 0x00 0x01シーケンスを取り除くはずですか?特定のNALユニットタイプを無視/削除する必要がありますか?各NALユニットの前に、抽出されたSPSとPPS情報(0x00 0x00 0x01シーケンスの有無に関わらず)を付加する必要がありますか?私はここでたくさんのアイデアで遊んでいて、どれもがパンニングしていません。この分野のガイダンスは非常に高く評価されます。H.264 NALユニットをAndroid MediaCodecにデコードするにはどうすればよいですか?
7
A
答えて
4
私が経験した限り、デコーダはsps/pps情報を供給しない限り、dequeueOutputBuffer()で-1を返します。これを行うと、デコーダーはdequeueOutputBuffer()でINFO_OUTPUT_FORMAT_CHANGEDフラグ(-2)を返し、デコードされたフレームを正しく返します。
デコーダが-1を返す場合は、フラグBUFFER_FLAG_CODEC_CONFIGを使用してsps/pps情報をデコーダに追加してみてください。
0
AFAIKあなたは最初のバッファーとしてSPS/PSSを送り出すだけでなく、ヘッダーを取り出す必要がありますが、-1を得ることは大きな問題ではありません。他のNALの前にSPS/PPSによってフィードされない場合、一部のデバイスがクラッシュする
関連する問題
- 1. MSEのビデオタグでH.264 NALユニットのストリームを再生するにはどうすればよいですか?
- 2. Android MediaCodec h.264デコードサーフェスモードカラーバンディング
- 3. ストリーミング用のハードウェアアクセラレーションH.264エンコーディングとデコードを実行するにはどうすればよいですか?
- 4. H.264デコードで異常なフレームヘッダーの解析が失敗する
- 5. FFMpegのAVPacketとH.264 NAL Uintの関係は何ですか?
- 6. libx264とffmpegがH.264をエンコードしてデコードする方法
- 7. H.264 RTSPストリームをデコードするライブラリ
- 8. H.264ビデオをエンコードするMediaCodecの平均+最大ビットレートを設定するにはどうすればよいですか?
- 9. AndroidでH.264ライブストリームを受信してデコードする
- 10. h.264とmpegヘッダー
- 11. H.264で符号化されたNAL /スライス分割
- 12. H.264ビデオストリームから画像を抽出するにはどうすればよいですか?
- 13. H.264のベースプロファイルまたはメインプロファイルのクロマフォーマットを抽出するにはどうすればよいですか?
- 14. Windows 8 Metro C#XAMLアプリでH.264 RTSPビデオを再生するにはどうすればよいですか?
- 15. タイプ1のNALユニット内でスライスする
- 16. Android H.263またはH.264ファイルですか?
- 17. H.264 NALU、SPS、PPSなどについては、どのISO/IECが記述していますか?
- 18. h 264 IOS(IPhone/Ipad)のハードウェアエンコード/デコード?
- 19. Java - h.264ビデオエンコーディング
- 20. H.264ビデオエンコーディング
- 21. 異なるパラメータを持つH.264ストリームをエンコード/デコードする
- 22. Android H.264 BaseProfileレベルのサポート
- 23. H.264デコーダ用AndroidのOpenmax?
- 24. Android MediaCodec、MJPEGフレームをデコードする
- 25. ファイルを分析し、そのファイルがH.264ビデオ形式であるかどうかを検出するにはどうすればよいですか?
- 26. これらのh.264パケットのバイナリデータを分析し、それらをデコードするh.264ストリームを整理する方法はffmpegを使用しますか?
- 27. H.264 - 私はRTPフレームにパックIPカメラからの生のH.264ストリームを持っているSPSとPPSフレーム
- 28. ライブストリームをH.264エンコーダからWowzaのようなストリーミングサービスに変換するにはどうすればよいですか?
- 29. ビデオをH.264からH.265に変換する方法
- 30. ビデオをH.264からH.265に変換する方法#
また、 'MediaFormat'に追加することもできます。両方のアプローチの例はCTS EncodeDecodeTestで見ることができます。 https://android.googlesource.com/platform/cts/+/jb-mr2-release/tests/tests/media/src/android/media/cts/EncodeDecodeTest.javaの567行目と855行目を参照してください。 – fadden