MP4格式詳解

2021-10-05 18:01:49 字數 3248 閱讀 4388

mp4由多個box組成,box又由header和data組成。

header:包含box的型別(type)和大小(size);當size為0時,表示檔案中的最後乙個box;當size為1時,會定義largesize描述box長度;當type為uuid時,表示box是使用者自定義擴充套件型別。

data:包含box的實際資料,可以是純資料或者是子box;其中包含子box的又稱為container box。

fullbox:box擴充套件,box結構基礎上在header**那個增加了8 bits version和24 bits flags。

box的結構偽**:

aligned(8

)class

box(

unsigned

int(

32) boxtype,optional unsigned

int(8)

[16] extended_type)

else

if(size==0)

if(boxtype==『uuid』)

1、mp4 box

ftpy

file type and compatibility

mp4第乙個box,描述檔案的型別、版本、相容協議等

moov

container for all the metadata

**檔案的描述資訊

mdata

media data container

實際**資料

mfra

movie fragment random access

一般在檔案末尾,**的索引檔案,可通過查詢直接定位所需時間點的**資料

moof

movie fragement

**分片檔案(fmp4)的描述資訊

moov

mvhd

movie header, overall declarations

trak

container for an individual track or stream

mvhd偽**

aligned(8

)class

movieheaderbox extends fullbox

(『mvhd』, version,0)

else

template

int(

32) rate =

0x00010000

;// typically 1.0

template

int(

16) volume =

0x0100

;// typically, full volume

const

bit(

16) reserved =0;

const

unsigned

int(32)

[2] reserved =0;

template

int(32)

[9] matrix =

;// unity matrix

bit(32)

[6] pre_defined =0;

unsigned

int(

32) next_track_id;

}

tkhd偽**

aligned(8

)class

trackheaderbox extends fullbox

(『tkhd』, version, flags)

else

const

unsigned

int(32)

[2] reserved =0;

template

int(

16) layer =0;

template

int(

16) alternate_group =0;

template

int(

16) volume =

;const

unsigned

int(

16) reserved =0;

template

int(32)

[9] matrix=

;// unity matrix

unsigned

int(

32) width;

unsigned

int(

32) height;

}

「stbl」幾乎是普通的mp4檔案中最複雜的乙個box了,首先需要回憶一下sample的概念。sample是**資料儲存的單位,儲存在media的chunk中,chunk和sample的長度均可互不相同,如下圖所示。

box header和version欄位後會有乙個entry count欄位,根據entry的個數,每個entry會有type資訊,如「vide」、「sund」等,根據type不同sample description會提供不同的資訊,例如對於video track,會有「visualsampleentry」型別資訊,對於audio track會有「audiosampleentry」型別資訊。

2、time to sample box(stts)儲存了sample的duration,描述了sample時序的對映方法,我們通過它可以找到任何時間的sample

「stts」可以包含乙個壓縮的表來對映時間和sample序號,用其他的表來提供每個sample的長度和指標。表中每個條目提供了在同乙個時間偏移量裡面連續的sample序號,以及samples的偏移量。遞增這些偏移量,就可以建立乙個完整的time to sample表。

mp4整理

mp4格式解析

mp4**格式1

mp4**格式2

sample table box詳解

qsv檔案轉碼mp4格式過程記錄

晚上趁著有空,在網上查詢資料,翻閱了很多檔案,都讓我無從下手。基本都是乙個套路,轉成fiv格式,再轉mp4格式,但是轉出來的檔案大了十幾倍。在乙個貼吧中找到乙個特別好的辦法 開啟後只有乙個很小的介面,直接把flv檔案拖上去就行了。解壓後請執行 flvextract.exe 之後出現乙個置頂的小視窗,...

MP4檔案格式詳解

一 基本概念 1 檔案,由許多box和fullbox組成。2 box,每個box由header和data組成。3 fullbox,是box的擴充套件,box結構的基礎上在header中增加8bits version和24bits flags。4 header,包含了整個box的長度size和型別ty...

Vegas的MP4渲染格式

mp4 是現在流行的輸出格式,在vegas 中共有3 種mp4 格式。b 高畫質格式,比如720p。固定位元速率下,建議位元率不要小於5m。可變位元速率下,建議位元率最大值在10 12m,最小值在5m 左右,平均值6 9m。c 高畫質格式,比如1080p。固定位元速率 建議位元率不要小於8m。可變位...