日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

1.MP4解析工具

超詳細(xì)MP4格式分析

 

mediainfo

超詳細(xì)MP4格式分析

 

mp4box:http://download.tsi.telecom-paristech.fr/gpac/mp4box.js/filereader.html

超詳細(xì)MP4格式分析

 

對于Mp4來說,都是一個個box來去組織元素。比如豎著的box,就是一個個box,這里就是重點(diǎn)關(guān)注moov。mp4?件由box組成,每個box分為Header和Data。其中Header部分包含了box的類型和??,Data包含了?box或者數(shù)據(jù),box可以嵌套?box。MP4?件的基本組成單元是box,也就是說MP4?件是由各種各樣的box組成的,有parent box,還有children box。因此,這些boxes之間存在?定的層次關(guān)系,總結(jié)如下表所示,表中標(biāo)記出了各個box必選或可選特性,√代表Box必選。

超詳細(xì)MP4格式分析

 

下圖是?個典型mp4?件的基本結(jié)構(gòu):

超詳細(xì)MP4格式分析

 

Hexinator:

超詳細(xì)MP4格式分析

 

Mp4box和mediainfo對比。

超詳細(xì)MP4格式分析

 

 

超詳細(xì)MP4格式分析

 

 

超詳細(xì)MP4格式分析

 

 

超詳細(xì)MP4格式分析

 

 

超詳細(xì)MP4格式分析

 


超詳細(xì)MP4格式分析

 

 

超詳細(xì)MP4格式分析

 

 

超詳細(xì)MP4格式分析

 

 

超詳細(xì)MP4格式分析

 


超詳細(xì)MP4格式分析

 

 

這個trak,就是表示是多少路音頻和視頻。每一個AVstream都對應(yīng)一個track。每個track,可能都有寬高信息,編譯器信息,采樣率,聲道,time_base(time_scale)。

超詳細(xì)MP4格式分析

 

表示track width和heigth使用了4個字節(jié)。

視頻和音頻的時間刻度不一樣。

超詳細(xì)MP4格式分析

 

音視頻的handler也不一樣。

超詳細(xì)MP4格式分析

 

 

超詳細(xì)MP4格式分析

 

比較重要的sample table。

超詳細(xì)MP4格式分析

 

 

超詳細(xì)MP4格式分析

 

 

一個MP4文件分為多個track,一個track分為多個chunk,一個chunk有多個sample。mp4數(shù)據(jù)索引和真正的數(shù)據(jù)分開區(qū)域存儲。

超詳細(xì)MP4格式分析

 

先用數(shù)據(jù)索引找到moov,然后才能找到mdat。

超詳細(xì)MP4格式分析

 

下面的解釋就是chunk1-84,都是一一對應(yīng)1個sample,chunk85,一一對應(yīng)2個sample,chunk86-88,一一對應(yīng)一個sample,chunk89,一一對應(yīng)2個sample,chunk90,一一對應(yīng)一個sample。

超詳細(xì)MP4格式分析

 

可以根據(jù)sample size去讀取每一幀數(shù)據(jù)的大小。

 

ftyp

File Type Box,?般在?件的開始位置,描述的?件的版本、兼容協(xié)議等。

超詳細(xì)MP4格式分析

 

moov

Movie Box,包含本?件中所有媒體數(shù)據(jù)的宏觀描述信息以及每路媒體軌道的具體信息。?般位于放在?件末尾,但如果為了?持http邊下載邊播放則需要將moov提前。注意,當(dāng)改變moov位置時,內(nèi)部?些值需要重新計算。

超詳細(xì)MP4格式分析

 

mdat

Media Data Box,存放具體的媒體數(shù)據(jù)。

超詳細(xì)MP4格式分析

 

Moov Insider

mp4的媒體數(shù)據(jù)信息主要存放在Moov Box中,是我們需要分析的重點(diǎn)。moov的主要組成部分如下:

mvhd

