【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等多種操作系統,詳述如下。

格式解析

在這裏插入圖片描述

(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區塊

在這裏插入圖片描述

  • 以’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;
在這裏插入圖片描述

(3)、DATA區塊

在這裏插入圖片描述

  • 以’data’爲標識
  • Size表示音頻數據的長度,N = ByteRate * seconds
  • Data音頻數據
typedef struct
{
    uint32_t ID;	/* "data" = 0x61746164 */
    uint32_t Size;
} WavDATA;

size = 0x05fdfd50 = 100531536
在這裏插入圖片描述
從data頭到尾,一共剛好100531536;
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章