wav音频文件实例详细解析

1.WAV格式

 Waveform Audio File Format ( WAV ,又或者是因为 WAV 后缀而被大众所知的),它采用 RIFF (Resource Interchange File Format)文件格式结构。通常用来保存 PCM 格式的原始音频数据,所以通常被称为无损音频。但是严格意义上来讲, WAV 也可以存储其它压缩格式的音频数据。

2.WAV文件格式

WAV 文件遵循 RIFF 规则用于存储多媒体文件,其内容以区块(chunk)为最小单位进行存储。WAV文件一般由3个区块组成:RIFF chunkFormat chunkData chunk。所有基于压缩编码的WAV文件必须含有fact块。此外所有其它块都是可选的。

RIFF块包含两个子块,这两个子块的ID分别是 "fmt" 和 "data",其中 "fmt" 子块由结构PcmWaveFormat所组成,其子块的大小就是sizeof(PcmWaveFormat),数据组成就是PcmWaveFormat结构中的数据。

3.实例分析

WAV文件的声音数据保存在数据块中。块标识符为“data”块长度值为声音数据的长度

从数据块的第9个字符开始是声音波形采样数据。每个样本按采样的时间先后顺序写入。样本的字节数取决于采样位数。对于多字节样本低位字节数据 放在低地址单元,相邻的高位字节数据放在高地址单元。多声道样本数据采用交替方式存储。例如: 立体声(双声道)采样值的存储顺序为:

通道1第1采样值, 通道2第1采样值;通道1第2采样值, 通道2第2采样值;以此类推。基于PCM编码的样本数据排列方式。

 

1)“52 49 46 46”这个是Ascii字符“RIFF”,这部分是固定格式,表明这是一个WAVE文件头。


2)“24 53 07 00,这个是我这个WAV文件的数据大小,这个大小包括除了前面4个字节的所有字节,也就等于文件总字节数减去8。480044-8=480036个字节。


3)“57 41 56 45 66 6D 74 20”,也是Ascii字符“WAVEfmt”,这部分是固定格式。
以后是PCMWAVEFORMAT部分(通常意义上说的语音编码都是指将8KHz采样、16bits量化的线性PCM语音信号压缩成其它格式的语音信号,解码时就将其它格式的语音信号变换成8KHz采样、16bits量化的线性PCM语音信号。一般说来,这个转换过程比较复杂,费时费力。如果对其它格式的语音信号直接加上对应的WAVE文件头就不用这个转换过程,用微软自带的录音机就可解码语音。

4)“10 00 00 00”,这是一个DWORD双字节数据类型),对应数字16,这个对应定义中的PCMWAVEFORMAT部分的大小,可以看到后面的这个段内容正好是16个字节。一般情况下大小为16,此时最后附加信息没有。


5)“01 00”,这是一个WORD,对应定义为编码格式(01表示WAVE_FORMAT_PCM格式)。


6)“01 00”,这是一个WORD,对应数字1,表示声道数为1,是个单声道Wav


780 3E 00 00对应数字16000,代表的是采样频率16000,采样率(每秒样本数),表示每个通道的播放速度。


800 7D 00 00对应数字32000,代表的是每秒的数据量,波形音频数据传送速率,其值为通道数×每秒样本数×每样本的数据位数/81*16000*16/8)。播放软件利用此值可以估计缓冲区的大小。


9)“02 00”对应数字是2,表示块对齐的内容。数据块的调整数(按字节算的),其值为通道数×每样本的数据位值/8。播放软件需要一次处理多个该值大小的字节数据,以便将其值用于缓冲区的调整。


10)“10 00”数值为16,采样大小为16Bits,每样本的数据位数,表示每个声道中各个样本的数据位数。如果有多个声道,对每个声道而言,样本大小都一样。


11)“00 00”此处为附加信息(可选),和(4)中的size对应。

12)“64 61 74 61”,这个是Ascii字符“data”,标示头结束,开始数据区域。

4.附录

ASCII码值一览表

          

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值