【Audio】WAV音频文件格式结构解析

网上找的一些资料,和自己的调试经验,总结~
https://blog.csdn.net/imxiangzi/article/details/80265978
https://www.cnblogs.com/ranson7zop/p/7657874.html

音频文件

链接:https://pan.baidu.com/s/1g4hsl_NFreNsiRzBtKoolA
提取码:73p1

WAV

WAV文件是在PC机平台上很常见的、最经典的多媒体音频文件,最早于1991年8月出现在Windows 3.1操作系统上,文件扩展名为WAV,是WaveFom的简写,也称为波形文件,可直接存储声音波形,还原的波形曲线十分逼真。WAV文件格式简称WAV格式是一种存储声音波形的数字音频格式,是由微软公司和IBM联合设计的,经过了多次修订,可用于Windows,Macintosh,Linix等多种操作系统,详述如下。

格式解析

【Audio】WAV音频文件格式结构解析_第1张图片

(1)、RIFF区块

在这里插入图片描述

  • 以’RIFF’为标识
  • Size是整个文件的长度减去ID和Size的长度
  • Type是WAVE表示后面需要两个子块:Format区块和Data区块
typedef struct
{
    uint32_t ID;   /*  "RIFF" = 0x46464952 */
    uint32_t Size; /* file length - 8 */
    uint32_t Format;    /* WAVE = 0x45564157 */
} WavRIFF;

在这里插入图片描述

(2)、FORMAT区块

【Audio】WAV音频文件格式结构解析_第2张图片

  • 以’fmt '为标识
  • Size表示该区块数据的长度(不包含ID和Size的长度)
  • AudioFormat表示Data区块存储的音频数据的格式,PCM音频数据的值为1
  • NumChannels表示音频数据的声道数,1:单声道,2:双声道
  • SampleRate表示音频数据的采样率
  • ByteRate每秒数据字节数 = SampleRate * NumChannels * BitsPerSample / 8
  • BlockAlign每个采样所需的字节数 = NumChannels * BitsPerSample / 8
  • BitsPerSample每个采样存储的bit数,8:8bit,16:16bit,32:32bit
typedef struct
{
    uint32_t ID;	/* "fmt " = 0x20746D66 */
    uint32_t Size;
    uint16_t AudioFormat;
    uint16_t NumOfChannels;
    uint32_t SampleRate;
    uint32_t ByteRate;
    uint16_t BlockAlign;
    uint16_t BitsPerSample;
    uint16_t ByteExtraData;
} WavFMT;

NumChannels=2(双声道)、SampleRate = 44100Hz、BitsPerSample=16
ByteRate = 176400、BlockAlign = 4;
【Audio】WAV音频文件格式结构解析_第3张图片

(3)、DATA区块

在这里插入图片描述

  • 以’data’为标识
  • Size表示音频数据的长度,N = ByteRate * seconds
  • Data音频数据
typedef struct
{
    uint32_t ID;	/* "data" = 0x61746164 */
    uint32_t Size;
} WavDATA;

size = 0x05fdfd50 = 100531536
【Audio】WAV音频文件格式结构解析_第4张图片
从data头到尾,一共刚好100531536;
【Audio】WAV音频文件格式结构解析_第5张图片

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