MP4檔案格式詳解

2021-06-21 23:09:44 字數 4713 閱讀 7064

一、基本概念

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欄位後面,具體資料結構的意...