11.8 微软高级流格式ASF简介
--Microsoft公司的Windows Media的核心是ASF(Advanced Stream Format)。微软将ASF 定义为同步媒体的统一容器文件格式。ASF是一种数据格式,音频、视频、图像以及控制命令脚本等多媒体信息通过这种格式,以网络数据包的形式传输,实现流式多媒体内容发布。
ASF最大优点就是体积小,因此适合网络传输,使用微软公司的最新媒体播放器(Microsoft Windows Media Player)可以直接播放该格式的文件。用户可以将图形、声音和动画数据组合成一个ASF格式的文件,当然也可以将其他格式的视频和音频转换为ASF格式,而且用户还可以通过声卡和视频捕获卡将诸如麦克风、录像机等等外设的数据保存为ASF格式。另外,ASF格式的视频中可以带有命令代码,用户指定在到达视频或音频的某个时间后触发某个事件或操作。
11.8.1 ASF的特征
可扩展的媒体类型- ASF文件允许制作者很容易地定义新的媒体类型。ASF格式提供了非常有效的灵活地定义符合ASF文件格式定义的新的媒体流类型。任一存储的媒体流逻辑上都是独立于其他媒体流的,除非在文件头部分明显地定义了其与另一媒体流的关系。
部件下载-特定的有关播放部件的信息(如,解压缩算法和播放器)能够存储在ASF 文件头部分,这些信息能够为客户机用来找到合适的所需的播放部件的版本---如果它们没有在客户机上安装。
可伸缩的媒体类型- ASF是设计用来表示可伸缩的媒体类型的"带宽"之间的依赖关系。ASF存储各个带宽就像一个单独的媒体流。媒体流之间的依赖关系存储在文件头部分,为客户机以一个独立于压缩的方式解释可伸缩的选项提供了丰富的信息流的优先级化- 现代的多媒体传输系统能够动态地调整以适应网络资源紧张的情况(如,带宽不足)。多媒体内容的制作者要能够根据流的优先级表达他们的参考信息,如最低保证音频流的传输。随着可伸缩媒体类型的出现,流的优先级的安排变得复杂起来,因为在制作的时候很难决定各媒体流的顺序。ASF允许内容制作者有效地表达他们的意见(有关媒体的优先级),甚至在可伸缩的媒体类型出现的情况下也可以.
多语言- ASF设计为支持多语言。媒体流能够可选地指示所含媒体的语言。这个功能常用于音频和文本流。一个多语言ASF文件指的是包含不同语言版本的同一内容的一系列媒体流,其允许客户机在播放的过程中选择最合适的版本。
目录信息- ASF提供可继续扩展的目录信息的功能,该功能的扩展性和灵活性都非常好。所有的目录信息都以无格式编码的形式存储在文件头部分,并且支持多语言,如果需要,目录信息既可预先定义(如,作者和标题),也可以是制作者自定义。目录信息功能既可以用于整个文件也可以用于单个媒体流。
11.8.2 ASF文件格式
11.8.2.1 ASF 对象定义
ASF文件基本的组织单元叫做ASF 对象,它是由一个128位的全球唯一的对象标识符(Object ID),一个64位整数的对象大小(Object Size)和一个可变长的对象数据(Object Data)组成。对象大小域的值是由对象数据的大小加上24比特之和。
图11.8 ASF对象
这个文件组织单元有点类似于RIFF(Resource Interchange File Format)字节片。RIFF字节片时AVI和WAV文件的基本单位。ASF对象在两个方面改进了RIFF的设计。首先,无需一个权威机构来管理对象标识符系统,因为计算机网卡能够产生一个有效的唯一的GUID。其次,对象大小字段已定义得足够处理高带宽多媒体内容的大文件。
11.8.2.2 高层文件结构
ASF文件逻辑上是由三个高层对象组成:头对象(Header Object)、数据对象(Data Object)和索引对象(Index Object).。头对象是必需的并且必须放在每一个ASF文件的开头部分,数据对象也是必需的,且一般情况下紧跟在头对象之后。索引对象是可选的,但是一般推荐使用。
图11.9 高层ASF文件结构
在具体实现过程中可能会出现一些文件包含无序的(Out-Of-Order)的对象,ASF也支持,但在特定情况下,将导致ASF 文件不能使用,如从特定的文件源如HTTP服务器读取该类ASF文件。同样地,额外的高层对象也可能被运用并加入到ASF文件中。一般推荐这些另加的对象跟在索引对象之后。
ASF数据对象能够被解释的一个前提条件是头对象已被客户机接收到。ASF没有声明头对象信息是如何到达客户端的,"到达机制"是一个"本地实现问题",显然已超过了ASF 的定义范围。头对象先于数据对象到达有三种方式:
包含头对象的信息作为"会话声明"的一部分。
利用一个与数据对象不同的"通道"发送头对象。
在发送ASF 数据对象之前发送头对象。
11.8.2.2.1 ASF 头对象
在ASF的三个高层对象中,头对象是唯一包含其他ASF 对象的对象。头对象可能包含一下对象:
文件属性对象(File Properties Object)----全局文件属性。
流属性对象(Stream Properties Object)----定义一个媒体流和其属性。
内容描述对象(Content Description Object)----包含所有目录信息。
部件下载对象(Component Download Object)----提供播放部件信息。
流组织对象(Stream Groups Object)----逻辑上把多个媒体流组织在一起。
可伸缩对象(Scalable Object)----定义媒体流之间的可伸缩的关系。
优先级对象(Prioritization Object)----定义相关流的优先级。
相互排斥对象(Mutual Exclusion Object)----定义排斥关系如语言选择。
媒体相互依赖对象(Inter-Media Dependency Object)----定义混合媒体流之间的相互依赖关系。
级别对象(Rating Object)----根据W3C PICS定义文件的级别。
索引参数对象(Index Parameters Object)----提供必要的信息以重建ASF文件的索引。
图11.10 ASF 头对象
头对象的作用是在ASF文件的开始部分提供一个众所周知的比特序列,并且包含所有其它头对象信息。头对象提供了存储在数据对象中的多媒体数据的全局的信息。
11.8.2.2.2 ASF数据对象
数据对象包含一个ASF 文件的所有多媒体数据。多媒体数据以ASF数据单元的形式存储,每一个ASF数据单元都是可变长的,且包含的数据必须是同一种媒体流。数据单元在当它们开始传输的时候在数据对象中自动地排序,这种排序来自于交叉存储的文件格式。
11.8.2.2.3 ASF索引对象
ASF索引对象包含一个嵌入ASF文件的多媒体数据的基于时间的索引。每以索引进入表现的时间间隔是在制作时设置的,并且存储在索引对象中。由于没有必要为一个文件的每一个媒体流建立一个索引,因此,通常利用一个时间间隔列表来索引一系列的媒体流。
|-page-|
110.8 RealSystem的RealMedia文件格式
RealNetworks公司的RealMedia包括RealAudio、RealVideo和RealFlash三类文件,其中RealAudio用来传输接近CD音质的音频数据,RealVideo用来传输不间断的视频数据,RealFlash则是RealNetworks公司与Macromedia公司新近联合推出的一种高压缩比的动画格式RealMedia文件格式的引入了,它使得RealSystem可以通过各种网络传送高质量的多媒体内容。第三方开发者可以通过RealNetworks公司提供的SDK将它们的媒体格式转换成RealMedia文件格式。
10.8.1加标志的文件格式
RealMedia文件格式是标准的标志文件格式,它使用四字符编码来标识文件元素。组成RealMedia文件的基本部件是块(chunk),它是数据的逻辑单位,如流的报头,或一个数据包。每个块包括下面的字段:
指明块标识符的四字符编码
块中限定数据大小的32位数值。
数据块部分
依类型的不同,上层的块可以包含子对象。
图10- RealMedia文件块示意图
10.8.2 报头部分
因为RealMedia 文件格式是一种加标志的文件格式,块的顺序没有明确规定,但RealMedia 文件报头必须是文件的第一个块。一般情况下,RealMedia 的报头部分有下面四种:
RealMedia文件报头 (RealMedia文件的第一个块)
属性报头(Properties Header )
媒体属性报头(Media Properties Header )
内容描述报头(Content Description Header )
RealMedia 文件报头以后,其它报头的出现可以任何次序。
10.8.3 数据部分(Data Section)
RealMedia 文件的数据部分由数据部分报头和后面排列的媒体数据包组成。数据块报头标志数据块的开始,媒体数据包是流媒体数据的数据包。
10.8.4索引部分(Index Section)
RealMedia 文件的索引部分由描述索引区内容的索引块报头和一串索引记录组成。
|-page-|
12.5 QuickTime电影(Movie)文件格式
Apple公司的QuickTime电影文件现已成为是数字媒体领域的工业标准。 QuickTime电影文件格式定义了存储数字媒体内容的标准方法,使用这种文件格式不仅可以存储单个的媒体内容(如视频帧或音频采样),而且能保存对该媒体作品的完整描述;QuickTime文件格式被设计用来适应为与数字化媒体一同工作需要存储的各种数据。因为这种文件格式能用来描述几乎所有的媒体结构,所以它是应用程序间(不管运行平台如何)交换数据的理想格式。QuickTime文件格式中媒体描述和媒体数据是分开存储的,媒体描述或元数据(meta-data)叫做电影(movie),包含轨道数目、视频压缩格式和时间信息。同时movie包含媒体数据存储区域的索引。媒体数据是所有的采样数据,如视频帧和音频采样,媒体数据可以与QuickTime movie存储在同一个文件中,也可以在一个单独的文件或者在几个文件中。
12.5.1 基本概念
QuickTime 使用两种基本结构存储信息:标准原子(classic atoms) 和 QT原子(QT atoms),标准原子是简单原子,QT原子是原子容器原子,允许建立复杂的分层结构。QuickTime atom containers 提供在QuickTime 中存储信息的基本结构,它是QT atoms 的树型分层结构。
12.5.1.1 原子(Atoms) 1
QuickTime 文件的基本数据单元是原子(atom),每个原子包含数据及数据的大小和数据类型信息。原子包含报头和原子数据,报头允许小型尺度或扩展尺度的数据,多数原子使用小型尺度(32位),通常只有媒体数据原子需要64位大小。
图12-5 QuickTime扩展尺寸原子
12.5.1.2 QuickTime 原子容器(Atom Containers)
QuickTime atom container是QuickTime文件中存储信息的基本结构,一个原子容器是QT atom的属性分层结构。如图12-6所示:每个 QT atom 包含数据或其它原子。如果一个原子包含其它原子,它就是父原子(parent atom),被包含的原子叫子原子(child atoms)。每个父原子的子原子由atom type 和atom ID惟一地标识。 包含数据的 QT atom 叫页原子(leaf atom).
图12-6 有父原子和子原子的原子容器
12.5.2 QuickTime File结构
QuickTime文件简单地说就是一群原子的集合, 对原子的次序没有规定。如图所示:
图12-7 QuickTime 文件结构
文件系统支持文件扩展名,QuickTime文件扩展名通常是 .mov 。在 Macintosh 平台上,QuickTime文件类型是MooV 。在因特网上, QuickTime 文件由mime 型 "video/quicktime" 来提供服务。
12.5.2.1 QuickTime movie
QuickTime movie atoms 的原子类型为 ´moov´ 。它是其它类型的容器,依层类推,它包含轨道原子( track atoms),而轨道原子又包含媒体原子(media atoms),最底层是页原子(leaf atoms),包含实际数据。
Movie有一个或多个轨道组成,每个轨道都独立于其它轨道,轨道提供一种强大、灵活的结构,使用它可以精确地控制产生复杂的交互电影。每个轨道都代表了一个独特的随时间变化的功能或方面。一个单个movie 可以有许多不同的轨道类型,包括video, audio, text, sprite, Flash, HREF, hinting, QuickTime VR和 chapter divisions。例:
Movie track-包含整个movie的版权、注释及其它概要信息
Video track-数字化视频、着色的3D动画或其他编辑图像的序列,和可选特殊效果。
Text track--输入到QuickTime中的标题、 片头字幕等字符信息。
Hint track-包含允许流服务器通过实时流方式传输媒体轨道的信息。
Movies、tracks和 media 之间的基本关系如下图所示:
图12-8 包含三个轨道的movie文件
上图所示movie包含三个轨道:video、 music、text,轨道中显示的资料包含在媒体结构中。QuickTime movies 在时间轴上组织媒体,它把movies和媒体数据结构作为普通的时间存在锚在时间坐标系上。
--Microsoft公司的Windows Media的核心是ASF(Advanced Stream Format)。微软将ASF 定义为同步媒体的统一容器文件格式。ASF是一种数据格式,音频、视频、图像以及控制命令脚本等多媒体信息通过这种格式,以网络数据包的形式传输,实现流式多媒体内容发布。
ASF最大优点就是体积小,因此适合网络传输,使用微软公司的最新媒体播放器(Microsoft Windows Media Player)可以直接播放该格式的文件。用户可以将图形、声音和动画数据组合成一个ASF格式的文件,当然也可以将其他格式的视频和音频转换为ASF格式,而且用户还可以通过声卡和视频捕获卡将诸如麦克风、录像机等等外设的数据保存为ASF格式。另外,ASF格式的视频中可以带有命令代码,用户指定在到达视频或音频的某个时间后触发某个事件或操作。
11.8.1 ASF的特征
可扩展的媒体类型- ASF文件允许制作者很容易地定义新的媒体类型。ASF格式提供了非常有效的灵活地定义符合ASF文件格式定义的新的媒体流类型。任一存储的媒体流逻辑上都是独立于其他媒体流的,除非在文件头部分明显地定义了其与另一媒体流的关系。
部件下载-特定的有关播放部件的信息(如,解压缩算法和播放器)能够存储在ASF 文件头部分,这些信息能够为客户机用来找到合适的所需的播放部件的版本---如果它们没有在客户机上安装。
可伸缩的媒体类型- ASF是设计用来表示可伸缩的媒体类型的"带宽"之间的依赖关系。ASF存储各个带宽就像一个单独的媒体流。媒体流之间的依赖关系存储在文件头部分,为客户机以一个独立于压缩的方式解释可伸缩的选项提供了丰富的信息流的优先级化- 现代的多媒体传输系统能够动态地调整以适应网络资源紧张的情况(如,带宽不足)。多媒体内容的制作者要能够根据流的优先级表达他们的参考信息,如最低保证音频流的传输。随着可伸缩媒体类型的出现,流的优先级的安排变得复杂起来,因为在制作的时候很难决定各媒体流的顺序。ASF允许内容制作者有效地表达他们的意见(有关媒体的优先级),甚至在可伸缩的媒体类型出现的情况下也可以.
多语言- ASF设计为支持多语言。媒体流能够可选地指示所含媒体的语言。这个功能常用于音频和文本流。一个多语言ASF文件指的是包含不同语言版本的同一内容的一系列媒体流,其允许客户机在播放的过程中选择最合适的版本。
目录信息- ASF提供可继续扩展的目录信息的功能,该功能的扩展性和灵活性都非常好。所有的目录信息都以无格式编码的形式存储在文件头部分,并且支持多语言,如果需要,目录信息既可预先定义(如,作者和标题),也可以是制作者自定义。目录信息功能既可以用于整个文件也可以用于单个媒体流。
11.8.2 ASF文件格式
11.8.2.1 ASF 对象定义
ASF文件基本的组织单元叫做ASF 对象,它是由一个128位的全球唯一的对象标识符(Object ID),一个64位整数的对象大小(Object Size)和一个可变长的对象数据(Object Data)组成。对象大小域的值是由对象数据的大小加上24比特之和。
图11.8 ASF对象
这个文件组织单元有点类似于RIFF(Resource Interchange File Format)字节片。RIFF字节片时AVI和WAV文件的基本单位。ASF对象在两个方面改进了RIFF的设计。首先,无需一个权威机构来管理对象标识符系统,因为计算机网卡能够产生一个有效的唯一的GUID。其次,对象大小字段已定义得足够处理高带宽多媒体内容的大文件。
11.8.2.2 高层文件结构
ASF文件逻辑上是由三个高层对象组成:头对象(Header Object)、数据对象(Data Object)和索引对象(Index Object).。头对象是必需的并且必须放在每一个ASF文件的开头部分,数据对象也是必需的,且一般情况下紧跟在头对象之后。索引对象是可选的,但是一般推荐使用。
图11.9 高层ASF文件结构
在具体实现过程中可能会出现一些文件包含无序的(Out-Of-Order)的对象,ASF也支持,但在特定情况下,将导致ASF 文件不能使用,如从特定的文件源如HTTP服务器读取该类ASF文件。同样地,额外的高层对象也可能被运用并加入到ASF文件中。一般推荐这些另加的对象跟在索引对象之后。
ASF数据对象能够被解释的一个前提条件是头对象已被客户机接收到。ASF没有声明头对象信息是如何到达客户端的,"到达机制"是一个"本地实现问题",显然已超过了ASF 的定义范围。头对象先于数据对象到达有三种方式:
包含头对象的信息作为"会话声明"的一部分。
利用一个与数据对象不同的"通道"发送头对象。
在发送ASF 数据对象之前发送头对象。
11.8.2.2.1 ASF 头对象
在ASF的三个高层对象中,头对象是唯一包含其他ASF 对象的对象。头对象可能包含一下对象:
文件属性对象(File Properties Object)----全局文件属性。
流属性对象(Stream Properties Object)----定义一个媒体流和其属性。
内容描述对象(Content Description Object)----包含所有目录信息。
部件下载对象(Component Download Object)----提供播放部件信息。
流组织对象(Stream Groups Object)----逻辑上把多个媒体流组织在一起。
可伸缩对象(Scalable Object)----定义媒体流之间的可伸缩的关系。
优先级对象(Prioritization Object)----定义相关流的优先级。
相互排斥对象(Mutual Exclusion Object)----定义排斥关系如语言选择。
媒体相互依赖对象(Inter-Media Dependency Object)----定义混合媒体流之间的相互依赖关系。
级别对象(Rating Object)----根据W3C PICS定义文件的级别。
索引参数对象(Index Parameters Object)----提供必要的信息以重建ASF文件的索引。
图11.10 ASF 头对象
头对象的作用是在ASF文件的开始部分提供一个众所周知的比特序列,并且包含所有其它头对象信息。头对象提供了存储在数据对象中的多媒体数据的全局的信息。
11.8.2.2.2 ASF数据对象
数据对象包含一个ASF 文件的所有多媒体数据。多媒体数据以ASF数据单元的形式存储,每一个ASF数据单元都是可变长的,且包含的数据必须是同一种媒体流。数据单元在当它们开始传输的时候在数据对象中自动地排序,这种排序来自于交叉存储的文件格式。
11.8.2.2.3 ASF索引对象
ASF索引对象包含一个嵌入ASF文件的多媒体数据的基于时间的索引。每以索引进入表现的时间间隔是在制作时设置的,并且存储在索引对象中。由于没有必要为一个文件的每一个媒体流建立一个索引,因此,通常利用一个时间间隔列表来索引一系列的媒体流。
|-page-|
110.8 RealSystem的RealMedia文件格式
RealNetworks公司的RealMedia包括RealAudio、RealVideo和RealFlash三类文件,其中RealAudio用来传输接近CD音质的音频数据,RealVideo用来传输不间断的视频数据,RealFlash则是RealNetworks公司与Macromedia公司新近联合推出的一种高压缩比的动画格式RealMedia文件格式的引入了,它使得RealSystem可以通过各种网络传送高质量的多媒体内容。第三方开发者可以通过RealNetworks公司提供的SDK将它们的媒体格式转换成RealMedia文件格式。
10.8.1加标志的文件格式
RealMedia文件格式是标准的标志文件格式,它使用四字符编码来标识文件元素。组成RealMedia文件的基本部件是块(chunk),它是数据的逻辑单位,如流的报头,或一个数据包。每个块包括下面的字段:
指明块标识符的四字符编码
块中限定数据大小的32位数值。
数据块部分
依类型的不同,上层的块可以包含子对象。
图10- RealMedia文件块示意图
10.8.2 报头部分
因为RealMedia 文件格式是一种加标志的文件格式,块的顺序没有明确规定,但RealMedia 文件报头必须是文件的第一个块。一般情况下,RealMedia 的报头部分有下面四种:
RealMedia文件报头 (RealMedia文件的第一个块)
属性报头(Properties Header )
媒体属性报头(Media Properties Header )
内容描述报头(Content Description Header )
RealMedia 文件报头以后,其它报头的出现可以任何次序。
10.8.3 数据部分(Data Section)
RealMedia 文件的数据部分由数据部分报头和后面排列的媒体数据包组成。数据块报头标志数据块的开始,媒体数据包是流媒体数据的数据包。
10.8.4索引部分(Index Section)
RealMedia 文件的索引部分由描述索引区内容的索引块报头和一串索引记录组成。
|-page-|
12.5 QuickTime电影(Movie)文件格式
Apple公司的QuickTime电影文件现已成为是数字媒体领域的工业标准。 QuickTime电影文件格式定义了存储数字媒体内容的标准方法,使用这种文件格式不仅可以存储单个的媒体内容(如视频帧或音频采样),而且能保存对该媒体作品的完整描述;QuickTime文件格式被设计用来适应为与数字化媒体一同工作需要存储的各种数据。因为这种文件格式能用来描述几乎所有的媒体结构,所以它是应用程序间(不管运行平台如何)交换数据的理想格式。QuickTime文件格式中媒体描述和媒体数据是分开存储的,媒体描述或元数据(meta-data)叫做电影(movie),包含轨道数目、视频压缩格式和时间信息。同时movie包含媒体数据存储区域的索引。媒体数据是所有的采样数据,如视频帧和音频采样,媒体数据可以与QuickTime movie存储在同一个文件中,也可以在一个单独的文件或者在几个文件中。
12.5.1 基本概念
QuickTime 使用两种基本结构存储信息:标准原子(classic atoms) 和 QT原子(QT atoms),标准原子是简单原子,QT原子是原子容器原子,允许建立复杂的分层结构。QuickTime atom containers 提供在QuickTime 中存储信息的基本结构,它是QT atoms 的树型分层结构。
12.5.1.1 原子(Atoms) 1
QuickTime 文件的基本数据单元是原子(atom),每个原子包含数据及数据的大小和数据类型信息。原子包含报头和原子数据,报头允许小型尺度或扩展尺度的数据,多数原子使用小型尺度(32位),通常只有媒体数据原子需要64位大小。
图12-5 QuickTime扩展尺寸原子
12.5.1.2 QuickTime 原子容器(Atom Containers)
QuickTime atom container是QuickTime文件中存储信息的基本结构,一个原子容器是QT atom的属性分层结构。如图12-6所示:每个 QT atom 包含数据或其它原子。如果一个原子包含其它原子,它就是父原子(parent atom),被包含的原子叫子原子(child atoms)。每个父原子的子原子由atom type 和atom ID惟一地标识。 包含数据的 QT atom 叫页原子(leaf atom).
图12-6 有父原子和子原子的原子容器
12.5.2 QuickTime File结构
QuickTime文件简单地说就是一群原子的集合, 对原子的次序没有规定。如图所示:
图12-7 QuickTime 文件结构
文件系统支持文件扩展名,QuickTime文件扩展名通常是 .mov 。在 Macintosh 平台上,QuickTime文件类型是MooV 。在因特网上, QuickTime 文件由mime 型 "video/quicktime" 来提供服务。
12.5.2.1 QuickTime movie
QuickTime movie atoms 的原子类型为 ´moov´ 。它是其它类型的容器,依层类推,它包含轨道原子( track atoms),而轨道原子又包含媒体原子(media atoms),最底层是页原子(leaf atoms),包含实际数据。
Movie有一个或多个轨道组成,每个轨道都独立于其它轨道,轨道提供一种强大、灵活的结构,使用它可以精确地控制产生复杂的交互电影。每个轨道都代表了一个独特的随时间变化的功能或方面。一个单个movie 可以有许多不同的轨道类型,包括video, audio, text, sprite, Flash, HREF, hinting, QuickTime VR和 chapter divisions。例:
Movie track-包含整个movie的版权、注释及其它概要信息
Video track-数字化视频、着色的3D动画或其他编辑图像的序列,和可选特殊效果。
Text track--输入到QuickTime中的标题、 片头字幕等字符信息。
Hint track-包含允许流服务器通过实时流方式传输媒体轨道的信息。
Movies、tracks和 media 之间的基本关系如下图所示:
图12-8 包含三个轨道的movie文件
上图所示movie包含三个轨道:video、 music、text,轨道中显示的资料包含在媒体结构中。QuickTime movies 在时间轴上组织媒体,它把movies和媒体数据结构作为普通的时间存在锚在时间坐标系上。