WAVE
建立在 RIFF 結構上的音頻文件容器,通常用於保存未壓縮 PCM,也可以封裝浮點 PCM、壓縮音頻與擴展聲道資訊。
詳細說明
WAVE(Waveform Audio File Format)是微軟與 IBM 制定、建立在 RIFF(Resource Interchange File Format)之上的音頻文件格式,常用擴展名為 `.wav`。文件由四字符代碼標識的塊組成:RIFF 頭聲明 WAVE 類型,`fmt ` 塊描述音頻編碼和參數,`data` 塊保存音頻數據;其他塊可記錄廣播元數據、採樣器資訊、標記點或附加説明。
WAVE 是容器,不是 PCM 的同義詞。
最常見的 WAVE 文件保存整數線性 PCM,但 `fmt ` 塊也能標識 IEEE 浮點 PCM、ADPCM、A-law、μ-law 以及通過註冊格式代碼表示的其他編碼。WAVE_FORMAT_EXTENSIBLE 擴展可明確有效位數、聲道掩碼和子格式,解決普通 WAVEFORMATEX 對高位深、多聲道和複雜格式描述不足的問題。僅看到 `.wav` 擴展名,不能保證內部一定是 44.1 kHz、16-bit 或未壓縮音頻。
經典 RIFF 使用 32-bit 無符號字段記錄塊長度,單個文件的可表示尺寸因而接近 4 GiB 上限。廣播和製作系統為長時間、多聲道或高採樣率錄音發展出 RF64 等擴展,以特殊長度標記和額外數據塊保存 64-bit 尺寸。Wave64 是另一套擴展結構,與 RF64 及普通 RIFF WAVE 不完全相同。
WAVE 的塊設計允許應用跳過不認識的附加塊,但軟件兼容性仍取決於塊順序、對齊、編碼代碼和擴展支持。廣播 WAVE(BWF)在兼容 WAVE 的基礎上加入描述、時間參考、來源和響度等製作元數據,音頻數據本身仍可採用 PCM。標籤軟件寫入的 RIFF INFO、ID3 或自定義塊並非所有播放器都會解釋。
把無損 PCM 保存為 WAVE 通常便於編輯和交換,但文件體積大於 FLAC、ALAC 等無損壓縮格式。兩者在正確轉換後可包含相同採樣;容器選擇不會自動改變聲音。相反,把有損音頻解碼成 WAVE 只會得到未壓縮的解碼結果,不能把已損失的資訊變回原始錄音。