複製鏈接
請複製以下鏈接發送給好友

WavPack

鎖定
WavPack是 David Bryant 開發的一個自由、開放源代碼的無損音頻壓縮格式
中文名
WavPack
外文名
WavPack
用    處
快速高效壓縮與解壓
主要特點
自由、開放源代碼

WavPack簡介

WavPack特點

WavPack 允許用户壓縮、恢復 8、16、24 位 以及 32 位浮點表示的 WAV 格式音頻文件,另外它還支持多聲道數據流以及非常高的採樣率。與其它無損壓縮機制一樣,這種算法的壓縮比例也隨源數據的不同而變化,但是對於普通的流行音樂來説通常介於 30% 到 70% 之間,對於古典音樂及其它音域較寬的音樂來説通常能得到更高的比例。

WavPack“混合”模式

另外 WavPack 引入了一種獨特的“混合”模式,它使用一個附加的文件從而也具有了有損壓縮的優點。與其它方法只生成一個文件不同,這種模式生成兩個文件,其中一個是相對較小、可以單獨使用的高質量有損壓縮文件,另外一個是與有損文件一起使用,實現無損數據恢復的“修正”文件。對於一些用户來説,這就意味着他們不必再考慮使用有損還是無損壓縮這樣一個問題。

WavPack概要

快速高效壓縮與解壓
WavPack轉換 WavPack轉換 [1]
開放源代碼,按照類似於BSD許可證的方式發佈
多平台
出錯時的健壯性
支持流媒體
支持多聲道以及高分辨率
混合/有損模式
硬件支持
支持標籤(ID3v1、APEv2標籤)
WavPack轉換 WavPack轉換
支持 RIFF 格式的大塊數據
兼容回放增益
良好的軟件支持
能夠生成 Win32 平台下的自解壓文件
支持 32 位浮點數據流
支持嵌入式節目單
包含用於完整性檢查的 MD5 散列函數
可以按照對稱或者不對稱模式進行編碼(降低編碼速度可以提高解碼速度)。

WavPack歷史

David Bryant 在 1998 年年中開始了 WavPack 的開發併發布了 1.0 版,這第一個版本只有無損壓縮解壓音頻這項功能,但是當時它就已經躋身效率與速度比最好的編碼器之列了。
在 1.0 版之後,很快 Bryant 就發佈了 2.0 版,這個版本的特點是使用了有損編碼,它直接對預測殘餘進行了量化以減少數據量,而沒有使用心理聲學 masking 模型。
1999 年,他發佈了 3.0 版,新穎的功能成為這個版本的特點,例如通過減小壓縮比實現的快速模式、壓縮無頭原始PCM音頻文件以及使用 32 位循環冗餘校驗的錯誤檢測功能。
WavPack 的開發仍在繼續,在 後面的 3.x 版本中添加的一個主要特點就是混合模式,在這種模式下編碼器生成一個有損文件以及一個糾正文件,這樣它們就可以經過解壓還原出原始的 PCM 數據流
WavPack 4 最近才發佈,這個版本包括許多重要的改進,如快速搜索、多聲道支持、高分辨率音頻支持等等,這些特性使它成為功能最全的時髦無損音頻壓縮器之一。最近的 4.x 穩定版本是 4.31,針對 Linux/OSX 的錯誤修正之後得到用於這些系統的 4.32 版,但是它沒有與質量相關的更改。
Bryant 最近發佈了未來 WavPack 4.4 的測試版以先睹為快,它包括的功能有針對單聲道或者接近單聲道的音頻數據的改進處理、以及重新設計的壓縮質量系統,這種改進可以以大幅增強的效率實現類似的壓縮。

WavPack軟件支持

