1

H.264 ストリームをファイルとして保存しています。このストリームを MDAT BOX に追加して MPEG4 ファイルを作成しようとしています。MPEG-4 標準で必要なその他のヘッダーを作成しました。しかし、MPEG-4 ファイルを読み取ることができません。

H.264 ストリームを解析したところ、ファイルに複数の I フレームがあることがわかりました。これは断片化された H.264 ストリームのようです。

この断片化された H.264 ストリームを単一の I フレームに結合する方法はありますか?

ffmpeg (libavcodec) を使用して H264 ビデオを RTP 経由でデコードする問題のリンクを確認しました。

リンクに記載されている内容を実装しましたが、作成した MPEG-4 を実行できません。

上記の手法では、fragmentType = 5 を取得します。次の nalTypes (8、2、1、0、0、...) を取得します。指定どおりに startBit を取得し、他のフラグメントについては 00 (StartBit|endBit の場合) を取得します。endBit が取得できません。

作成された MPEG-4 ファイルを FFMPEG を使用して再変換しようとすると、次のエラーが表示されます:「ヘッダーが破損しています」。IDR フレームの再構築が正しく機能していないようです。

私が従っている方法に問題がある場合はお知らせください。

H.264 ストリーム ファイルは約 100KB です。このファイルを FFMPEG で MP4 に変換すると、約 38KB になります。MP4ファイルを再作成するために、FFMPEGがファイルをもう一度再エンコードしていることを意味しますか?

リンクに記載されている上記の手法で、作成した MP4 自体は約 100 KB です。

私がやっていることが間違っていることを教えてください。

前もって感謝します。

4

1 に答える 1

0

再生できるように、H.264 エレメンタリ ストリームを mp4 コンテナにラップしたいようです。mp4box ( http://gpac.wp.mines-telecom.fr/mp4box/ ) のようなツールを使用すると、基本ストリームを mp4 ファイルにラップできます。例えば:

mp4box -MySourcFile.h264 MyDestFile.mp4 を追加

于 2013-02-13T21:22:47.177 に答える