Wave(.wav)文件格式

Micheal Chen Lv6

Wave 文件格式主要是用来存储音频PCM数据的,其实也可以存储非PCM音频数据,这种情况我们就不考虑了。文件的扩展名为”.wav”,采用RIFF文件结构。

RIFF全称为资源互换文件格式(Resources Interchange File Format),是Windows下大部分多媒体文件遵循的一种文件结构。RIFF文件所包含的数据类型由该文件的扩展名来标识。

一、RIFF文件格式简介

  1. RIFF文件是由一个一个的chunk组成的,使用小端存储(低位字节排放在内存的低地址端)。

  2. chunk是可以嵌套的,但是只有块标志为”RIFF”或者”LIST”的chunk才能包含其他的chunk。

  3. chunk的基本结构如下:

1
2
3
4
5
6
struct chunk
{
char chunkId[4]; // 4个字符组成的chunk标识,少于4字符右补空格
U32 chunkSize; // 数据块的大小,字节
char data[chunkSize]
};
  • chunkId可以为”RIFF”、”LIST”、”fmt”、”data”…
  • 数据以字为单位存放,如果数据长度为奇数(字节为单位),则最后添加一个空字节
  1. 当chunkId为”RIFF”或”LIST”(类型块)时,chunk的结构变形为下面这样:
1
2
3
4
5
6
7
struct chunk
{
char chunkId[4]; // 4字符组成的chunk标识,少于4字符右补空格
U32 chunkSize; // chunkType + data的数据大小,字节
char chunkType[4]; // chunk的类型,e.g. WAVE/AVI ...
char data[chunkSize - 4]
};

二、Wave文件格式

  1. 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数据
  1. 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.
On this page
Wave(.wav)文件格式