型的 ,9 ,作为 & 格式的标志并包含关于文件的一些信息;之后会有且只有一个“99N
类型的 ,9 (&949 ),它是一种 9<8<*,9 ,子 ,9 包含了媒体的 88 信息;
& 文件的媒体数据包含在“8N类型的 ,9 (&849 )中,该类型的 ,9 也是
9<8<*,9 ,可以有多个,也可以没有(当媒体数据全部引用其他文件时),媒体数据的
结构由 88 进行描述。
下面是一些概念:
文件,由许多 49 和 6;--49 组成。
49 ,每个 49 由 $* 和 8 组成。
6;--49 ,是 49 的扩展,49 结构的基础上在 $* 中增加 ,81*19< 和 ,81
O1。
$*,包含了整个 49 的长度 1I 和类型 8?。当 1IPP 时,代表这是文件中
最后一个 49 ;当 1IPP 时,意味着 49 长度需要更多 ,81 来描述,在后面会定
义一个 ,81 的 -*1I 描述 49 的长度;当 8? 是 ;; 时,代表 49 中的数据
是用户自定义扩展类型。
8,是 49 的实际数据,可以是纯数据也可以是更多的子 49 1。 当一个 49
的 8 中是一系列子 49 时,这个 49 又可成为 9<8<*49 。
8*E表示一些 1- 的集合,对于媒体数据来说,8*E 表示一个视频或音频序
列。
!<88*E这个特殊的 8*E 并不包含媒体数据,而是包含了一些将其他数据 8*E
打包成流媒体的指示信息。
1-对于非 !<88*E 来说,91- 即为一帧视频,或一组连续视频帧,
;91- 即为一段连续的压缩音频,它们统称 1-。对于 !<8
8*E,1- 定义一个或多个流媒体包的格式。
1-8,-指明 1 时序和物理布局的表。
!;<E一个 8*E 的几个 1- 组成的单元。
在本文中,我们不讨论涉及 !<8 的内容,只关注包含媒体数据的本地 & 文件。下图
为一个典型的 & 文件的结构树
2.2. Box
首 先 需 要 说 明 的 是 ,,9 中 的 字 节 序 为 网 络 字 节 序 , 也就 是 大 端 字 节序 ( 40
'<<),简单的说,就是一个 位的 字节整数存储方式为高位字节在内存的低端 。
49 由 !* 和 ,9? 组成,其中 !* 统一指明 ,9 的大小和类型,,9? 根据类型有不
同的意义和格式。
标准的 ,9 开头的 个字节( 位)为 ,9 1I,该大小包括 ,9 !* 和 ,9 ,9? 整
个 ,9 的大小,这样我们就可以在文件中定位各个 ,9 。如果 1I 为 ,则表示这个 ,9 的