MPEG-4结构浅析

MP4文件分为两部分:

 

元数据    metadata 保存帧的时间信息,视频帧占用空间大小,在文件中位置等媒体数据的参数
媒体数据 media data 真正的音视频数据

 

MP4文件中的时间都是相对时间,插入删除帧时候,文件时间戳不需要重新写入

 

媒体数据有流stream组成 , 所有流之间的交互关系保存在元数据当中,所以媒体数据可以以一种自然的方式连续存放


使用Hint来指导流媒体服务器按照某种协议将数据打包,是MP4文件独立于流式传输中使用的协议


MPEG-4四种基本流:Visual , Audio ,Object Descriptor (OD),  Binary Format For Scene (BIFS),它们以轨道(track)的方式来组织,每个轨道看成是一段连续Access Unit(AU) , AU是基本流中的一个单独存取部分,

 

Visual Audio 是传统的视频音频流数据
BIFS  用来描述场景中AV,可以理解为一棵树,每个节点都有属性和其他一些信息,叶子节点对应基本AV数据
OD 对象描述符,为一个或多个基本流描述符的集合,对象描述符也可以以基本流方式传输。

对象描述符用对象描述符ID来标识,将场景中单个节点和AV对象关联。基本流描述符也使用数字标识符,称为ES_ID; 来识别一个单独的基本流,一个基本流描述符中包含一些解码过程必须的初始化和配置信息。

 


MP4文件中的元数据区域专门用编辑列表(edit list)来记录一个AU和它的下一个AU之间时间的差异,这个差异称为延迟(duration)。

 

每个AU都有一个解码时间戳(decoding time stamp)和合成时间戳(composition time stamp)

 

每个轨道都有一个时间刻度,它定义该轨道时钟的速度,使用一个合适的时间刻度就可以精确定义播放该轨道内容的速度。

 

这样,通过使用编辑列表、解码时间戳和合成时间戳就可以计算出MP4文件中每个轨道中流的同步关系。


文件存储结构:

 

MP4文件通过原子(atom)来组织数据。一个原子是一个容器

 

【ftyp原子容器】定义了文件的大小

 

所有媒体数据(AU)保存在【mdat的原子容器】当中

 

元数据保存在【moov原子容器】当中

 

【trak原子容器】定义了一些有关轨道的辅助信息

 

【iods】原子容器保存初始化对象描述符(Initial Object Descriptor,IOD)该对象通过ES_ID指向基本流

 

参考文献:

《基于对象的MPEG-4文件格式研究》

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值