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’


发布评论