WAVE 格式筆記


整個wave主要分為三個區塊:

區塊名稱 說明
 RIFF
Wikipedia – RIFF
 FMT
音樂格式
 DATA
音樂資料

RIFF區塊

   檔案位置(byte)  所需大小(byte)  備註
 ChunkID  0  4 "RIFF"
 ChunkSize  4  4  檔案長度 – ChunkID & ChunkSize所佔的長度
 Format  8  4  "WAVE"

FMT區塊

   檔案位置(byte) 所需大小(byte)   備註
 SubChunk1 ID  12  4  "fmt "
 SubChunk1 Size  16  4  若是PCM, 則為16, 可由此推斷是否有附加訊息
 AudioFormat  20  2  編碼格式, 通常為0x0001(PCM)
 NumChannels  22  2  頻道數, Mono = 1, Stereo = 2, etc.
 SampleRate  24  4  採樣頻率, 8000, 44100, etc.
 ByteRate  28  4  每秒所需byte
 BlockAlign  32  2  資料區塊對齊單位
 BitsPreSample  34  2  每個採樣的bit
 ExtraParamSize  2  若是屬於PCM, 則沒有額外資料
 ExtraParams  x

Wikipedia – PCM

DATA區塊

    檔案位置(byte)  所需大小(byte) 備註
 Subchunk2 ID  36  4 "data"
 Subchunk2 Size  40  4 == NumSamples * NumChannels * BitsPerSample/8
 Data  44  *

結構

RIFF
 struct RIFF_HEADER
 {
      cahr          szRiffID[4];     // ‘RIFF’
      DWORD    dwRiffSize;
      char          szRiffFormat[4];     // ‘WAVE’
};
 FMT
 struct WAVE_FORMAT
 {
      char        szFmtID[4];     // ‘fmt ‘, 注意這邊有一個空格
      DWORD  dwFmtSize;
      WORD     wFormatTag;
      WORD     wChannels;
      DWORD  dwSamplesPerSec;
      DWORD  dwAvgBytesPerSec;
      WORD     wBlockAlign;
      WORD     wBitsPerSample;
};


 DATA
 struct DATA_BLOCK
 {
      char         szDataID[4];      // ‘data’
      DWORD dwDataSize;
 };


小結
嗯~這次沒有想多說什麼

◎參考:
wav文件格式分析详解
WAVE PCM soundfile format
PCM Audio and Wave Files

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 變更 )

Twitter picture

You are commenting using your Twitter account. Log Out / 變更 )

Facebook照片

You are commenting using your Facebook account. Log Out / 變更 )

Google+ photo

You are commenting using your Google+ account. Log Out / 變更 )

連結到 %s