WAV文件解析

目录

一、WAV简介

二、WAV文件结构

2.1 首部数据

2.2 Format数据块

2.3 Data数据块

2.4其他数据块

参考资料


一、WAV简介

WAV格式是微软公司开发的一种声音文件格式,也叫波形声音文件,是最早的数字音频格式,被Windows平台及其应用程序广泛支持。WAV格式支持许多压缩算法,支持多种音频位数、采样频率和声道,采用44.1kHz的采样频率,16位量化位数,因此WAV的音质与CD相差无几,但WAV格式对存储空间需求太大不便于交流和传播。

二、WAV文件结构

WAV文件遵循RIFF规则,其内容以区块(chunk)为最小单位进行存储。WAV文件一般由3个区块组成:RIFF chunkFormat chunkData chunk。另外,文件中还可能包含一些可选的区块,如:Fact chunk、Cue points chunk、Playlist chunk、Associated data list chunk等。

下文将通过分析一个wav示例文件来详细介绍WAV文件格式。

图1 wav示例文件

2.1 首部数据

整个WAV都是由RIFF数据块组成,可以将整个WAV文件看作一个完整的RIFF数据块,在这个RIFF数据块中又包含若干的子块存放不同的信息。

对于整个WAV文件而言,其首部结构,也即整个RIFF数据块的头部结构如下。

表1 WAV文件首部的结构

名称

偏移地址

字节数

端序

内容

ID

0x00

4Byte

大端

'RIFF' (0x52494646)

Size

0x04

4Byte

小端

文件大小

Type

0x08

4Byte

大端

'WAVE'(0x57415645)

在UltraEdit软件中打开样例音频文件。

WAV文件解析_第1张图片

 

WAV首部数据部分在图中用横线画出。

  • 红线部分是ID,52 49 46 46 对应的ASCII字符为RIFF。
  • 黄线部分是Size,代表文件大小,注意该项的端序为小端开始,即从低位向高位读入。该部分的实际值应为 80 B1 45 01 的反向顺序即 01 45 B1 80 换成10进制为21344640字节(20844kB)。
  • 蓝线部分是Type,57 41 56 45对应的ASCII字符为WAVE。

2.2 Format数据块

WAV文件的其中一个重要的子块就是Format数据块,包含WAV音频文件的一些详细属性,具体结构如下。

表2 Format数据块的结构

名称

偏移地址

字节数

端序

内容

ID

0x00

4Byte

大端

'fmt ' (0x666D7420)

Size

0x04

4Byte

小端

16

AudioFormat

0x08

2Byte

小端

音频格式

NumChannels

0x0A

2Byte

小端

声道数

SampleRate

0x0C

4Byte

小端

采样率

ByteRate

0x10

4Byte

小端

每秒数据字节数

BlockAlign

0x14

2Byte

小端

数据块对齐

BitsPerSample

0x16

2Byte

小端

采样位数

WAV文件解析_第2张图片

继续分析示例文件,可以看到RIFF数据块后即为Format数据块。

红线部分是ID,66 6D 74 20对应的ASCII字符即为fmt 。(20对应的SCII字符为空格)

黄线部分是声道数,02 00 表示该音频文件为双声道。

绿线部分是采样率,同样从小端开始,00 00 AC 44 换成10进制为44100。

2.3 Data数据块

Data数据块是存放实际音频数据的数据块,具体结构如下。

表3 Data数据块的结构

名称

偏移地址

字节数

端序

内容

ID

0x00

4Byte

大端

'data' (0x64617461)

Size

0x04

4Byte

小端

N

Data

0x08

NByte

小端

音频数据

WAV文件解析_第3张图片

样例文件中红线部分即为Data数据块的ID部分, 64 61 74 61 对应的ASCII字符为data。

蓝线部分为Data数据块的Size部分,代表Data数据块的长度,01 45 B0 BC换成10进制为21344444字节。

蓝线后的部分即为实际的音频数据,对于不同的声道数和采样率,音频数据的布局也不同,具体的布局如下。

8bit 单声道
采样1 采样2
数据1 数据2
8bit 双声道
采样1 采样2
声道1数据1 声道2数据1 声道1数据2 声道2数据2
16bit 单声道
采样1 采样2
数据1低字节 数据1高字节 数据1低字节 数据1高字节
16bit 双声道
采样1 采样2
声道1数据1低字节 声道1数据1高字节 声道2数据1低字节 声道2数据1高字节 声道1数据2低字节 声道1数据2高字节 声道2数据2低字节 声道2数据2高字节

2.4其他数据块

在WAV中还存在其他的数据块,存放不同的辅助信息,这些块都以RIFF数据块格式存储,格式如下。

当ID为“RIFF”或“LIST”时,允许该数据块中包含子块。

"LIST"块的数据域的起始位置也有一个四字节类型码(List Type),用于说明LIST数据域的数据内容。比如,类型码为"INFO"时,其数据域可能包括"ICOP"、"ICRD"块,用于记录文件版权和创建时间信息。

WAV文件解析_第4张图片

 例如在示例文件中就有“IART”块(红线部分)用于存放音乐家姓名,“INAM”块(黄线部分)用于存放音乐标题;“IPRD”块(蓝线部分)用于存放音乐所属专辑名称。

参考资料

WAV_百度百科 (baidu.com)icon-default.png?t=M276https://baike.baidu.com/item/WAV/218914?fromtitle=WAV%E6%A0%BC%E5%BC%8F&fromid=291538&fr=aladdin史上全最的WAV格式详解 - 简书 (jianshu.com)icon-default.png?t=M276https://www.jianshu.com/p/b7cadd3e9c4dWAV文件格式详解_imxiangzi的专栏-CSDN博客_wav格式icon-default.png?t=M276https://blog.csdn.net/imxiangzi/article/details/80265978

你可能感兴趣的:(音频)