MP4文件格式详解(ISO-14496-12/14)

本文详细解读了MP4文件的基本概念、组成部分及其重要特性,包括Box、FullBox、Header、Data等概念,并重点介绍了MP4文件的结构组成,如Box的分类、类型及其作用。此外,文章还概述了MP4文件中必须和可选的Box类型,以及它们在文件中的功能和意义。

一、基本概念

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。

Box的结构用伪代码表示如下:

  1. aligned(8) class Box (unsignedint(32) boxtype,optional unsignedint(8)[16] extended_type)  
  2. {  
  3.     unsigned int(32) size;  
  4.     unsigned int(32) type = boxtype;  
  5.     if (size==1)  
  6.     {  
  7.         unsigned int(64) largesize;  
  8.     }  
  9.     elseif (size==0)  
  10.     {  
  11.         // box extends to end of file 
  12.     }  
  13.     if (boxtype==‘uuid’)  
  14.     {  
  15.         unsigned int(8)[16] usertype = extended_type;  
  16.     }  

结构如下图:

                                                                                             文件基本结构描述图

二、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

copyright etc.

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

xml

XML 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。

        >>mvhd中记录了创建时间、修改时间、时间度量标尺、可播放时长等信息。

        >>trak中的一系列子box描述了每个媒体轨道的具体信息。

3、  moofbox,这个box是视频分片的描述信息。并不是MP4文件必须的部分,但在我们常见的可在线播放的MP4格式文件中(例如Silverlight Smooth Streaming中的ismv文件)确是重中之重。

4、  mdatbox,实际媒体数据。我们最终解码播放的数据都在这里面。

5、  mfrabox,一般在文件末尾,媒体的索引文件,可通过查询直接定位所需时间点的媒体数据。


附:Smooth Streaming中ismv文件结构,文件分为了多个Fragments,每个Fragment中包含moof和mdat。这样的结构符合渐进式播放需求。(mdat及其描述信息逐步传输,收齐一个Fragment便可播放其中的mdat)。

MP4MPEG4的Part14,详情如下: MPEG-4标准目前分为27个部分,统称为ISO/IEC14496国际标准。[1]各部分的内容描述如下:   第一部分(ISO/IEC 14496-1),系统:描述视频和音频数据流的控制、同步以及混合方式(Multiplexing, MUX)。   第二部分(ISO/IEC 14496-2),视频:定义了对各类视觉信息(包括自然视频、静止纹理、计算机合成图形等等)的编解码器。该部分采用了国际电联ITU的技术建议H.263,故业界亦称该部分为H.263。   第三部分(ISO/IEC 14496-3),音频:定义了对各种音频信号进行编码的编解码器的集合,包括AAC(Advanced Audio Coding)。   第四部分(ISO/IEC 14496-4),一致性:定义了对本标准其他的部分进行一致性测试方法。   第五部分(ISO/IEC 14496-5),参考软件:提供了用于功能演示的软件。   第六部分(ISO/IEC 14496-6),多媒体传输集成框架。   第七部分(ISO/IEC 14496-7),优化的参考软件:在第五部分的基础上提供了优化示例。   第八部分(ISO/IEC 14496-8),IP网络传输:定义了在IP网络上传输MPEG-4内容的格式。   第九部分(ISO/IEC 14496-9),参考硬件:提供了用于实现本标准功能的硬件设计方案。   第十部分(ISO/IEC 14496-10),高级视频编码AVC(Advanced Video Coding):定义了更高级的视频编解码器。该部分采用了国际电联ITU的技术建议H.264,故业界亦称该部分为H.264。   第十一部分(ISO/IEC 14496-11),场景描述与应用引擎。   第十二部分(ISO/IEC 14496-12),基本媒体文件格式。   第十三部分(ISO/IEC 14496-13),知识产权管理和保护的拓展。   第十四部分(ISO/IEC 14496-14),视频文件格式:在第十二部分的基础上定义了视频内容的存储格式。   第十五部分(ISO/IEC 14496-15),AVC文件格式:在第十二部分的基础上定义了AVC视频内容的存储格式。   第十六部分(ISO/IEC 14496-16),动画框架扩展。   第十七部分(ISO/IEC 14496-17),同步文本字幕格式。   第十八部分(ISO/IEC 14496-18),字体压缩和流媒体传输。   第十九部分(ISO/IEC 14496-19),合成信息流。   第二十部分(ISO/IEC 14496-20),简单场景描述。   第二十一部分(ISO/IEC 14496-21),用于渲染的MPEG-J拓展。   第二十二部分(ISO/IEC 14496-22),开放字体格式。   第二十三部分(ISO/IEC 14496-23),符号化的音乐描述。   第二十四部分(ISO/IEC 14496-24),音频与系统的交互定义。   第二十五部分(ISO/IEC 14496-25),3D图形压缩模型。   第二十六部分(ISO/IEC 14496-26),音频一致性检查。   第二十七部分(ISO/IEC 14496-27),3D图形一致性检查。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值