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的結構偽**:
1、mp4 boxaligned(8
)class
box(
unsigned
int(
32) boxtype,optional unsigned
int(8)
[16] extended_type)
else
if(size==0)
if(boxtype==『uuid』)
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偽**
tkhd偽**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;
}
「stbl」幾乎是普通的mp4檔案中最複雜的乙個box了,首先需要回憶一下sample的概念。sample是**資料儲存的單位,儲存在media的chunk中,chunk和sample的長度均可互不相同,如下圖所示。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;
}
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。可變位...