一、AVI文件简介
AVI英文全称为Audio Video Interleaved,Audio/Video Interleaved(视音频交织),用于采集、编辑、播放的RIFF文件,由信息块,数据块,索引块组成。
AVI文件将音频(语音)和视频(影像)数据包含在一个文件容器中,允许音视频同步回放。类似DVD视频格式,AVI文件支持多个音视频流。AVI信息主要应用在多媒体光盘上,用来保存电视、电影等各种影像信息。
AVI文件格式是基于RIFF(资源交换文件格式)文档格式。RIFF文件由RIFF标头组成,后跟零个或多个列表和区块
-
RIFF标头具有以下形式:
'RIFF' fileSize fileType (data)
其中,“RIFF"是文本 FOURCC 代码"RIFF”,是一个 4 字节值,表示文件中数据的大小,是标识特定文件类型的
fileSize
fileType
FOURCC。 的值包括 FOURCC 的大小以及以下数据的大小,但不包括fileSize
fileType
"RIFF"FOURCC 的大小或 的大小 fileSize 。 文件数据按任何顺序由区块和列表组成。 -
RIFF区块具有以下形式:
ckID ckSize ckData
其中,“ckID”是标识区块中包含的数据的 FOURCC,是一个 4 字节值,表示 中数据的大小,是
ckID
ckSize
ckData
ckData
零个或多个数据字节。 数据始终填充到最近的 WORD 边界。ckSize
提供区块中有效数据的大小;它不包括填充、的大小ckID
或 的大小ckSize
。 -
RIFF列表具有以下形式:
'LIST' listSize listType listData
其中,“LIST"是文本 FOURCC 代码"LIST”,是提供列表大小的 4 字节值,是 FOURCC 代码,由区块或列表组成(
listSize
listType
按任何listData
顺序)。"LIST"的值包括listSize
的大小加上 的大小listType
listData
;它不包括 “LIST” FOURCC 或 的大小listSize
。
本部分的其余部分使用下列表示法来描述 RIFF 区块:
ckID ( ckData )
其中区块大小是隐式的。 使用此表示法,列表可以表示为:
'LIST' ( listType ( listData ) )
可选元素位于方括号中: [ optional element ]
AVI文件结构:
RIFF ('AVI '
LIST ('hdrl'
'avih'(<Main AVI Header>)
LIST ('strl'
'strh'(<Stream header>)
'strf'(<Stream format>)
[ 'strd'(<Additional header data>) ]
[ 'strn'(<Stream name>) ]