WAVE文件格式

WAVE文件格式分析

来源:
http://soundfile.sapp.org/doc/WaveFormat/
http://tiny.systems/software/soundProgrammer/WavFormatDocs.pdf

Wave文件是用于多媒体文件存储的Microsoft RIFF(Resource Interchange File Format 资源交换档案标准)规范的子集之一。一个RIFF文件以一个文件头(File Header)开始,接着是一系列数据块(data chunk)。一个Wave文件常常是一个带有一个单“WAVE”块的RIFF文件。该“WAVE”chunk由两个子快组成,一个“fmt”chunk用于详细说明数据格式,一个“data”chunk包含实际的样本数据。这种形式我们称为规范形式。
这里写图片描述

OffsetSizeNameDescription
04ChunkIDASCII码”0x52494646”对应字母”RIFF”
44ChunkSize块大小是指除去ChunkID与ChunkSize的剩余部分有多少字节数据。注意:小尾字节序数。 Value=36+SubChunk2Size 或者 Value=4+(8+SubChunk1Size)+(8+SubChunk2Size)
84FormatASCII码”0x57415645”对应字母”WAVE”。该块由两个子快组成,一个“fmt”chunk用于详细说明数据格式,一个“data”chunk包含实际的样本数据。
124Subchunk1IDASCII码”0x666d7420”对应字母”fmt “。
164Subchunk1Size如果文件采用PCM编码,则该子块剩余字节数为16。
202AudioFormat如果文件采用PCM编码(线性量化),则AudioFormat=1。AudioFormat代表不同的压缩方式。
222NumChannels声道数,单声道(Mono)为1, 双声道(Stereo)为 2。
244SampleRate取样率,例:44.1kHz,48kHz。
284ByteRate传输速率,单位:Byte/s。 Value==SampleRateNumChannelsBitsPerSample/8
322BlockAlign一个样点(包含所有声道)的字节数。 Value==NumChannelsBitsPerSample/8
342BitsPerSample每个样点对应的位数。
2ExtraParamSize如果采用PCM编码,该值不存在。
XExtraParams用于存储其他参数。如果采用PCM编码,该值不存在。
364Subchunk2IDASCII码”0x64617461”对应字母”data”。
404Subchunk2Size实际样本数据的大小(单位:字节)。 Value==NumSamplesNumChannelsBitsPerSample/8
44*Data实际的音频数据 。

这里写图片描述
这里写图片描述
上图所示例子,该WAVE文件采用PCM编码。该音频具有双声道,每个样点进行16位量化编码,双声道的一个样点占4字节,存储顺序是每个样点的左右声道交替存储。


Q & A

  • 8bit与16bit样值的二进制编码表示是一样的吗?

    8bit样值以无符号形式存储,取值范围0-255 。而16bit样值以有符号的补码形式存储,取值范围-32768 to 32767。

  • 现有的WAV支持哪几种音频压缩方法

AudioFormatDescription
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)ITU G.721 ADPCM
80 (0x0050)MPEG
65,536 (0xFFFF)Experimental

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值