wav文件格式

wav文件格式是用于多媒体文件存储的微软RIFF规范的一个子集。一个RIFF文件从一个文件头开始,后面是一系列的数据块。一个wav文件通常只是一个带有单一"WAVE"块的RIFF文件。"WAVE"块是由两个子块组成的,一个是指定数据格式的“fmt”块和另一个是包含实际样本数据的数据块。这种形式被称为是“规范形式”("Canonical form")。具体格式如图所示:

Offset   Size   Name             Description
The canonical WAVE format starts with the RIFF header:
0         4   ChunkID         "RIFF"对应的ASCII码为0x52494646。
4         4   ChunkSize        块的大小不包括ChunkID and ChunkSize两部分。可以表示为 36 + SubChunk2Size或者4 + (8 + SubChunk1Size) + (8 + SubChunk2Size)    
8         4   Format           "WAVE"对应的ASCII码为0x57415645。
"WAVE"块是由两个子块组成的,一个是指定数据格式的“fmt”块和另一个是包含实际样本数据的数据块。
12        4   Subchunk1ID     "fmt "对应的ASCII码为0x666d7420。 
16        4   Subchunk1Size   PCM编码时,“fmt”块的大小为16字节。 
20        2   AudioFormat     压缩方式,当AudioFormat=1时,采取的是PCM编码方式。 
22        2   NumChannels     声道的数量,单声道为1,双声道为2。
24        4   SampleRate      取样率。
28        4   ByteRate        传输速率=SampleRate * NumChannels * BitsPerSample/8。
32        2   BlockAlign      一个样点处的字节数== NumChannels * BitsPerSample/8。
34        2   BitsPerSample  每个样点处的bit数。
          2   ExtraParamSize 如果是PCM编码的话,不存
          X   ExtraParams     附加因素的空间。
36        4   Subchunk2ID    "data"对应的ASCII码为0x64617461。
40        4   Subchunk2Size  数据的传输速率(数据块的大小)== NumSamples * NumChannels * BitsPerSample/8
44        *   Data             实际的数据。

 
 

分析一个简单的例子:该wav文件采用PCM编码方式,为双声道,且每个样点处的字节数为4,数据储存方式为左右声道交替。

需要回答的问题:

8比特和16比特样值的二进制编码方式一样吗?

两者不一样。8比特样值的二进制编码方式为unsigned bytes,取值范围是0-255。16比特样值的二进制编码方式为unsigned integers,取值范围是-32768-32767。

现有的wav支持哪几种音频压缩方式?

Compression code信息在WAV文件字段的第21、22个byte,通过十六进制查看器我们可以看到一个WAV文件的压缩码类型。对应关系如下表:Code      Description 
0 (0x0000)       Unknown 
1 (0x0001)       PCM/uncompressed 
2 (0x0002)       Microsoft ADPCM 
6 (0x0006)       ITU G.711 a-law 
7 (0x0007)       ITU G.711 µ-law 
17 (0x0011)    IMA ADPCM 
20 (0x0016)    ITU G.723 ADPCM (Yamaha) 
49 (0x0031)    GSM 6.10 
64 (0x0040)    ITU G.721 ADPCM 
80 (0x0050)     MPEG 
65,536 (0xFFFF)  Experimental

参考资料:http://soundfile.sapp.org/doc/WaveFormat/

http://blog.csdn.net/stelalala/article/details/17058755

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值