由 Speek 開發的自定義 Windows 前端
NullSoft Winamp (插件 w/ ReplayGain & Media Library 支持)
foobar2000 - Advanced Audio Player (官方插件,w/ ReplayGain & Cuesheets 支持)
Windows Media Player (帶有 CoreWavPack directshow 濾波器)
XMMS (帶有 Kuniklo 的 插件) (源代碼)
LAMIP (官方插件) - 用於 Linux 及相關係統的模塊化音頻播放器 - 主頁
Adobe Audition (and CoolEdit) (filter w/ 32-bit floats & extra info save support)
dBpowerAMP - Music Converter / Audio Player / CD Writer (官方插件)
Apollo Audio Player (插件支持 w/ ReplayGain )
MusikCube - 自由音頻播放器 (w/ WavPack 插件)
Ahead Nero Burning ROM (w/ 插件)
MrQuestionMan - Audio Identifier
Burrrn - 直接從不同的格式燒製音頻 CD
Mp3tag - 通用標籤編輯器
Exact Audio Copy - CD Ripper ( w/ wavpack.exe 是外部壓縮程序)
VUPlayer - 自由的多種格式音頻播放器與轉換器
Xist (beta) - 支持 WavPack 的 OS X 播放器(源代碼
帶有官方插件的 XMPlay, - 用於 Windows 的自由小播放器
Cog - 支持 WavPack 的用於 OS X 的新播放器
MPXPlay - 支持 WavPack 的基於 DOS(MS-DOS、FreeDOS、DR-DOS)的播放器
1by1 與 Coolplayer,帶有 Winamp WavPack 插件
不同平台的 WavPack 編譯版本
The GodFather - 標籤與音樂管理器
Wavpack4Wavelab - 第一款商用/專業波形編輯的第三方文件輸入輸出插件Steinberg Wavelab 5/6
Easy CD-DA Extractor - 商業 CD 音軌抓取、編碼及轉換工具
OggdropXPd - 直接從包括 WavPack 在內的各種無損格式轉換成有損開放源代碼 Ogg Vorbis 格式
Quintessential Player 帶有 插件
KSP Sound Player 中缺省支持

WavPack硬件支持

運行開放源代碼 Rockbox 固件的播放器,如 iriver ihp100、ihp120、ihp140、H320、H340 以及 iPod Video/Color/Photo/Nano (Rockbox 主頁)
Roku PhotoBridge HD (w/ 插件)
自從 2005 年起,WavePack 就開始用於 DVD+Audio 上的音頻壓縮取代 DVD-Audio 上昂貴的 Meridian Lossless Packing。

WavPack技術

為了保證高速運算,WavPack 完全使用整數算術這樣一種簡單的預測,在“最快”模式下,預測值是前面兩個採樣的簡單數學外推。例如,如果前面兩個採樣是 -10 與 20,那麼預測值就是 50。在缺省模式下,使用一個簡單的自適應因子衡量前面採樣對於預測影響的權重。在我們的這個例子中預測值可能從 20 到 50 之間變化,也就是前面的採樣從沒有影響到影響最大這樣一個範圍變化。這個權重因子隨着音頻數據頻譜特性的變化而不斷更新,所以它是“自適應”的。
然後從待編碼的實際採樣中減去生成的預測值得到誤差,在單聲道模式下這個值直接送到編碼器去,但是立體聲信號通常在兩個聲道之間有一些能在後面使用的相關性,所以左右聲道分別計算出各自的誤差值。在“快速”運算模式下這兩個新生成的值直接送到編碼器而不管它是左聲道還是右聲道。在缺省模式下,這個誤差值總是隨着平均、左或者右三者之一發送到編碼器。自適應算法根據聲道不斷變化的平衡性確定發送三者中最有效的一個。
David Bryant 為 WavPack 開發了一個獨特的數據編碼器,他認為這個編碼器有兩個方面要比 Rice編碼優秀。由於對於這種類型的數據來説 Rice 編碼代表了最優的位編碼(有時也稱作哈夫曼編碼)。WavPack 編碼要比它稍稍遜色一點,大約差距是 0.15 位/採樣,也就是説 16 位數據大約差 1%。WavPack 編碼器的第一個優點是在編碼前數據無需緩存,它將每個採樣直接轉換成位碼。這從計算的角度來講效率更高,在一些延遲控制很關鍵的應用中表現更好。它的第二個優點是很容易適應有損編碼,這是因為除了隱含的一個最高位之外所有重要的數據位都直接進行發送。按照這種方法,就可以只傳送每個採樣中帶有符號的最高 3 位。實際上,可以只傳送符號位以及用平均 3.65 位/採樣 表示的使用隱含最高位的採樣值。
這個編碼機制用於實現 WavPack 的“有損”模式。在“快速”模式下,非自適應去相關的輸出只是簡單地四捨五入到最近的特定位數的編碼值。在缺省模式下,使用自適應的去相關,它可以將噪聲平均減小 1 dB,並且當前以及下一個採樣在選擇兩個可用的編碼值時都參與衡量,這又將噪聲減小 1 dB。
由於開發者認為整數運算受不同芯片的影響較小,而芯片的不同可能帶來無損壓縮特性的變化,如 Pentium 浮點運算的缺陷就是一個明顯的例子,所以他決定在 WavPack 算法的數據處理中不使用浮點運算。使用浮點運算無損壓縮工具如果運行在有缺陷的 Pentium 芯片上可能就會生成不同的結果。即使我們不考慮這些已經存在的缺陷,浮點運算也很複雜,在不同的“正確”實現之間也可能有微小差別,對於這類應用可能會帶來麻煩。為了進一步加強 WavPack 壓縮數據的完整性,編碼器在生成的數據流後包括有一個 32 位的錯誤檢測碼。
WavPack 的源代碼非常易於移植到其它平台,它已經可以在幾種不同的 Unix 系統上編譯,如 Linux、Mac OS X、Solaris、FreeBSD、OpenBSD、康柏 Tru64、HP-UX等等,另外它也可以在Microsoft Windows、DOS、Palm OS 以及 OpenVMS 上編譯。它可以在許多平台上工作,如x86、ARM架構、PowerPC、AMD64、IA-64、SPARC、DEC Alpha、PA-RISC、MIPS以及Motorola 68k。
[2] 
參考資料