一、基本概念
1、 檔案,由許多box和fullbox組成。
2、 box,每個box由header和data組成。
3、 fullbox,是box的擴充套件,box結構的基礎上在header中增加8bits version和24bits flags。
4、 header,包含了整個box的長度size和型別type。當size==0時,代表這是檔案中最後乙個box;當size==1時,意味著box長度需要更多bits來描述,在後面會定義乙個64bits的largesize描述box的長度;當type是uuid時,代表box中的資料是使用者自定義擴充套件型別。
5、 data,是box的實際資料,可以是純資料也可以是更多的子boxes。
6、 當乙個box的data中是一系列子box時,這個box又可成為container box。
檔案基本結構描述圖
二、mp4檔案格式(iso-14496-12/14)
mp4檔案概述
mp4檔案就是由各式各樣的box組成的,下表中列出了所有必選或可選的box型別,√代表box必選。
ftyp
file type and compatibility
pdin
progressive download information
moov
container for all the metadata
mvhd
movie header, overall declarations
trak
container for an individual track or stream
tkhd
track header, overall information about the track
tref
track reference container
edts
edit list container
elst
an edit list
mdia
container for the media information in a track
mdhd
media header, overall information about the media
hdlr
handler, declares the media (handler) type
minf
media information container
vmhd
video media header, overall information (video track only)
smhd
sound media header, overall information (sound track only)
hmhd
hint media header, overall information (hint track only)
nmhd
null media header, overall information (some tracks only)
dinf
data information box, container
dref
data reference box, declares source(s) of media data in track
stbl
sample table box, container for the time/space map
stsd
sample descriptions (codec types, initialization etc.)
stts
(decoding) time-to-sample
ctts
(composition) time to sample
stsc
sample-to-chunk, partial data-offset
information
stsz
sample sizes (framing)
stz2
compact sample sizes (framing)
stco
chunk offset, partial data-offset information
co64
64-bit chunk offset
stss
sync sample table (random access points)
stsh
shadow sync sample table
padb
sample padding bits
stdp
sample degradation priority
sdtp
independent and disposable samples
sbgp
sample-to-group
sgpd
sample group description
subs
sub-sample information
mvex
movie extends box
mehd
movie extends header box
trex
track extends defaults
ipmc
ipmp control box
moof
movie fragment
mfhd
movie fragment header
traf
track fragment
tfhd
track fragment header
trun
track fragment run
sdtp
independent and disposable samples
sbgp
sample-to-group
subs
sub-sample information
mfra
movie fragment random access
tfra
track fragment random access
mfro
movie fragment random access offset
mdat
media data container
free
free space
skip
free space
udta
user-data
cprt
meta
metadata
hdlr
handler, declares the metadata (handler) type
dinf
data information box, container
dref
data reference box, declares source(s) of metadata items
ipmc
ipmp control box
iloc
item location
ipro
item protection
sinf
protection scheme information box
frma
original format box
imif
ipmp information box
schm
scheme type box
schi
scheme information box
iinf
item information
xmlxml container
bxml
binary xml container
pitm
primary item reference
fiin
file delivery item information
paen
partition entry
fpar
file partition
fecr
fec reservoir
segr
file delivery session group
gitn
group id to name
tsel
track selection
meco
additional metadata container
mere
metabox relation
正式開始前先對檔案的幾個重要部分巨集觀介紹一下,以便諸位在後續學習時心中有數:
1、 ftypbox,在檔案的開始位置,描述的檔案的版本、相容協議等;正式開始前先對檔案的幾個重要部分巨集觀介紹一下,以便諸位在後續學習時心中有數:
2、 moovbox,這個box中不包含具體**資料,但包含本檔案中所有**資料的巨集觀描述資訊,moov box下有mvhd和trak box。
>>trak中的一系列子box描述了每個**軌道的具體資訊。
5、 mfrabox,一般在檔案末尾,**的索引檔案,可通過查詢直接定位所需時間點的**資料。
mp4 檔案格式系列
不同。sample to chunk atom儲存sample與chunk的對映關係。sample to chunk atoms的型別是 stsc 它也有乙個表來對映sample和trunk之間的關係,檢視這張表,就可以找到包含指定sample的trunk,從而找到這個sample。字段 長度 位元...
mp4檔案格式解析
想真正了解mp4檔案格式的話,有乙個開源工具專案可以學習 mp4 explorer。一方面,這個工具可以按mpeg 4標準去解析mp4檔案,直觀上幫助大家去看mp4檔案的格式。另一方面,認真學習其 就可以了解mp4檔案是如何被訪問和訪問的,對致力於底層研究的同學是個福音。其官網 本文介紹的一種mp4...
mp4檔案格式解析(四)
5 free space box free 或skip free 中的內容是無關緊要的,可以被忽略。該 box6 meida data box mdat 該box包含於檔案層,可以有多個,也可以沒有 當 資料全部為外部檔案引用時 用來儲存 資料。資料直接跟在box type欄位後面,具體資料結構的意...