MP4文件格式详解——文件类型ftyp
2016-05-31 14:03
459 查看
ISO 14496 - 12 定义了一种封装媒体数据的基础文件格式,mp4、3gp、ismv等我们常见媒体封装格式都是以这种基础文件格式为基础衍生的。
本系列文档从MP4文件入手,对文件中重要的box进行解析。
<======================================================================>
本次解析ftyp box
[cpp] view plaincopyprint?
aligned(8) class FileTypeBox extends Box(‘ftyp’)
{
unsigned int(32) major_brand;
unsigned int(32) minor_version;
unsigned int(32) compatible_brands[]; // to end of the box
}
什么是brands?官方是这样描述的:
Each brand is a printable four-character code, registered with ISO, that identifies a precise specification.//在ISO注册的4个字符。
下表来源于网络,列出了几种常见的基于基础文件格式的,媒体封装格式标识。
更多的内容可以查看http://www.ftyps.com/
结合实际文件,下图是MP4文件起始位置存放的数据
length(4字节):0x0000001c:box的长度是28字节;
boxtype(4字节):0x66747970:“ftyp”的ASCII码,box的标识;
major_brand(4字节):0x69736f6d:“isom“的ASCII码;
minor_version(4字节):0x00000200:ismo的版本号;
compatible_brands(12字节):说明本文件遵从(或称兼容)ismo,iso2,mp41三种协议。
ftyp box通常放在文件的开始,通过对该box解析可以让我们的软件(播放器、demux、解析器)知道应该使用哪种协议对这该文件解析,是后续解读文件基础。
本系列文档从MP4文件入手,对文件中重要的box进行解析。
<======================================================================>
本次解析ftyp box
[cpp] view plaincopyprint?
aligned(8) class FileTypeBox extends Box(‘ftyp’)
{
unsigned int(32) major_brand;
unsigned int(32) minor_version;
unsigned int(32) compatible_brands[]; // to end of the box
}
什么是brands?官方是这样描述的:
Each brand is a printable four-character code, registered with ISO, that identifies a precise specification.//在ISO注册的4个字符。
下表来源于网络,列出了几种常见的基于基础文件格式的,媒体封装格式标识。
更多的内容可以查看http://www.ftyps.com/
Brand | Extension | Mime Type | |
MP4 | mp41, mp42 | .mp4 | video/mp4, audio/mp4, application/mp4 |
3GPP | various, e.g. 3gp4, 3gp5 | .3gp | video/3gpp, audio/3gpp |
3GPP2 | 3g2a | .3g2 | video/3gpp2, audio/3gpp2 |
Motion JPEG 2000 | mjp2 | .mj2 | video/mj2 |
QuickTime | "qt" | .mov | video/quicktime |
length(4字节):0x0000001c:box的长度是28字节;
boxtype(4字节):0x66747970:“ftyp”的ASCII码,box的标识;
major_brand(4字节):0x69736f6d:“isom“的ASCII码;
minor_version(4字节):0x00000200:ismo的版本号;
compatible_brands(12字节):说明本文件遵从(或称兼容)ismo,iso2,mp41三种协议。
ftyp box通常放在文件的开始,通过对该box解析可以让我们的软件(播放器、demux、解析器)知道应该使用哪种协议对这该文件解析,是后续解读文件基础。
相关文章推荐
- OC语言11-类的深入和分类
- LightOJ 1294:Positive Negative Sign
- 有趣的数列 [Codevs 2337,Bzoj 1485,HNOI2009]
- 矩阵乘法中的高阶计算时间和计算误差问题
- linux查找目录下的所有文件中是否含有某个字符串
- bootstrap css布局
- 机器学习博客
- 关于SignalA Android端断网崩溃问题的处理
- HashMap TreeMap LinkedMap HashTable
- Ant自动编译打包&发布 android项目
- 4000 .vimrc 配置
- Tomcat部署Web应用方法总结
- ReSharper 配置及用法
- 待整理
- iOS开发经验总结
- Hello word.
- Ubuntu10.04各文件夹的作用
- owlBus / uwp 下架
- alsa架构分析
- View的事件体系基础知识