一.分析avi文件
AVI是一种RIFF文件格式。通常情况下,一个AVI文件可以包含多个不同类型的媒体流(通常有一个音频流和一个视频流)。
RIFF文件使用四字符码FOURCC来表征数据类型,比如"RIFF""AVI ""LIST"等。Windows操作系统使用的字节顺序为little-endian,因此一个四字符码"abcd"实际的DWORD值应为0x6463626。
RIFF AVI格式:
使用分析软件打开一个avi文件:
当AVI文件包含多个流的时候,数据块使用一个四字符码来表征它的类型,这个 四字符码由两个字节的类型码和两个字节的流编号组成。标准的类型码定义如下:"db"(非压缩视频帧)"dc"(压缩视频帧)"pc"(改用新的调色板)"wb"(音缩视频)。上图00dc,01wb交织分布,说明avi文件格式中视频和音频是交织分布的。一个视频帧占据120000字节,一个音频帧占用6404字节。
二.WAV文件分析
WAV是最常见的声音文件格式之一,是微软公司专门为Windows开发的一种标准数字音频文件,该文件能记录各种单声道或立体声的声音信息,并能保证声音不失真。它符合资源互换文件格式(RIFF)规范,用于保存Windows平台的音频信息资源,被Windows平台及其应用程序所广泛支持。Wave格式支持MSADPCM、CCITT A律、CCITT μ律和其他压缩算法,支持多种音频位数、采样频率和声道,是PC机上最为流行的声音文件格式;但其文件尺寸较大,多用于存储简短的声音片段。
WAV文件遵循RIFF规则,其内容以chunk为最小单位进行存储。WAV文件一般由三个区块组成:RIFF chunk,Format chunk和Data chunk。同时,文件中也可能存在一些可选的区块,比如:Fact chunk,PlayList chunk等。在分析的过程中,我们重点分析前三种区块:RIFF chunk,Format chunk和Data chunk。
1.RIFF区块
2.FORMAT区块
3.DATA区块
WAV实例分析:
打开一个5秒的WAV文件:
其中RIFF区块:
1-4字节“0x52494646”表示“RIFF”标识;5-8字节代表size,即整个文件的长度减去前8个字节;9-12字节“0x57415645”表示“wav”标识
FORMAT区块:
1-4字节为“fmt”标识,5-8字节为该区块数据的长度减去8字节,9-10字节代表音频格式,11-12字节代表声道数,13-16字节代表采样率,17-20字节代表每秒数据字节数,21-22字节为每个采样所需的字节数(等于bits per sample*声道数/8),23-24字节为每个采样存储的bit数。
本WAV文件中,format tag为“1”代表PCM音频数据,单声道,采样率为11.025khz,bit深度为8位
DATA区块:
1-4字节“0x64617461”为“data”标识,5-8字节为数据音频的长度(等于每秒数据字节数*秒数),之后的字节为音频数据。如果是单声道的话,采样点就是简单的顺序排列。如果是双声道的话,采样点就是左右声道交错排列。这里是单声道,所以采样单简单顺序排列。