4.2.1 track header box
(tkhd
)「tkhd
」結構如下表。 字段
位元組數意義
box size
box大小
box type
box型別
version
box版本,0或1,一般為0。(以下位元組數均按version=0)
flags
按位或操作結果值,預定義如下:
0x000004 track_in_preview,表示該track在預覽時被引用。
一般該值為7,如果乙個**所有track均未設定track_in_movie和track_in_preview,將被理解為所有track均設定了這兩項;對於hint track,該值為0
creation time
建立時間(相對於utc時間1904-01-01零點的秒數)
modification time
修改時間
track id
id號,不能重複且不能為0
reserved
保留位duration
track的時間長度
reserved
保留位layer
alternate group
track分組資訊,預設為0表示該track未與其他track有群組關係
volume
[8.8] 格式,如果為音訊track,1.0(0x0100)表示最大音量;否則為0
reserved
保留位matrix
width
寬height
「tkhd
」的位元組例項如下圖,各欄位已經用顏色區分開:
4.2.2 media box
(mdia
)「mdia
」也是個
container box
,其子box
的結構和種類還是比較複雜的。先來看乙個「
mdia
」的例項結構樹圖。
總體來說,「
mdia
」定義了
track
**型別以及
sample
資料,描述
sample
資訊。一般「
mdia
」包含乙個「
mdhd
」,乙個「
hdlr
」和乙個「
minf
」,其中「
mdhd
」為media header box
,「hdlr
」為handler reference box
,「minf
」為media information box
。下面依次看一下這幾個
box的結構。
4.2.2.1 media header box
(mdhd
) 「
mdhd
」結構如下表。
字段位元組數意義
box size
box大小
box type
box型別
version
box版本,0或1,一般為0。(以下位元組數均按version=0)
flags
creation time
建立時間(相對於utc時間1904-01-01零點的秒數)
modification time
修改時間
time scale
同前表duration
track的時間長度
language
**語言碼。最高位為0,後面15位為3個字元(見iso 639-2/t標準中定義)
pre-defined
「mdhd
」的位元組例項如下圖,各欄位已經用顏色區分開:
4.2.2.2 handler reference box
(
hdlr
)「hdlr
box也可以被包含在
meta box
(meta
)中。「
hdlr
」結構如下表。
字段位元組數
意義box size
box大小
box type
box型別
version
box版本,0或1,一般為0。(以下位元組數均按version=0)
flags
pre-defined
handler type
在media box中,該值為4個字元:
「vide」— video track
「soun」— audio track
「hint」— hint track
reserved
name
不定track type name,以『\0』結尾的字串
「hdlr
」的位元組例項如下圖,各欄位已經用顏色區分開:
4.2.2.3 media information box
(minf
)「minf」儲存了解釋track**資料的handler-specific資訊,media handler用這些資訊將**時間對映到**資料並進行處理。「minf」中的資訊格式和內容與**型別以及解釋**資料的media handler密切相關,其他media handler不知道如何解釋這些資訊。「minf」是乙個container box,其實際內容由子box說明。
一般情況下,「minf」包含乙個header box,乙個「dinf」和乙個「stbl」,其中,header box根據track type(即media handler type)分為「vmhd」、「smhd」、「hmhd」和「nmhd」,「dinf」為data information box,「stbl」為sample table box。下面分別介紹。
下圖為「minf」部分位元組例項,其中紅色為box header,藍色為「smhd」,綠色為「dinf」,黃色為一部分「stbl」。
mp4檔案格式解析
想真正了解mp4檔案格式的話,有乙個開源工具專案可以學習 mp4 explorer。一方面,這個工具可以按mpeg 4標準去解析mp4檔案,直觀上幫助大家去看mp4檔案的格式。另一方面,認真學習其 就可以了解mp4檔案是如何被訪問和訪問的,對致力於底層研究的同學是個福音。其官網 本文介紹的一種mp4...
mp4檔案格式解析(四)
5 free space box free 或skip free 中的內容是無關緊要的,可以被忽略。該 box6 meida data box mdat 該box包含於檔案層,可以有多個,也可以沒有 當 資料全部為外部檔案引用時 用來儲存 資料。資料直接跟在box type欄位後面,具體資料結構的意...
mp4檔案格式解析(四)
5 free space box free 或skip free 中的內容是無關緊要的,可以被忽略。該 box6 meida data box mdat 該box包含於檔案層,可以有多個,也可以沒有 當 資料全部為外部檔案引用時 用來儲存 資料。資料直接跟在box type欄位後面,具體資料結構的意...