音訊編解碼·格式篇(1)Wave PCM audio format(WAV)

鍾超發表於2012-04-08

音訊編解碼·格式篇(1)Wave PCM audio format(WAV)

  • 作者:柳大·Poechant
  • 部落格:Blog.CSDN.net/Poechant
  • 郵箱:zhongchao.ustc@gmail.com
  • 日期:April 6th, 2012

0 音訊編解碼基礎

  • 取樣率:聲音訊號在“模數轉換”過程中單位時間內取樣的次數。
  • 取樣值:每一次取樣週期內聲音模擬訊號的積分值。
  • 單聲道:11.025 KHz 取樣值,8 Bits 取樣值(0x00 - 0xFF)。
  • 雙聲道:44.1 KHz 取樣值,16 Bits 取樣值。高八位表示左聲道,低八位表示右聲道。

1 WAV音訊檔案格式

見下圖:

Resize icon

  • 檔案頭
    • RIFF/WAV 檔案標識段
    • 聲音資料格式說明段
  • 資料體:由 PCM(脈衝編碼調製)格式表示的樣本組成。

單聲道 WAV 檔案中,聲道0代表左聲道,聲道1代表右聲道;多聲道 WAV 檔案中,左右聲道的樣本是交替出現的。

1.1 檔案頭格式:

偏移地址 位元組數 資料型別 內容
0x00 4 char “RIFF”標誌
0x04 4 long int 檔案長度
0x08 4 char “WAVE”標誌
0x0C 4 char “fmt ”標誌
0x10 4 過度位元組(不定)
0x14 2 int 格式類別(0x10是PCM形式的聲音格式)
0x16 2 int 通道數(1為單聲道,2為雙聲道)
0x18 2 int 取樣率(每秒的樣本數,表示每個通道的播放速度)
0x1C 4 long int 波形音訊資料傳輸速率,為(通道數x每秒資料位數x樣本的資料位數/8,播放器根據此值估算緩衝區大小)
0x20 2 int 資料塊的調整數,為(通道數x沒樣本的資料位值/8),播放軟體一次需要處理多個該值大小的位元組資料,以便就愛將其值用於緩衝區的調整
0x22 2 每樣本的資料位數,表示每個聲道中各樣本的資料位數,如果有多個聲道,對每個聲道而言,樣本大小都一樣

1.2 資料體格式:

偏移地址 位元組數 資料型別 內容
0x24 4 char 資料標記符“data”
0x28 4 long int 語音資料的長度

然後就是語音資料幀了。下表中的0聲道代表左聲道,1聲道代表右聲道:

偏移地址 sample1 sample2
8位單聲道 0聲道 0聲道
8位雙聲道 0聲道,1聲道 0聲道,1聲道
16位單聲道 0聲道低位元組,0聲道高位元組 0聲道低位元組,0聲道高位元組
16位雙聲道 0聲道低位元組,0聲道搞位元組 1聲道低位元組,1聲道高位元組

1.3 WAV檔案格式例項分析(轉載)

地址段 0 1 2 3 4 5 6 7 8 9 A B C D E F
0x00000000 52 49 46 46 0A 06 01 00 57 41 56 45 66 6D 74 20
0x00000010 12 00 00 00 01 00 02 00 44 AC 00 00 10 B1 02 00
0x00000020 04 00 10 00 00 00 66 61 63 74 04 00 00 00 76 41
0x00000030 00 00 64 61 74 61 D8 05 01 00 00 00 00 00 FF FF
0x00000040 00 00 FE FF FE FF 00 00 00 00 FE FF FE FF 00 00
0x00000050 64 61 6B 61 D8 05 01 00
地址段 位元組數 資料型別 內容
0x00 - 0x03 4 4個char 標誌位,"RIFF"
0x04 - 0x07 4 1個int 檔案長度,小尾端,實際是0x0001060A
0x08 - 0x0B 4 4個char 標誌位,“WAVE”
0x0C - 0x0F 4 4個char 標誌位,“fmt ”,fmt表示為,最後一個是空格
0x10 - 0x13 4 1個int 0x00000012,sizeof(PCMWAVEFORMAT)
0x14 - 0x15 2 1個short 格式類別,1(WAVE_FORMAT_PCM)表示PCM形式的聲音資料
0x16 - 0x17 2 1個short 通道數,1為單聲道,2為雙聲道
0x18 - 0x1B 4 1個int 取樣率
0x1C - 0x1F 4 1個int 0x10B10000,每秒資料量
0x20 - 0x21 2 1個short 資料塊的調整值(按位元組算)
0x22 - 0x4F
0x50 - 0x53 4 4個char 標誌位,“data”
0x54 - 0x57 4 1個int 語音資料大小,0x000105D8

Reference

  1. WAV(PCM)檔案格式分析

相關文章