Peter Lee 2008-06-14
一、简介
QuickTime是Apple公司开发的一套完整的多媒体平台架构,可以用来进行多种媒体的创建,生产,和分发,并为这一过程提供端到端的支持:包括媒体的实时捕捉,以编程的方式合成媒体,导入和导出现有的媒体,还有编辑和制作,压缩,分发,以及用户回放等多个环节。QuickTime文件格式是QuickTime整个架构体系中的一环,非常基础和重要的一环。QuickTime的多媒体架构应用于Mac OS和Windows系统上,而QuickTime文件格式是平台无关的,可以应用于各类系统。常见的采用QuickTime文件格式的扩展名有:mov, qt, mp4, m4v, m 4a , m4p, m4b等。
二、原子
原子是QuickTime用来构建等级数据结构的基本容器。新创建的QuickTime原子就象树的根。随后的每个原子都包含在其中并且包含数据和其它原子。如果一个QuickTime原子包含其它原子,就被叫做父原子,包含在其中的原子就叫做叶原子。
1、简单原子
原子包含一个原子头,原子头后面是原子数据。原子头包含原子的尺寸和类型字段,用于表示原子的字节尺寸和类型信息;它还可能包含一个扩展的尺寸字段,该字段以64位整数的形式给出了一个大原子的尺寸。原子结构如图1所示。
图1 原子结构图
2、QT原子
原子的特点是:简单、抽象。QuickTime文件格式中的所有数据及信息都可以用原子和原子之间的嵌套关系来表达。然而,基本原子的缺点是,当应用程序遇到未知的原子类型(atom type)时,将无法确认该原子是否有下一级的子原子,此种情况下,应用程序即使对子原子类型是已知的,也无法进行解析。
QT原子是一种增强了的数据结构,它提供了一种更加通用的存储格式,并且消除了一些在使用简单原子时会出现的不明确的地方。QT原子中,根原子atom type项统一设置为“sean
”。QT原子在简单原子的基础上,增加了原子ID和子原子数目。QT原子的结构如下图2所示。
图 2 QT 原子结构图
3、常见的顶层原子类型
· 'moov'
· 'mdat'
· 'free'
· 'junk'
· 'pnot'
· 'skip'
· 'wide'
· 'pict'
· 'ftyp'
· 'uuid' : Used by Sony's MSNV brand of MP4
三、文件结构实例解析
图3所示的是,用MovSpot对一个3gp文件分析得到的树状结构图。图3中,ftyp指示了文件类型信息,mdat包含了媒体数据信息,moov是movie atom,包含了track, video ,audio等一系列的头信息。
图3 QuickTime文件结构示例
2、Movie Atom
Movie atom是非常重要的一个原子,其结构示例如图4所示,我们可以将图3的层次图与图4进行对照分析。
图4 movie atom结构示例
四、相关资料
1、文档资料
Quicktime Wiki资料,简洁明了
http://wiki.multimedia.cx/index.php?title=QuickTime_container
Quicktime开发者站点的官方网站,英文资料,可以下载到相应的pdf文档。
http://developer.apple.com/documentation/QuickTime/QTFF/QTFFPreface/chapter_1_section_1.html
Quicktime开发者站点中文站,可以看到中文的资料,不过更新时间很早了 2001-03-01 ,翻译的也不专业。
http://developer.apple.com.cn/Documentation/QuickTime/QTFF/index.html
2、分析工具
MovSpot.exe
http://blog.csdn.net/sunshine1314/archive/2007/09/22/1795739.aspx
3、相关源码
Bento4 MP4 Class Library/SDK
http://bento4.sourceforge.net/