Movie Header Box,記錄整個媒體?件的描述信息,如創(chuàng)建時間、修改時間、時間度量標(biāo)尺、可播放時?等。

下圖示例中,可以獲取?件信息如時?為 Duration: 5016 ms秒。

超詳細(xì)MP4格式分析

 


超詳細(xì)MP4格式分析

 

udta

User Data Box,?定義數(shù)據(jù)。

track

Track Box,記錄媒體流信息,?件中可以存在?個或多個track,它們之間是相互獨(dú)?的。

超詳細(xì)MP4格式分析

 

每個track包含以下?個組成部分:

tkhd

Track Header Box,包含關(guān)于媒體流的頭信息。下圖示例中,可以看到流信息如視頻流寬度800,?度1920。

超詳細(xì)MP4格式分析

 


超詳細(xì)MP4格式分析

 

?頻的tkhd,則?如duration、volume等。

超詳細(xì)MP4格式分析

 


超詳細(xì)MP4格式分析

 

mdia

Media Box,這是?個包含track媒體數(shù)據(jù)信息的container box。?box包括:

mdhd:Media Header Box,存放視頻流創(chuàng)建時間,?度等信息。

hdlr:Handler Reference Box,媒體的播放過程信息。

minf:Media Information Box,解釋track媒體數(shù)據(jù)的handler-specific信息。minf同樣是個containerbox,其內(nèi)部需要關(guān)注的內(nèi)容是stbl,這也是moov中最復(fù)雜的部分。stbl包含了媒體流每?個sample在?件中的offset,pts,duration等信息。想要播放?個mp4?件,必須根據(jù)stbl正確找到每個sample并送給解碼器。

mdia展開如下圖所示:

超詳細(xì)MP4格式分析

 


超詳細(xì)MP4格式分析

 

mdhd

Media Header Box,存放視頻流創(chuàng)建時間,?度等信息。視頻的mdhd,Time scale,Duration等信息。

超詳細(xì)MP4格式分析

 

?頻的mdhd,也類似視頻,但要注意Time scale,我們在計算時間戳的時候都要使?該Time scale,對應(yīng)我們流??的AVStream->time_base

超詳細(xì)MP4格式分析

 

hdlr

Handler Reference Box,媒體的播放過程信息視頻的hdlr,重點(diǎn)Component subtype: vide。

超詳細(xì)MP4格式分析

 

?頻的hdlr,Component subtype: soun,如果我們多個?軌的時候,Component name:粵語。

超詳細(xì)MP4格式分析

 

我們分析的?件另?路?軌,根據(jù)不同的名字來進(jìn)行區(qū)別。

超詳細(xì)MP4格式分析

 

minf

minf:Media Information Box,解釋track媒體數(shù)據(jù)的handler-specific信息。minf同樣是個containerbox,其內(nèi)部需要關(guān)注的內(nèi)容是stbl,這也是moov中最復(fù)雜的部分。stbl包含了媒體流每?個sample在?件中的offset,pts,duration等信息。想要播放?個mp4?件,必須根據(jù)stbl正確找到每個sample并送給解碼器。

?且需要注意的是,minf??的?容器,?頻和視頻軌是有區(qū)別的,?如視頻軌:vmhd, ?頻軌則為:smhd

 

vmhd

超詳細(xì)MP4格式分析

 

smhd

超詳細(xì)MP4格式分析

 

Stbl Insider

Sample Table Box,上?提到mdia中最主要的部分是存放?件中每個sample信息的stbl。在解析stbl前,我們需要區(qū)分chunk和sample這兩個概念。

在mp4?件中,sample是?個媒體流的基本單元,例如視頻流的?個sample代表實(shí)際的nal數(shù)據(jù)chunk是數(shù)據(jù)存儲的基本單位,它是?系列sample數(shù)據(jù)的集合,?個chunk中可以包含?個或多的sample。

超詳細(xì)MP4格式分析

 

stbl?來描述每個sample的信息,包含以下?個主要的?box:

stsd

