當前位置:編程學習大全網 - 圖片素材 - mp4文件格式解析

mp4文件格式解析

註:概念

MP4文件中的所有數據都裝在box(QuickTime中為atom)中,也就是說MP4文件由若幹個box組成,每個box有類型和長度,可以將box理解為壹個數據對象塊。box中可以包含另壹個box,這種box稱為container box。壹個MP4文件首先會有且只有壹個“ftyp”類型的box,作為MP4格式的標誌並包含關於文件的壹些信息;之後會有且只有壹個“moov”類型的box(Movie Box),它是壹種container box,子box包含了媒體的metadata信息;MP4文件的媒體數據包含在“mdat”類型的box(Midia Data Box)中,該類型的box也是container box,可以有多個,也可以沒有(當媒體數據全部引用其他文件時),媒體數據的結構由metadata進行描述。

box中的字節序為網絡字節序,也就是大端字節序(Big-Endian),簡單的說,就是壹個32位的4字節整數存儲方式為高位字節在內存的低端。Box由header和body組成,其中header統壹指明box的大小和類型,body根據類型有不同的意義和格式。

標準的box開頭的4個字節(32位)為box size,該大小包括box header和box body整個box的大小,這樣我們就可以在文件中定位各個box。如果size為1,則表示這個box的大小為large size,真正的size值要在largesize域上得到。(實際上只有“mdat”類型的box才有可能用到large size。)如果size為0,表示該box為文件的最後壹個box,文件結尾即為該box結尾。(同樣只存在於“mdat”類型的box中。)

size後面緊跟的32位為box type,壹般是4個字符,如“ftyp”、“moov”等,這些box type都是已經預定義好的,分別表示固定的意義。如果是“uuid”,表示該box為用戶擴展類型。如果box type是未定義的,應該將其忽略。

表明文件類型,該box只有壹個並且只能被包含在文件層,不能被其他box包含。同時,他應該出現在文件的最開始的位置,指示該MP4文件應用的相關信息。ftyp box包含壹個32位的major brand(4個字符),壹個32位的minor version(整數)和壹個以32位為單位的compatible brands數組。

註:box的類型為ftyp box大小為24個字節,其中major_brand和minor_version都是isom。

該box包含了文件媒體的metadata信息,“moov”是壹個container box,具體內容信息由子box詮釋。同File Type Box壹樣,該box有且只有壹個,且只被包含在文件層。壹般情況下,“moov”會緊隨“ftyp”出現。“moov”中會包含1個“mvhd”和若幹個“trak”。其中“mvhd”為header box,壹般作為“moov”的第壹個子box出現(對於其他container box來說,header box都應作為首個子box出現)。“trak”包含了壹個track的相關信息,是壹個container box。

  • 上一篇:隱藏式表白
  • 下一篇:急求這部鬼片的名字!住客不就去買了壹幅畫(好像是女鬼的照片)掛在住房裏面,那幅畫冒煙流血!
  • copyright 2024編程學習大全網