mp4檔案格式解析(二)

2021-08-28 15:39:12 字數 3125 閱讀 4767

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欄位後面,具體資料結構的意...