天天看點

MP4/MOV/3GP檔案的“ftyp”

MP4檔案、MOV檔案和3GP檔案,這三種媒體檔案格式采用了相同的封裝格式,其基本的組成單元是box。“ftyp”就是整個檔案的第一個box,通過判斷該box來确定檔案的類型。該box有且隻有1個,并且隻能被包含在檔案層,而不能被其他box包含。該box應該被放在檔案的最開始,訓示檔案的相關資訊。

檔案的最開始的四個位元組就是“ftyp”box的大小,然後是該box的類型。 “ftyp”的body依次包括1個32位的major brand(4個字元),1個32位的minor version(整數)和1個以32位(4個字元)為機關元素的數組compatible brands。這些都是用來訓示檔案應用級别的資訊。以一個MP4檔案的“ftyp”box為例,如下所示:

MP4/MOV/3GP檔案的“ftyp”

其中,

(1)0x00 00 00 18是“ftyp”box的大小,為24個位元組,這在一般情況下為一個固定值。

(2)0x66 74 79 70是“ftyp”四個字元的ASCII值,也就是該box的類型。

(3)0x6D 70 34 32是major brand,這裡為“mp42”,對于不同的檔案,該值可能是不一樣的。

(4)0x00 00 00 10是minor version。

(5)0x6D 70 34 32和0x6D 70 34 31是compatible brands,“mp42”和“mp41”

回過頭來,那“ftyp”到底是什麼呢?

ftyp就是一個由四個字元組成的碼字,有時包含空格,用來辨別編碼類型、相容性或者媒體檔案的用途。它存在于MP4檔案和MOV檔案中,當然,也存在于3GP檔案中。

雖然MP4檔案、MOV檔案和3GP檔案采用了相同的封裝标準,但由于是由不同的廠商合成,是以還是存在差别的。即使是同一種媒體檔案,比如MP4檔案,由不同developers開發的MP4也是存在差别的。ftyp簡單的說就是為了辨別它的developer是誰,相容哪些标準等。

比如上面的例子,“mp42”表示它的major brand是MP4 v2 [ISO 14496-14],而“mp42”和“mp41”則表示它的compatible brands是MP4 v2 [ISO 14496-14]和MP4 v1 [ISO 14496-1:ch13]。

更多的ftyp可以參考下面的網址。

http://www.ftyps.com/

其中列出了所有可知的ftyp以及對他們的描述。

繼續閱讀