什么是ASF ASF优势 体积小,适合网络传输。 ASF特点 可扩展的媒体类型- ASF文件允许制作者很容易地定义新的媒体类型。ASF格式提供了非常有效的灵活地定义符合ASF文件格式定义的新的媒体流类型。任一存储的媒体流逻辑上都是独立于其他媒体流的,除非在文件头部分明显地定义了其与另一媒体流的关系。
部件下载-特定的有关播放部件的信息(如,解压缩算法和播放器)能够存储在ASF 文件头部分,这些信息能够为客户机用来找到合适的所需的播放部件的版本---如果它们没有在客户机上安装。 可伸缩的媒体类型- ASF是设计用来表示可伸缩的媒体类型的\"带宽\"之间的依赖关系。ASF存储各个带宽就像一个单独的媒体流。媒体流之间的依赖关系存储在文件头部分,为客户机以一个独立于压缩的方式解释可伸缩的选项提供了丰富的信息流的优先级化- 现代的多媒体传输系统能够动态地调整以适应网络资源紧张的情况(如,带宽不足)。多媒体内容的制作者要能够根据流的优先级表达他们的参考信息,如最低保证音频流的传输。随着可伸缩媒体类型的出现,流的优先级的安排变得复杂起来,因为在制作的时候很难决定各媒体流的顺序。ASF允许内容制作者有效地表达他们的意见(有关媒体的优先级),甚至在可伸缩的媒体类型出现的情况下也可以. 多语言- ASF设计为支持多语言。媒体流能够可选地指示所含媒体的语言。这个功能常用于音频和文本流。一个多语言ASF文件指的是包含不同语言版本的同一内容的一系列媒体流,其允许客户机在播放的过程中选择最合适的版本。 目录信息- ASF提供可继续扩展的目录信息的功能,该功能的扩展性和灵活性都非常好。所有的目录信息都以无格式编码的形式存储在文件头部分,并且支持多语言,如果需要,目录信息既可预先定义(如,作者和标题),也可以是制作者自定义。目录信息功能既可以用于整个文件也可以用于单个媒体流。 ASF结构
![]() ASF由三个主要部分组成。Header Object ,Data Object ,Index Object。 Header object:主要描述了数据的一些信息。例如作者,曲目信息,用户加入的命令信息,码流的码率等信息。Header object里包含很多其他的子object。每个object相当于一个信息描述符。这些object由GUID来区分。 Data object:存储数据。 Index object:存放时间索引。有两种方式:simple index object和index object。 Header Object Header object的作用主要体现在以下个方面: l 在ASF文件开始提供了一个全局的GUID。 l 包含所有在data object中需要说明的信息。 l 在ASF的三层结构中,只有header object可以携带其他ASF objects。 File properties object:包含全局文件信息。 Stream properties object:定义了一个数字媒体码流和他的特征。 Header extension object:支持为一个ASF文件添加新功能,以便向后兼容。 Content Description Object:包含一些目录信息。 Script command object:包含一些用户的指令。这些指令可以在playback时候被执行。 Marker object:提供在一个文件内的指定的跳跃点。(jump points)
注意:1)在header object中的objects可以以任何的顺序排列。 2)在一个header object中必须包含一个file properties object,一个header extension object 和至少一个stream properties object。
Header Object 结构 ![]()
Object ID:16字节。值为:30 26 B2 75 8E 66 CF 11 A6 D9 00 AA 00 62 CE 6C Object size:8字节,描述了object总长度,包含16字节的ID和8字节的size。至少是30字节。 Number of header objects:描述了header object中包含的objects的个数。不包含本身,同时,header extension object只能算作一个object,这里的计数不包含header extension object中的subobjects。 Reserved1:忽略,固定值为0x1 Reserved2:忽略,固定值为0x2 Header Object 之 File properties object
![]()
Object ID:16字节唯一标识。A1 DC AB 8C 47 A9 CF 11 8E E4 00 C0 0C 20 53 65 注意:所有的ASF对象和语法(包含data packet headers)都是以little-endian字节序。但是ASF文件的data packet中包含的数字媒体流数据的字节序可以随意 ASF Data Object Data object:由ASF data packet组成。Data packet是一个定长的数据包。每一个数据包携带一个或多个数字媒体流。Data packet在data object中按照发送时间顺序保存。也就是一个data packet可能包含来自不同的码流的中的数据。Data packet通过entry objects来组织管理来自不同码流的数据。 Data packet:data object的组成单位。包含信息 l 一个data packet中一个或多个有效负载类型 l Data packet长度 l 时钟信息 l 附加的采样信息,例如时戳信息 Data Object structure ![]()
Object ID:16字节。36 26 B2 75 8E 66 CF 11 A6 D9 00 AA 00 62 CE 6C File ID:在一个ASF文件中唯一。当ASF文件修改时,这个值也会改变。这个值和Header Object中的一个File ID相同。 Total Data Packets:在一个Data Object中的ASF data packet 的个数。必须和File Properties object中的Data packet count的值相等。 Reserved:保留,值为0x0101 ASF Data Packet Structure
![]()
Error correction data structure ![]() Error correction data length:当Error correction length type的值为00时有效,其值表示Error correction data的大小(字节),值为0010。如果Error correction length type的值不为00,这个值设置为0000 Opaque Data Present:如果设置1,表示Error Correction Data后是opaque data。这个值应该设为0. Error correction length type:用于编码error correction data的大小。这个值应设置为0. Error correction present:为1时,表示有error correction 信息。 Error correction data
ASF Payload parsing information ![]() |
|