Sample Description Box,存放解碼必須的描述信息。下圖示例中,對于h264的視頻流,其具體類型為 avc1 ,extensions中其中存放有sps,pps等解碼必要信息。

視頻的stsd

超詳細(xì)MP4格式分析

 

??包含了avc1,avc1???包含了avcC和pasp。

超詳細(xì)MP4格式分析

 

avc1:包含了視頻Width、Height。

avcC:包含了視頻編碼器相關(guān)的信息,包括sps、pps等信息。

超詳細(xì)MP4格式分析

 

 

超詳細(xì)MP4格式分析

 

 

超詳細(xì)MP4格式分析

 

 

超詳細(xì)MP4格式分析

 

 

超詳細(xì)MP4格式分析

 


超詳細(xì)MP4格式分析

 


超詳細(xì)MP4格式分析

 

?頻的stsd

用Hexinator分析,包含了音頻相關(guān)的信息,比如采樣率,通道數(shù)。

超詳細(xì)MP4格式分析

 

stts

Time-to-Sample Box,定義每個sample時?。Time-To-Sample的table entry布局如下:

超詳細(xì)MP4格式分析

 

stts table entry布局

sample count:sample個數(shù)。

sample duration:sample持續(xù)時間。

持續(xù)時間相同的連續(xù)sample可以放到?個entry?達(dá)到節(jié)省空間的?的。這?先給出來的是視頻的stts,Number of entries,這個參數(shù)需要注意并不是sample的個數(shù),sample的實(shí)際數(shù)量需要將每個entry的sample count進(jìn)?累加才是真正的sample個數(shù)。

下圖示例中,第1個sample時間為3720,單位?mdhd的time scale進(jìn)?換算,?如視頻的是90000,此時換算成秒為3720/90000 = 0.0413333333333333秒

超詳細(xì)MP4格式分析

 


超詳細(xì)MP4格式分析

 

再給出個?頻的stts,只是mdhd的time scale的差別,之前我們看到?頻為44100,則計算第?個sample的時間。1024/44100=0.0232199546485261秒。

超詳細(xì)MP4格式分析

 

stss

Sync Sample Box,同步sample表,存放關(guān)鍵幀列表,關(guān)鍵幀是為了?持隨機(jī)訪問。

stss的table entry布局如下:

超詳細(xì)MP4格式分析

 

stss table entry布局

下圖示例中,該視頻track有3個關(guān)鍵幀:

超詳細(xì)MP4格式分析

 

 

超詳細(xì)MP4格式分析

 

stsc

Sample-To-Chunk Box,sample-chunk映射表。

上?提到mp4通常把sample封裝到chunk中,?個chunk可能會包含?個或者?個sample。Sample-To-Chunk Atom的table entry布局如下圖所示:

超詳細(xì)MP4格式分析

 

First chunk:使?該表項的第?個chunk序號

Samples per chunk:使?該表項的chunk中包含有?個sample

Sample description ID:使?該表項的chunk參考的stsd表項序號

下圖示例中,可以看到該視頻track?共有1個stsc表項,chunk序列1-x,每個chunk包含?個sample。這?則說明每個chunk??只有?個sample?個chunk是可以有多個sample)。

超詳細(xì)MP4格式分析

 

stsz

Sample Size Box,指定了每個sample的size。Sample Size Atom包含兩sample總數(shù)和?張包含了每個sample size的表

sample size 表的entry布局如下圖:

超詳細(xì)MP4格式分析

 

下圖示例中,該視頻流?共有110個sample,第1個sample??為42072字節(jié),第2個sample??為7354個字節(jié)。

超詳細(xì)MP4格式分析

 


超詳細(xì)MP4格式分析

 

stco

Chunk Offset Box,指定了每個chunk在?件中的位置,這個表是確定每個sample在?件中位置的關(guān)鍵。該表包含了chunk個數(shù)和?個包含每個chunk在?件中偏移位置的表。每個表項的內(nèi)存布局如下:

超詳細(xì)MP4格式分析

 

