您的位置:首页 > 其它

WAV文件格式

2014-05-02 10:44 113 查看
WAV文件通常采用的音频编码方式是脉冲编码调制(PCM)。因为WAV格式源自Window/Intel环境,因而采用的Little Endian字节顺序存储。

WAV文件容量=(采样频率X采样位数X声道)X时间/8(1字节=8bit)。

WAV文件由若干个帧组成。按照在文件中的出现位置包括:RIF'FWAVE帧、Format帧、Fact帧(可选)、Data帧。

RIFF WAVE Chunk

ID = ‘RIFF’

Size=

RiffType = ‘WAVE’

Format Chunk

ID = ‘fmt’

......

Fact Chunk(optional)

ID = ‘fact’

......

Data Chunk

ID = ‘data’

Size=

data

除了Fact帧外,其他3个帧都是必须的。每个帧有各自的ID,位于该帧最开始位置,均为4个字节。紧跟在ID后面的是帧的大小,大小为4字节(小端方式)。

(1)RIFF WAVE帧

名称

长度

具体内容

ID

4 Bytes

‘RIFF’

Size

4 Bytes

FileLen-8, 整个文件大小-8

Type

4 Bytes

‘WAVE’

struct RIFF_HEADER
{
U8	ID[4];	 //’R’,’I’,’F’,’F’
U32	Size;	 //
U8	Type[4];	 //’W’,’A’,’V’,’E’
}


(2)Format帧

此帧一般情况下为16字节,此时最后附加信息没有;如果为18字节,则最后,多了两个字节的附加信息。

名称

字节数

具体内容

ID

4

fmt

Size

4

16或18(数值),

18则最后有附加信息

FormatTag

2

编码方式,一般为0x0001

Channels

2

声道数目,1-单声道,2-双

SamplesPerSec

4

采样频率

AvgBytesPerSec

4

每秒所需字节数

BlockAlign

2

数据块对齐单位(每个采样需要的字节数)

BitsPerSample

2

每个采样需要的bit数

附加信息

2

附加信息(可选,通过Size判断有无)

struct WAVE_FORMAT{
U32	 ID;//ID, fmt
U32	 Size;
U16	 FormatTag;
U16	 Channels;
U32	 SamplesPerSec;
U32	 AvgBytesPerSec;
U16	 BlockAlign;
U16	 BitsPerSample;
U16	 pack;	//附加信息
}


(3)Fact帧

当WAV文件是由某些软件转化而成时可能包含的帧。

名称

所占字节数

具体内容

ID

4

“fact”

Size

4

数值4

data

4

“WAVE”

struct FACT_BLOCK{
U8	 szFactID[4];//’f’,’a’,’c’,’t’
U32	 dwFactSize;//
U32	 wavFormat;//’WAVE’
}


(4)Data帧

保存WAV音频数据的地方。

名称

所占字节数

具体内容

ID

4

“data”

Size

4

data

WAV音频数据

struct DATA_BLOCK{
U8	 ID[4];//’d’,’a’,’t’,’a’
U32	 DataSize;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: