ASF文件结构

最近一个月经理让我把我公司.vm4格式的video文件,封装成MS的ASF文件。

ASF文件是一个容器。理论上来说,可以包容各种video文件。这些文件可以用MS自己的codec,也可用第三方的codec。

ASF主要有三个部分组成(我们把这些部分叫做对象):文件头对象,数据对象,索引对象!

E文:Header Object ,Data Object, Index Object

Header Object又由许多小的Object组成,如必须要有的三个File Object,Stream Object, HeadExtended Object.

DataObject由自己的DataObject头+n个Packet组成,每个Packet由一个Parsing 头+n个payload组成。

Index对象,因为是可选的,我就没有过多研究啊。

以上三个对象最重要的当然是前两个了。

DataObject中的packet,是一个固定大小的包,它是不同于一般video有的Frame的。

下面让我看看三个概念之间的联系和区别:

Packet是固定大小的网络包。如果Frame>Packet大小,则Frame被分段放入不同的Packet.

如果Frame

那么Payload呢,数据就是放在Payload中的,Payload就是指一个小于Packet的Frame,或者是被分段的一段Frame。

在Packet中有一个两个重要参数:Stream Number,MediaObject Number.

前一个用于区分video、audio,或者其它数据。

后一个主不是Frame的编号。

那么Stream Number用户可以自主编号,它对应于HeadObject里的StreamObject.

而MediaObjectNumber就要按照Frame,进行顺序编号了。

当然其中细节很多,不可能在这里讲清楚,这里讲的只是概述。

----------------------------------------------

后记:经理给我的这个任务,我没能完成,原因是我的英语水平不行。

我封装的ASF文件,虽然可以Media Player 6.0 或者其它播放器里播放,但就是不能在Medai Player 9.0播放。

不知道是我的原因,还是MS不在对第三方Codec进行支持的原故。总之这件事让我很郁闷。有时候有干劲,

努力工作不一定能成功。

你可能感兴趣的:(mulitMedia相关)