(转)WAVE PCM 声音文件格式

WAVE文件格式是Microsoft为存储多媒体的RIFF规范的一部分。一个RIFF文件以一个文件头开始,然后是一系列的数据块。一个WAVE文件常常仅由一个WAVE块构成,WAVE块包含一个说明格式的fmt块和存储取样信息的数据块。

标准WAVE文件格式

 

 

 

偏移

长度(字节)

变量名

描述

备注

0

4

ChunkID

ASCII字符“RIFF”,大端形式

RIFF头

4

4

ChunkSize

36+SubChunk2Size,即:4 + (8 + SubChunk1Size) + (8 + SubChunk2Size),指除文件前8字节后的字节数

RIFF头

8

4

Format

ASCII字符“WAVE”,大端形式

RIFF头

12

4

Subchunk1ID

ASCII字符“fmt ”,大端形式

Fmt子块

16

4

Subchunk1Size

对于PCM文件为16。指除前8字节的Fmt块大小

Fmt子块

20

2

AudioFormat

PCM=1,其他值指以某种形式压缩(见表2)

Fmt子块

22

2

NumChannels

单声道=1,立体声=2

Fmt子块

24

4

SampleRate

取样率,取16000

Fmt子块

28

4

ByteRate

SampleRate * NumChannels * BitsPerSample/8

Fmt子块

32

2

BlockAlign

NumChannels * BitsPerSample/8,所有声道中一个样本数据的字节总数

Fmt子块

34

2

BitsPerSample

8或16

Fmt子块

36

4

Subchunk2ID

ASCII字符串“data”

Data子块

40

4

Subchunk2Size

NumSamples * NumChannels * BitsPerSample/8,指数据中的字节数

Data子块

44

*

Data

实际的声音数据

 

表2 Format Code 格式编码

格式编码

预处理符号

数据

0x0001

WAVE_FORMAT_PCM

PCM

0x0003

WAVE_FORMAT_IEEE_FLOAT

Ieee float

0x0006

WAVE_FORMAT_ALAW

8bits ITU-T G.711 A-law

0x0007

WAVE_FORMAT_MULAW

8-bit ITU-T G.711 u-law

0xFFFE

WAVE_FORMAT_EXTENSIBLE

 

 

注意:

1)WAVE文件默认的字节顺序是小端顺序,若是大端顺序用RIFX代替RIFF标识

2)取样数据必须是偶数字节

3)8位取样数据被存储为无符号数,从0到255.16位的取样数据被存储为补码,从-32768到32767

4)在wave数据流中可能有添加的子块。每一个子块有char SubChunkID[4],unsigned long SubChunkSize和SubChunkSize字节的数据

5)RIFF代表Resource Interchange File Format

 

转自:http://blog.csdn.net/foxwit/article/details/5802389

posted @ 2015-09-10 10:10  lihaiping  阅读(2730)  评论(0编辑  收藏  举报