概述
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
最后
以上就是兴奋外套为你收集整理的wav文件格式的全部内容,希望文章能够帮你解决wav文件格式所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复