Fragmented MP4文件格式
来源:互联网 发布:北京启凡网络 编辑:程序博客网 时间:2024/04/29 23:55
Fragmented MP4文件格式
工具有mp4info, isoviewer 等等可以查看box。
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文件结构
- Fragmented MP4文件格式
- Fragmented MP4文件格式
- Fragmented MP4文件格式
- Fragmented MP4文件格式
- Fragmented MP4文件格式
- Fragmented MP4 vs. MPEG2-TS
- Fragmented MP4方案的优势
- Fragmented MP4方案的优势
- Fragmented MP4方案的优势
- Fragmented MP4方案的优势
- Fragmented MP4方案的优势
- ffmpeg 转换x264到Fragmented MP4
- MP4文件格式
- MP4文件格式
- MP4文件格式
- Mp4 文件格式
- MP4 文件格式
- MP4文件格式
- Android仿微信下拉列表实现(附源码)
- 错误:检查您是否使用了第三方源。如果是就禁用它们,它们常常导致问题。然后在终端中运行以下命令:apt-get install -f
- js的Date应用
- cuda-convnet2与caffe对比
- 离散正(余)弦信号的时域与FFT变换后所得频域之间的关系(幅值和相角)
- Fragmented MP4文件格式
- iOS搜索框UISearchBar
- struts2
- 由于没有远程桌面授权服务器可以提供许可证,远程会话被中断。
- ISO8583报文工具类(组装和解析报文)
- python 动态获取对象的属性和方法,并执行它们
- [JAVA web]PermGen space错误,Target runtime Tomcat 7.0 is not defined,EntityManager方法简介
- linux下获取设置ip地址等函数
- 如何灵活使用 ActionBar, Google 音乐ActionBar 隐藏和显示效果