wav文件格式分析

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一.RIFF概念

在Windows环境下,大部分的多媒体文件都依循着一种结构来存放信息,这种结构称为"资源互换文件格式"(Resources Interchange File Format),简称RIFF。例如声音的WAV文件、视频的AV1文件等等均是由此结构衍生出来的。RIFF可以看做是一种树状结构,其基本构成单位为chunk,犹如树状结构中的节点,每个chunk 由"辨别码"> '数据大小"及"数据"所组成。

图一、块的结构示意图

辨别码由4个ASCII码所构成,数据大小则标示出紧跟其后数据的长度(单位为Byte),而数据大小本身也用掉4个Byte,所以事实上一个chunk的长度为数据大小加8。一般而言,chunk本身并不允许内部再包

含chunk,但有两种例外,分别为以"RIFF"及"L1ST"为辨别码的chunk。而针对此两种chunk,RIFF又从

原先的"数据"中切出4个Byte。此4个Byte称为"格式辨别码",然而RIFF又规定文件中仅能有一个以

"RIFF"为辨别码的chunk。

图二、RIFF/LIST块结构

只要依循此一结构的文件,我们均称之为RIFF档。此种结构提供了一种系统化的分类。如果和MS —DOS 文件系统作比较,"RIFF"chunk就好比是一台硬盘的根目录,其格式辨别码便是此硬盘的逻辑代码(C :或D:),而"L1ST"chunk即为其下的子目录,其他的chunk则为一般的文件。至于在RIFF文件的处理方面,微软提供了相关的函数。视窗下的各种多媒体文件格式就如同在磁盘机下规定仅能放怎样的目录,而在该目录下仅能放何种数据。

二.WAV文件格式

WAVE文件是非常简单的一种RIFF文件,它的格式类型为"WAVE"。RIFF块包含两个子块,这两个子块

的ID分别是"fmt"和"data",其中"fmt"子块由结构PCMWAVEFORMAT 所组成,其子块的大小就是sizeofof (PCMWAVEFORMAT),数据组成就是PCMWAVEFORMAT 结构中的数据。

标志符(RIFF)

数据大小

图三、WAVE文件结构

PCMWAVEFORMAT 结构定义如下:

Typedef struct

曰田…{

WAVEFORMAT wf; / 波形格式;

WORD wBitsPerSample; //WAVE 文件的采样大小;

} PCMWAVEFORMAT;

//WAVEFORMAT 结构定义如下:

typedef struct

曰田…{

WORD wFormatag; //编码格式,包括WAVE_FORMAT_PCM ,WAVEFORMAT_ADPCM 等

WORD nChannls; //声道数,单声道为1,双声道为2;

DWORD nSamplesPerSec; 〃采样频率;

DWORD nAvgBytesperSec; // 每秒的数据量;

WORD nBlockAlign; // 块对齐;

L

} WAVEFORMAT ;

"data"子块包含WAVE文件的数字化波形声音数据,其存放格式依赖于"fmt"子块中wFormatTag成员指定的格式种类,在多声道WAVE文件中,样本是交替出现的。如16bit的单声道WAVE文件和双声道WAVE 文件的数据采样格式分别如图四所示:

16位单声道:

图四、WAVE文件数据采样格式

WAV文件格式实例分析:

O1 2 3456789 A B C D E F

OOOOOOO OH 52494646OA O6O1OO5741 5645

66

6D742O

OOOOOO1 OH 12OO

O

O

OO O1

O

O

O2OO44

AC OO

C

O1O B1O2OO

OOOOOO2

OH

O4OO1O OO OO OO66616374 O4OO OO OO7641

OOOOOO3

OH OO OO64617461D8O5

O

1OO OO OO OO OO FF FF

0OOOOO400 OO FE FF FE FF OO OO OO OO FE FF FE FF OO OO

wav 文件格式分析

虽然自己是搞视频图像的,不过偶尔看看音频方面的资料也是可以调节一下的下面就来分析一下wav 波形文件的格式。

我们先随便找一个wav 文件,查看其属性,就能得到下面的结果。

文件类塑•波形声音Crtv)

口Tindows >edi t Playi更改©…

扌T开方

式:

便B:C: WswrcVteVkskl op

大小; 1.2& MB (1,^044 宇节 >|

占用空闫; 1.2$ MB (1,327,104 亨节》

创踽耳2012*10月16曰・21:42:43

惟改时闻:20122fl0月1&吕.21:42:43

访问B扌间2012^10月W日.21:42:43

属性:二只读值)二硼QD[鬲级@)二n 厂确定「[翊]应用射

上面主要注意文件大小,声音长度与比特率。

文件占用空间就不用关心了,如果有人想知道为什么文件占用空间比文件大小要大,我在这里也解释一下。这和文件在硬盘中的组织方式有关系,这里的硬盘分区是以最小4096Byte 为

单位的,我文件的大小是1325044Byte ,那么1325044/4096=323.49 ,为了能把文件对齐的放到硬盘中,所以占用的空间就要是324*4096=1327104Byte 了,所以占用的空间就是

这么多了。你也可以建立一个只写一个字母的txt文件试试,文件大小虽然为IByte,不过占

用空间也为4096Byte 。

上面说的当然和wav文件没什么关系,下面就正式说用ultraedit 打开就是下面这个样子:wav文件的问题。

相关文档
最新文档