WavPack

WavPack

WavPack是 David Bryant 開發的一個自由、開放原始碼的無損音頻壓縮格式

基本介紹

  • 中文名:WavPack
  • 外文名:WavPack
  • 用處:快速高效壓縮與解壓
  • 主要特點:自由、開放原始碼
簡介,特點,“混合”模式,WavPack 概要,WavPack 的歷史,WavPack 的支持,技術,

簡介

特點

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

“混合”模式

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

WavPack 概要

快速高效壓縮與解壓
開放原始碼,按照類似於BSD許可證的方式發布
WavPack轉換WavPack轉換
多平台
出錯時的健壯性
支持流媒體
支持多聲道以及高解析度
混合/有損模式
硬體支持
支持標籤(ID3v1、APEv2標籤)
支持 RIFF 格式的大塊數據
WavPack轉換WavPack轉換
兼容回放增益
良好的軟體支持
能夠生成 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 中預設支持
硬體支持 
運行開放原始碼 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 完全使用整數算術這樣一種簡單的預測,在“最快”模式下,預測值是前面兩個採樣的簡單數學外推。例如,如果前面兩個採樣是 -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。

相關詞條

熱門詞條

聯絡我們