一、 WAV文件简介

波形音频文件格式 (WAV / WAVE)是Microsoft开发的一种数字化声音文件格式,用于在PC上存储音频比特流,文件扩展名为“*.wav”。

WAV文件采用RIFF文件格式结构,即具有特定的容器格式。RIFF文件结构由“块”(chunk)为基本单元构成,每个块中包含4字节标识符,4字节块的大小,以及一个数据块序列。WAVE文件通常只是一个具有单个“WAVE”块的RIFF文件,它由两个子块组成:一个指定数据格式的“fmt”块和包含实际采样数据的“data”块。

虽然WAV文件可以包含压缩音频,但最常见的WAV音频格式是脉冲编码调制(PCM)格式的未压缩音频,即直接存储采样的声音数据,没有经过任何的压缩。

WAV文件数据格式采用小端字节顺序存储方式。

二、WAV文件内部结构

WAV格式以RIFF标头开始:

0~4(bytes) ChunkID 包含ASCII格式的字母“RIFF”
4~8 ChunkSize

文件长度(不包含ChunkID和ChunkSize所占字节)

8~12 format 包含ASCII格式的字母“WAVE”

WAV格式由两个子块组成:“fmt”和“data”:

“fmt”描述声音数据的格式:

12~16 Subchunk1ID 包含字母“fmt”
16~20 Subchunk1Size fmt块的大小(不包含Subchunk1ID和Subchunk1Size所占字节)
20~22 AudioFormat 音频数据的编码方式,1表示PCM编码
22~24 NumChannels 声道数,单声道为1,双声道为2
24~28 SampleRate 采样率(每秒采样数),如44100
28~32 ByteRate

音频数据传送速率,单位是字节。

== SampleRate * NumChannels * BitsPerSample / 8

32~34 BlockAlign

每次采样的大小,单位是字节。16bit=4

== NumChannels * BitsPerSample / 8

34~36 BitsPerSample

每个声道的采样精度。16bit=16

“data”子块包含数据的大小和实际的声音数据:

36~40 Subchunk2ID 包含字母“data”
40~44 Subchunk2Size 音频数据块的大小(不包含Subchunk2ID和Subchunk2Size所占字节)
44~ Data 实际的声音数据

例如,用二进制编辑器打开一个WAV文件,如下:

可以看出,该WAV文件是一个16bit双声道(立体声)的音频文件。

WAV数据根据声道和bit数可分为以下几种形式:

8位单声道:每个样本数据由8位表示;
8位立体声:每个声道的数据由一个8位数据表示,且第一个8位数据表示0声道(左)数据,紧随其后的8位数据表示1声道(右)数据;
16位单声道:每个样本数据由16位表示;其中低字节存放高位,高字节存放低位;
16位立体声:每个声道的数据由一个16位数据表示,且第一个16位数据表示0声道(左)数据,紧随其后的16位数据表示1声道(右)数据。

所以8bit和16bit样值的二进制编码表示不同,8bitPCM波形样本的数据采用一字节编码,范围从0~255;16bitPCM波形样本的数据采用两字节编码,且低字节在前,高字节在后,范围从-32768~32767。

三、WAV的其它音频压缩方法

WAV对音频流的编码没有硬性规定,除了PCM之外,还有几乎所有支持ACM规范的编码都可以为WAV的音频流进行编码。

下表给出WAV文件其他形式的压缩方法,其中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

四、WAV文件采样率转换

WAV文件可以进行采样率的转换,例如将采样率为48khz的WAV文件转换成44.1khz,由于48Khz和44.1khz不是整数倍的关系,不能通过插值或者抽取直接转换。可以先做插值,再做抽取,这样既不会产生数据的丢失,也避免了频谱的混叠失真。可求出48khz和44.1khz的最小公倍数为7056khz,先对48khz文件进行插值处理,在两个相邻抽样值之间插入146个邻近抽样值,将采样率变为7056khz,再每隔159个样值抽取一个,这样就可以将采样率转换为44.1khz。

