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 です。
私がやっていることが間違っていることを教えてください。
前もって感謝します。