WAV文件格式詳解

1.概述

Waveform Audio File FormatWAVE,又或者是因?yàn)?code>WAV后綴而被大眾所知的),它采用RIFF(Resource Interchange File Format)文件格式結(jié)構(gòu)。通常用來保存PCM格式的原始音頻數(shù)據(jù),所以通常被稱為無損音頻。但是嚴(yán)格意義上來講,WAV也可以存儲(chǔ)其它壓縮格式的音頻數(shù)據(jù)。

2.格式解析

WAV文件遵循RIFF規(guī)則,其內(nèi)容以區(qū)塊(chunk)為最小單位進(jìn)行存儲(chǔ)。WAV文件一般由3個(gè)區(qū)塊組成:RIFF chunk、Format chunkData chunk。另外,文件中還可能包含一些可選的區(qū)塊,如:Fact chunk、Cue points chunk、Playlist chunkAssociated data list chunk等。
本文將只介紹RIFF chunkFormat chunkData chunk。

2.1 RIFF區(qū)塊

名稱 偏移地址 字節(jié)數(shù) 端序 內(nèi)容
ID 0x00 4Byte 大端 'RIFF' (0x52494646)
Size 0x04 4Byte 小端 fileSize - 8
Type 0x08 4Byte 大端 'WAVE'(0x57415645)
  • 'RIFF'為標(biāo)識(shí)
  • Size是整個(gè)文件的長度減去IDSize的長度
  • TypeWAVE表示后面需要兩個(gè)子塊:Format區(qū)塊和Data區(qū)塊

2.2 FORMAT區(qū)塊

名稱 偏移地址 字節(jié)數(shù) 端序 內(nèi)容
ID 0x00 4Byte 大端 'fmt ' (0x666D7420)
Size 0x04 4Byte 小端 16
AudioFormat 0x08 2Byte 小端 音頻格式
NumChannels 0x0A 2Byte 小端 聲道數(shù)
SampleRate 0x0C 4Byte 小端 采樣率
ByteRate 0x10 4Byte 小端 每秒數(shù)據(jù)字節(jié)數(shù)
BlockAlign 0x14 2Byte 小端 數(shù)據(jù)塊對(duì)齊
BitsPerSample 0x16 2Byte 小端 采樣位數(shù)
  • 'fmt '為標(biāo)識(shí)
  • Size表示該區(qū)塊數(shù)據(jù)的長度(不包含IDSize的長度)
  • AudioFormat表示Data區(qū)塊存儲(chǔ)的音頻數(shù)據(jù)的格式,PCM音頻數(shù)據(jù)的值為1
  • NumChannels表示音頻數(shù)據(jù)的聲道數(shù),1:單聲道,2:雙聲道
  • SampleRate表示音頻數(shù)據(jù)的采樣率
  • ByteRate每秒數(shù)據(jù)字節(jié)數(shù) = SampleRate * NumChannels * BitsPerSample / 8
  • BlockAlign每個(gè)采樣所需的字節(jié)數(shù) = NumChannels * BitsPerSample / 8
  • BitsPerSample每個(gè)采樣存儲(chǔ)的bit數(shù),8:8bit,16:16bit,32:32bit

2.3 DATA區(qū)塊

名稱 偏移地址 字節(jié)數(shù) 端序 內(nèi)容
ID 0x00 4Byte 大端 'data' (0x64617461)
Size 0x04 4Byte 小端 N
Data 0x08 NByte 小端 音頻數(shù)據(jù)
  • 'data'為標(biāo)識(shí)
  • Size表示音頻數(shù)據(jù)的長度,N = ByteRate * seconds
  • Data音頻數(shù)據(jù)

3. 小端存儲(chǔ)

WAV文件以小端形式來進(jìn)行數(shù)據(jù)存儲(chǔ)。

所謂的大端模式,是指數(shù)據(jù)的低位保存在內(nèi)存的高地址中,而數(shù)據(jù)的高位,保存在內(nèi)存的低地址中;
所謂的小端模式,是指數(shù)據(jù)的低位保存在內(nèi)存的低地址中,而數(shù)據(jù)的高位保存在內(nèi)存的高地址中。

下面解釋一下PCM數(shù)據(jù)在WAV文件中的bit位排列方式

PCM數(shù)據(jù)類型 采樣 采樣
8Bit 單聲道 聲道0 聲道0
8Bit 雙聲道 聲道0 聲道1
16Bit 單聲道 聲道0低位,聲道0高位 聲道0低位,聲道0高位
16Bit 雙聲道 聲道0低位,聲道0高位 聲道1低位,聲道1高位
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容