2009年4月26日 星期日

speex的相關函式

初始化一個編碼器
void *speex_encoder_init(const SpeexMode *mode);

類似ioctl,直接對底層要求服務
int speex_encoder_ctl(void *state, int request, void *ptr);
SPEEX_SET_COMPLEXITY // 設定編碼複雜度
SPEEX_SET_VBR // 設定VBR是否要開啟

目前mp3有三種壓縮演算法:

CBR (固定位元率) : 鎖定一個固定位元率來編碼,檔案容量最大。(320kbps的CBR,為目前mp3最高音質,但檔案也是最大。)

VBR (變動位元率) : 在保持音質的前提下,會自動依聲音複雜程度來加強或減少資料流量。如:在檔案無聲的部份,減少流量;在大動態或大編制的場景,則增加流量。可在最小音質破壞的限度內,達到節省空間的目的,流量上下限也可以設定。

ABR (平均位元率):由LAME發展,介於CBR與VBR之間的一種模式,基本上就是以CBR的演算法去做VBR的工作。簡單的分別就是,VBR可設定流量的上下限,而ABR可再多加設定流量平均值(中間值)。

不懂的話沒關係,反正普遍情況是這樣的:

音質:CBR > VBR → ABR

192 kbps以下的CBR,與後兩者無明顯差異,但檔案容量差很多,建議有心要壓CBR就直接衝高流量!

檔案大小:CBR → VBR & ABR

後兩者隨參數設定而有差別,大致上差不了多少

參考資料:
MP3基本介紹與LAME設定
您的聲音工具分貝 ( dB ) 知多少?

沒有留言: