WAV文件格式

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

WAV文件容量=(采样频率X采样位数X声道)X时间/81字节=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

1618(数值),

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;
}


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值