mp4文件格式解析

注:概念

  • box:由唯一類型標識符和長度定義的面向?qū)ο蟮臉?gòu)件
  • container box:用來容納一組相關(guān)box的box,container box通常都不是fullbox
  • chunk:同一軌道的一組連續(xù)的采樣
  • hint track:不包含媒體數(shù)據(jù)鲫懒,但包含了將一個或多個軌打包到流頻道的指示
  • media data box:用來容納實體數(shù)據(jù)的box
  • movie box:子box定義了元數(shù)據(jù)(metadata)的容器box
  • sample:與單個時間戳相關(guān)聯(lián)的所有數(shù)據(jù)蚁堤,video sample即為一幀視頻醉者,或一組連續(xù)視頻幀,audio sample即為一段連續(xù)的壓縮音頻
  • sample description:定義和描述軌中的采樣的格式的結(jié)構(gòu)
  • sample table:指明sampe時序和物理布局的表
  • track:按時間排序的相關(guān)的采樣披诗,對于媒體數(shù)據(jù)來說撬即,track表示一個視頻或音頻序列

1、概述

??MP4文件中的所有數(shù)據(jù)都裝在box(QuickTime中為atom)中呈队,也就是說MP4文件由若干個box組成剥槐,每個box有類型和長度,可以將box理解為一個數(shù)據(jù)對象塊宪摧。box中可以包含另一個box粒竖,這種box稱為container box。一個MP4文件首先會有且只有一個“ftyp”類型的box几于,作為MP4格式的標志并包含關(guān)于文件的一些信息蕊苗;之后會有且只有一個“moov”類型的box(Movie Box),它是一種container box沿彭,子box包含了媒體的metadata信息朽砰;MP4文件的媒體數(shù)據(jù)包含在“mdat”類型的box(Midia Data Box)中,該類型的box也是container box喉刘,可以有多個瞧柔,也可以沒有(當媒體數(shù)據(jù)全部引用其他文件時),媒體數(shù)據(jù)的結(jié)構(gòu)由metadata進行描述睦裳。


來自網(wǎng)絡(luò)

2造锅、Box

??box中的字節(jié)序為網(wǎng)絡(luò)字節(jié)序,也就是大端字節(jié)序(Big-Endian)廉邑,簡單的說哥蔚,就是一個32位的4字節(jié)整數(shù)存儲方式為高位字節(jié)在內(nèi)存的低端。Box由header和body組成鬓催,其中header統(tǒng)一指明box的大小和類型肺素,body根據(jù)類型有不同的意義和格式。

??標準的box開頭的4個字節(jié)(32位)為box size宇驾,該大小包括box header和box body整個box的大小倍靡,這樣我們就可以在文件中定位各個box。如果size為1课舍,則表示這個box的大小為large size塌西,真正的size值要在largesize域上得到他挎。(實際上只有“mdat”類型的box才有可能用到large size。)如果size為0捡需,表示該box為文件的最后一個box办桨,文件結(jié)尾即為該box結(jié)尾。(同樣只存在于“mdat”類型的box中站辉。)

??size后面緊跟的32位為box type呢撞,一般是4個字符,如“ftyp”饰剥、“moov”等殊霞,這些box type都是已經(jīng)預(yù)定義好的,分別表示固定的意義汰蓉。如果是“uuid”绷蹲,表示該box為用戶擴展類型。如果box type是未定義的顾孽,應(yīng)該將其忽略祝钢。

3、ftyp:file type box

表明文件類型若厚,該box只有一個并且只能被包含在文件層拦英,不能被其他box包含。同時盹沈,他應(yīng)該出現(xiàn)在文件的最開始的位置龄章,指示該MP4文件應(yīng)用的相關(guān)信息。ftyp box包含一個32位的major brand(4個字符)乞封,一個32位的minor version(整數(shù))和一個以32位為單位的compatible brands數(shù)組。

file type box

注:box的類型為ftyp box大小為24個字節(jié)岗憋,其中major_brand和minor_version都是isom肃晚。

  • major_brand: 是一個標識符
  • minor_version: 是一個major brand 的次版本標識
  • compatible_brands:是一個list,一直到box的結(jié)尾

4仔戈、Movie Box(moov)

該box包含了文件媒體的metadata信息关串,“moov”是一個container box,具體內(nèi)容信息由子box詮釋监徘。同F(xiàn)ile Type Box一樣晋修,該box有且只有一個,且只被包含在文件層凰盔。一般情況下墓卦,“moov”會緊隨“ftyp”出現(xiàn)』Ь矗“moov”中會包含1個“mvhd”和若干個“trak”落剪。其中“mvhd”為header box睁本,一般作為“moov”的第一個子box出現(xiàn)(對于其他container box來說,header box都應(yīng)作為首個子box出現(xiàn))忠怖∧匮撸“trak”包含了一個track的相關(guān)信息,是一個container box凡泣。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末枉疼,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子鞋拟,更是在濱河造成了極大的恐慌骂维,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件严卖,死亡現(xiàn)場離奇詭異席舍,居然都是意外死亡,警方通過查閱死者的電腦和手機哮笆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進店門来颤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人稠肘,你說我怎么就攤上這事福铅。” “怎么了项阴?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵滑黔,是天一觀的道長。 經(jīng)常有香客問我环揽,道長略荡,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任歉胶,我火速辦了婚禮汛兜,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘通今。我一直安慰自己粥谬,他們只是感情好,可當我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布辫塌。 她就那樣靜靜地躺著漏策,像睡著了一般。 火紅的嫁衣襯著肌膚如雪臼氨。 梳的紋絲不亂的頭發(fā)上掺喻,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天,我揣著相機與錄音,去河邊找鬼巢寡。 笑死喉脖,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的抑月。 我是一名探鬼主播树叽,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼谦絮!你這毒婦竟也來了题诵?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤层皱,失蹤者是張志新(化名)和其女友劉穎性锭,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體叫胖,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡草冈,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了瓮增。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片怎棱。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖绷跑,靈堂內(nèi)的尸體忽然破棺而出拳恋,到底是詐尸還是另有隱情,我是刑警寧澤砸捏,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布谬运,位于F島的核電站,受9級特大地震影響垦藏,放射性物質(zhì)發(fā)生泄漏梆暖。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一掂骏、第九天 我趴在偏房一處隱蔽的房頂上張望式廷。 院中可真熱鬧,春花似錦芭挽、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至薛闪,卻和暖如春辛馆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工昙篙, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留腊状,地道東北人。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓苔可,卻偏偏與公主長得像缴挖,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子焚辅,可洞房花燭夜當晚...
    茶點故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內(nèi)容