Wave(.wav)文件格式

Wave 文件格式主要是用来存储音频PCM数据的,其实也可以存储非PCM音频数据,这种情况我们就不考虑了。文件的扩展名为”.wav”,采用RIFF文件结构。
RIFF全称为资源互换文件格式(Resources Interchange File Format),是Windows下大部分多媒体文件遵循的一种文件结构。RIFF文件所包含的数据类型由该文件的扩展名来标识。
一、RIFF文件格式简介
RIFF文件是由一个一个的chunk组成的,使用小端存储(低位字节排放在内存的低地址端)。
chunk是可以嵌套的,但是只有块标志为”RIFF”或者”LIST”的chunk才能包含其他的chunk。
chunk的基本结构如下:
1 | struct chunk |
- chunkId可以为”RIFF”、”LIST”、”fmt”、”data”…
- 数据以字为单位存放,如果数据长度为奇数(字节为单位),则最后添加一个空字节
- 当chunkId为”RIFF”或”LIST”(类型块)时,chunk的结构变形为下面这样:
1 | struct chunk |
二、Wave文件格式
- Wave文件采用RIFF文件格式,当然也就遵循RIFF文件结构。总体来看Wave文件是由多个chunk嵌套组成的。如下表:
从上表可以看出:
- (1) Wave文件最外层是一个标识为”RIFF”的类型块chunk1
- (2) 在chunk1的data部分嵌套了2个chunk,即chunk2和chunk3
- (3) chunk2的标识为”fmt”,在它的data部分存储音频的一些相关属性
- (4) chunk3的标识为”data”,在它的data部分存储具体的音频PCM数据
- PCM数据存储格式
- Title: Wave(.wav)文件格式
- Author: Micheal Chen
- Created at : 2025-03-28 00:23:45
- Updated at : 2025-03-28 01:35:49
- Link: https://www.xhis.com/hexo/2025/03/27/notes/Wave文件格式/
- License: This work is licensed under CC BY-NC-SA 4.0.