WAV文件解析

本文详细解读了WAV文件结构,包括首部数据、Format数据块(声道数、采样率)、Data数据块(音频数据布局)以及额外的其他数据块,如音乐信息。展示了WAV文件在音频文件格式中的重要性和存储细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、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首部数据部分在图中用横线画出。

  • 红线部分是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

小端

采样位数

继续分析示例文件,可以看到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

小端

音频数据

样例文件中红线部分即为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"块,用于记录文件版权和创建时间信息。

 例如在示例文件中就有“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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值