2011-12-15 8 views
9

私はMP4ファイル(別名ISOベースメディアファイルフォーマット、ISO 14496パート12)を調べるためのツールを書いています。MP4/ISO 14496-12:どのようにビデオとオーディオのアクセスユニットが見つかりましたか?

OSSによって生成されたISO 14496-12にリストされているボックスの大部分を解釈できます。 私は個々のビデオアクセスユニットとオーディオアクセスユニットを抽出する方法をまだ理解していません。

「mdat」ボックスのH.264ビデオに、NALユニットのISO 14496-10 Annex B「0x000001」という接頭辞が付いていないことは合理的に確信しています。

私は、 'mdat'内でメディアサンプルを見つけるためにSampleToChunkBox( 'stsc')、SampleSizeBox( 'stsz')、およびChunkOffsetBox( 'stco')を解釈することを実験しましたが、 nal_unit()(ISO 14496-10セクション7.3.1)またはslice_header()(セクション7.3.3)として解釈できます。

また、SPS(7.3.2.1)とPPS(7.3.2.2)がどこに住んでいるのか不思議です。私はこれらがどこかの 'trak'ボックスの中に住んでいる疑いがあるが、私はどこを見つけたのか分からない。

アプリケーションまたはライブラリへのポインタは、限定されたユーティリティです。私はアプリケーションを書いており、外部ソースコードは数学的説明と比較すると理解するのが難しい(独自のフレームワークに邪魔されている)。

+0

ここでisoviewerの情報を使用してください:https://code.google.com/p/mp4parser/ –

答えて

5

stackoverflowで他の質問をしばらく時間を費やした後、私は結局、簡単な反応を見つけてより包括的な答えに導いた。

Parsing H264 in mdat MP4

ISOメディアファイル内のH.264のカプセル化は、ISO 14496 部15 SPSとPPSはセクション5.3.4.1.2に記載さ「AVCC」ボックス に隠されており、で覆われています5.2.4.1.1。このボックスは、 にサンプルを解釈するときの長さフィールドの長さも示します。

サンプルはセクション5.2.3で文書化されており、一連の NALユニットの先頭には長さがあります。 ffmpegのMP4の例では、1サンプルあたり スライスがありますが、最初のサンプルには、H.264コーデックのバージョンと エンコーディングパラメータを記述するテキストを含むSEI が含まれています。

関連する問題