需要注意,這?stco只是指定的每個chunk在?件中的偏移位置,并沒有給出每個sample在?件中的偏移。想要獲得每個sample的偏移位置,需要結(jié)合 Sample Size box(stsz)和Sample-To-Chunk(stsc) 計算后取得。

下圖示例中,該視頻流第1個chunk在?件中的偏移為4750,?這?是每個chunk只有?個sample,此時第?個sample的起始位置就為4750->0x1D78,數(shù)據(jù)??則參照stsz,第?個sample size為172818。

超詳細(xì)MP4格式分析

 

?如偏移位置,7544->0x1D78。

超詳細(xì)MP4格式分析

 


超詳細(xì)MP4格式分析

 

如何計算sample偏移位置

上?提到通過stco并不能直接獲取某個sample的偏移位置,下?舉例說明如何獲取某?個pts對應(yīng)的sample在?件中的位置。

?體需要以下步驟:

(1)將pts轉(zhuǎn)換到媒體對應(yīng)的時間坐標(biāo)系。

(2)根據(jù)stts((decoding) time-to-sample)計算某個pts對應(yīng)的sample序號

(3)根據(jù)stsc(sample-to-chunk)計算sample序號存放在哪個chunk中

(4)根據(jù)stco(chunk offset)獲取對應(yīng)chunk在?件中的偏移位置

(5)根據(jù)stsz獲取sample在chunk內(nèi)的偏移位置并加上第4步獲取的偏移,計算出sample在?件中的偏移。

例如,想要獲取3.64秒視頻sample數(shù)據(jù)在?件中的位置。

(1)根據(jù)time scale參數(shù),將3.64秒轉(zhuǎn)換為視頻時間軸對應(yīng)的3640000 (假如時間刻度不為毫秒)。

視頻軌:time scale為90000,轉(zhuǎn)成對應(yīng)的時間戳為3.64秒*90000。

(2)遍歷累加下表所示stts所有項?,計算得到3640000位于第110個sample = 327600。

(3)計算出多個sample_deltas疊加才到了327600, 我們這?姑且按3780作為平均值計算,實(shí)際是3720*1+3780*1+3690*1+3780*2 ...... 這樣?直疊加進(jìn)?。327600/3780 =86.66666666666667,取整為86。

超詳細(xì)MP4格式分析

 

(4)查詢下表所示stsc所有項?,計算得到第86個sample位于第86個chunk,并且在該chunk中位于第1個sample(因?yàn)槲覀兊拇a流是每個chunk對應(yīng)了?個sample)。

超詳細(xì)MP4格式分析

 

(5)查詢下表所示stco所有項?,得到第86個chunk在?件中偏移位置為1004678。使?hexinator。

超詳細(xì)MP4格式分析

 

(6)查詢下表所示stsz所有項?,得到第86個sample的size為20934。計算得到3.64秒視頻sample數(shù)據(jù)在?件中。

offset:1004678+0 = 1004678

size:20934。

超詳細(xì)MP4格式分析

 

驗(yàn)證:?編輯器打開mp4?件,定位到?件偏移1004678位置。09分隔符,這?占?了6個字節(jié), 再看真正的數(shù)據(jù)區(qū)域,前4字節(jié)也為 NALU的?度0x000051bc=20924。

總共占?的字節(jié)計算 4+2+4+20924 = 20934。

超詳細(xì)MP4格式分析

 

《整理mp4協(xié)議重點(diǎn),將協(xié)議讀薄》:

超詳細(xì)MP4格式分析

 

?個chunk含有多個sample的情景參考下?鏈接進(jìn)?分析:

mp4?件格式重點(diǎn)解析:https://www.jianshu.com/p/44c9567d8fcb

 

本篇文章就分析到這里,非常詳細(xì)的MP4分析,如果對你有用,可以關(guān)注,點(diǎn)贊,收藏,轉(zhuǎn)發(fā)。

分享到:
標(biāo)簽:格式 MP4
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定