Fragmented MP4文件格式

MP4文件的基本单元是“box”,这些box既可以包括data,也可以包括metadata。MP4文件标准允许多种方式来组织data box和metadata box。将metadata放在data之前,客户端应用程序可以在播放video/audio之前获得更多的关于video/audio的信息,因此这种方式在大多数的多媒体应用场景都是比较有用的。但是,在流媒体应用场景,不可能预先保存关于整个流数据的metadata信息,因为不可能提前完全知道。而且,预先保存的metadata越少就意味着越少的开销,因此也可以缩短启动时间。

MP4 ISO Base Media文件格式标准允许以fragmented方式组织box,这也就意味着MP4文件可以组织成这样的结构,由一系列的短的metadata/data box对组成,而不是一个长的metadata/data对。Fragmented MP4文件结构如图1所示,图中只给出了两个fragments。


图1 Fragmented MP4文件结构

在Fragmented MP4文件中都有三个非常关键的boxes:‘moov’、‘moof’和‘mdat’。

(1)‘moov’(movie metadata box)

和普通MP4文件的‘moov’一样,包含了file-level的metadata信息,用来描述file。

(2)‘mdat’(media data box)

和普通MP4文件的‘mdat’一样,用于存放媒体数据,不同的是普通MP4文件只有一个‘mdat’box,而Fragmented MP4文件中,每个fragment都会有一个‘mdat’类型的box。

(3)‘moof’(movie fragment box)

该类型的box存放的是fragment-level的metadata信息,用于描述所在的fragment。该类型的box在普通的MP4文件中是不存在的,而在Fragmented MP4文件中,每个fragment都会有一个‘moof’类型的box。

一个‘moof’和一个‘mdat’组成Fragmented MP4文件的一个fragment,这个fragment包含一个video track或audio track,并且包含足够的metadata以保证这部分数据可以单独解码。Fragment的结构如图2所示。


图2 Fragment的结构

上面两张图片来自http://alexzambelli.com/blog/2009/02/10/smooth-streaming-architecture

图3是用MP4Info工具查看的一个Fragmented MP4文件的结构,该文件是通过MP4Box工具,通过下面的一个命令转化出来的一个文件。图4是与之对应的普通的MP4文件结构。

#MP4Box -dash 500000 -frag 50000 -rap file_name.mp4

由于设置的时间参数较大,因此得到的Fragmented MP4文件中仅仅包含四个fragments(每个fragment由一对‘moof’和‘mdat’组成)。


图3 MP4Info显示的Fragmented MP4文件结构


图4 MP4Info显示的普通MP4文件结构

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值