2024年3月19日发(作者:)

1. 从(00000000-000007F3)为一个WindowsAVI文件的信息区部分。

它是文件的第一个LIST块。在它的内部记录着整个文件的系统构成,如告诉播放软件“我

是一个AVI文件”“在我的体内有几个数据流”“每个数据流包含着什么数据类型——图

像、声音或其他”“如果是图像数据流,那么它的大小、颜色、压缩方式、播放速度等,

等是怎样规定的”“如果是声音数据流,那么它的压缩方式、播放效果等等又将有何规

定”......在信息区中还有多个附属的LIST块,也就是我们前面提到的“子块”,它们用来

记录每个数据流的全部信息。而这些附间LIST块与数据流之间保持着—一对应的关系,

第一个附属LIST块对应于00号数据流第二个附属LIST块对应于01号数据流......要想

解释数据流,我们必须先了解AVI文件中数据块是什么。在AVI文件中,数据块是被放

置在数据区中的一个有起始标志(由“数据流识别码”和“数据块存储方式识别码"组成,

请参见对数据区部分的说明),并指明大小和数据内容的数据段.那么,数据流就是那些相

互之间具有联系的同种数据类型的数据块集合. 0000多媒体文件识别

码:RIFF

0000文件大小(10EDICh字节)-8字节

0000BAVI文件识别码

0000000C-0000000F第一个LIST块识别码

0000第一个LIST块的大小(168h字节)

0000hdrl部分识别码,以下数据记录着此文件的格式

0000Bhdrl部分所包含的avih块识别码,此模块记录着本文件的初始化信

0000001C-0000001Favih块大小(38h字节)

0000每帧画面显示所维持多少个百万分之一秒,本例为1046Bh,即66667

百万分之一秒,约0.07秒。所以在播放此文件时,你看到的画面约每秒15帧

小知识:AVI文件格式----摘自《DirectShow实务精选》 作者:陆其明

AVI(Audio Video Interleaved的缩写)是一种RIFF(Resource Interchange File Format

的缩写)文件格式,多用于音视频捕捉、编辑、回放等应用程序中。通常情况下,一个AVI

文件可以包含多个不同类型的媒体流(典型的情况下有一个音频流和一个视频流),不过含

有单一音频流或单一视频流的AVI文件也是合法的。AVI可以算是Windows操作系统上最基

本的、也是最常用的一种媒体文件格式。

先来介绍RIFF文件格式。RIFF文件使用四字符码FOURCC(four-character code)来表征

数据类型,比如‘RIFF’、‘AVI ’、‘LIST’等。注意,Windows操作系统使用的字节顺

序是little-endian,因此一个四字符码‘abcd’实际的DWORD值应为0x64636261。另外,

四字符码中像‘AVI ’一样含有空格也是合法的。

RIFF文件首先含有一个如图3.31的文件头结构。

图3.31 RIFF文件结构

最开始的4个字节是一个四字符码‘RIFF’,表示这是一个RIFF文件;紧跟着后面用4

个字节表示此RIFF文件的大小;然后又是一个四字符码说明文件的具体类型(比如AVI、

WAVE等);最后就是实际的数据。注意文件大小值的计算方法为:实际数据长度 + 4(文

件类型域的大小);也就是说,文件大小的值不包括‘RIFF’域和“文件大小”域本身的大

小。

RIFF文件的实际数据中,通常还使用了列表(List)和块(Chunk)的形式来组织。列表可

以嵌套子列表和块。其中,列表的结构为:‘LIST’ listSize listType listData

——‘LIST’是一个四字符码,表示这是一个列表;listSize占用4字节,记录了整个列

表的大小;listType也是一个四字符码,表示本列表的具体类型;listData就是实际的列

表数据。注意listSize值的计算方法为:实际的列表数据长度 + 4(listType域的大小);

也就是说listSize值不包括‘LIST’域和listSize域本身的大小。再来看块的结构:ckID

ckSize ckData ——ckID是一个表示块类型的四字符码;ckSize占用4字节,记录了整个

块的大小;ckData为实际的块数据。注意ckSize值指的是实际的块数据长度,而不包括ckID

域和ckSize域本身的大小。(注意:在下面的内容中,将以LIST ( listType ( listData ) )

的形式来表示一个列表,以ckID ( ckData )的形式来表示一个块,如[ optional element ]

中括号中的元素表示为可选项。)

接下来介绍AVI文件格式。AVI文件类型用一个四字符码‘AVI ’来表示。整个AVI文件的

结构为:一个RIFF头 + 两个列表(一个用于描述媒体流格式、一个用于保存媒体流数据)

+ 一个可选的索引块。AVI文件的展开结构大致如下:

RIFF (‘AVI ’

LIST (‘hdrl’

‘avih’(主AVI信息头数据)

LIST (‘strl’