WAV 文件格式分析相关推荐

  1. wav文件格式分析详解

    wav文件格式分析详解 作者:曹京 日期:2006年7月17日 一.综述     WAVE文件作为多媒体中使用的声波文件格式之一,它是以RIFF格式为标准的. RIFF是英文Resource Inte ...

  2. wav文件格式分析与详解

    wav文件格式分析与详解 WAV文件是在PC机平台上很常见的.最经典的多媒体音频文件,最早于1991年8月出现在Windows 3.1操作系统上,文件扩展名为WAV,是WaveFom的简写,也称为波形 ...

  3. [数据压缩]WAV文件格式分析及AVI数据结构分析

    目录 WAV文件格式分析 WAV概述 WAV文件格式分析 根据实例的WAV文件结构分析 AVI数据结构 音频与视频的数据放置方式 视频帧与音频帧的字节数 参考引用 WAV文件格式分析 WAV概述 Wa ...

  4. WAV文件格式分析(附AVI文件格式分析)

    目录 一.WAV格式简介 二.WAV格式结构 1.RIFF chunk 2.Format chunk 3.Data chunk 三.AVI文件格式分析 Q1:音频和视频的数据是如何放置的?交织放置or ...

  5. 【数据压缩3】AVI文件格式分析及问题回答+WAV文件格式分析

    目录 AVI文件问题回答 1.AVI文件音频和视频的数据是如何放置的,交织放置还是连续放置? 2.AVI文件一个视频帧大约占据多少字节?一个音频数据块大约占用多少字节? WAV文件格式分析 文件概述 ...

  6. 音频wav文件格式分析

    一.音频文件 ​ /usr/share/sounds/deepin/stereo/desktop-login.wav 二.文件信息 syli@syli-PC:~/work/repo/Demo/pa$ ...

  7. 数据压缩——WAV文件格式分析

    目录 WAV文件概述 WAV文件格式 一.案例分析 二.代码分析 1.建立结构体 2.读取数据段长度 3.结果 参考 WAV文件概述 WAV文件是在PC机上常见且最经典的多媒体音频文件,文件扩展名为W ...

  8. 【数据压缩】第三周作业——WAV文件格式分析

    1 WAV文件格式概述 WAV为微软公司(Microsoft)开发的一种声音文件格式,它符合RIFF(Resource Interchange File Format)文件规范,用于保存Windows ...

  9. 第三周:RIFF、AVI、WAV文件格式分析

    RIFF格式 资源互换文件格式(Resources interchange File Format),RIFF文件市微软提出的windows环境下大部分多媒体文件遵循的一种文件结构,如WAV文件.AV ...

最新文章

  1. C++中substr函数的用法
  2. Console-算法[]-数组求最大值和最小值(只能遍历一次)
  3. Java实现AES和RSA算法
  4. caffe基础(7): 命令行解析
  5. OC(Open collector) 集电极开路
  6. jQuery Ajax POST方法
  7. java 生成pdf 乱码_利用java处理fop导出pdf的中文乱码问题解决方案
  8. mysql 5.7 升级 8.0_MySQL5.7升级到8.0过程详解
  9. 解决Oracle 11g在用EXP导出时,空表不能导出
  10. 前端面试之 判断 true == true 需要进行哪几步操作?
  11. AngularJS 模板
  12. IDC发布2020上半年SD-WAN报告:阿里云领跑国内服务市场
  13. vs2010解决方案源文件夹和头文件夹消失
  14. matlab 暴雨强度公式,利用MATLAB推导城市暴雨强度公式
  15. 07-11-Exchange Server 2019-配置-Outlook 2019-IMAP4
  16. OneBox Technical Support
  17. BasicVSR_pp video2frame
  18. nested exception is org.apache.ibatis.builder.BuilderException: Error evaluating expression 异常
  19. 安装MySQL的步骤和方法
  20. Failed to find config ‘085569ce-73ed-11df-83c3-002264764cea‘

热门文章

  1. Vue.js(渐进式JavaScript框架)
  2. 《数据结构》实验报告(一)——顺序表存储结构及实现
  3. Tableau自定义分类调色板
  4. python_qzonespider_day2_模拟登录QQ空间
  5. 计算机类sci四大水刊,材料灌水的sci期刊_十大水榜sci杂志_四大垃圾sci杂志
  6. 小人物解决四大数学问题:记传奇华人数学家李天岩
  7. 学习TDD:TDD的好处
  8. linux串口读取mpu9250数据,模拟 I2C 读取 MPU9250 数据的测试笔记
  9. html导出pdf及word,保留完成样式以及格式调研
  10. 网红蛋糕店整体室内装修施工图+效果图