WAV为微软公司(Microsoft)开发的一种声音文件格式,它符合RIFF(Resource Interchange File Format)文件规范。一个RIFF文件的开始部分是由一系列的数据块(data chunks)组成的头部文件。一个WAVE文件通常就是一个包含“WAVE”数据块(chunk)的RIFF文件,而这个WAVE数据块(chunk)由两个子数据块(sub-chunks)组成—— ”fmt” chunk(说明数据的结构)和”data” chunk(包含真正的音频数据)
WAVE文件结构:
打开一个WAV文件查看其二进制编码
4字节 ChunkID 包含字符“RIFF”
4字节 ChunkSize 剩余chunk的总字节数
(值 = 整个文件的大小 - 8Bytes,这8Bytes就是前面的ChunkID和ChunkSize)
4字节 Format 包含字符“WAVE”
WAVE包含两个subchunk : fmt 和 data
其中的subchunk - fmt 描述了音频数据的结构
4字节 Subchunk1ID 包含字符”fmt”
4字节 Subchunk1size 接下来剩余的Subchunk的大小
(一般为00000010H,若为00000012H则说明数据头携带附加信息)
2字节 AudioFormat 格式种类(值为1时,表示数据为线性PCM编码)
2字节 NumChannel 通道数,单声道为1,双声道为2
4字节 SampleRate 采样频率 此文件是44100
4字节 ByteRate 波形数据传输速率(SampleRate * NumChannels * BitsPerSample/8)
2字节 BlockAlign DATA数据块长度,字节(NumChannels * BitsPerSample/8)
2字节 BitsPerSample PCM位宽 (后面的00 00是附加数据)
4字节 Subchunk2ID 包含字符“data”
4字节 Subchunk2size 是data的总数据字节长度,也是剩余数据的大小
(NumSamples * NumChannels * BitsPerSample/8)
剩余数据为真实的音频数据(actual sound data)
注:
8bit样值储存为 unsigned bytes (范围0至255)
16bit 样值存储为补码2's-complement signed integers (范围-32768 至 32767)
以下比较单声道(非立体声)WAV文件的音频质量和音频编码
(压缩方式包括PCM,ADPCM,微软GSM 6.10,CELP,SBC、Truespeech和MPEG Layer-3)
参考链接:
https://en.wikipedia.org/wiki/WAV
http://soundfile.sapp.org/doc/WaveFormat/