FFmpeg全名是Fast Forward MPEG(Moving Picture Experts Group),為開源的影音多媒體處理框架,可以進行影音的解碼、編碼、編碼轉換、混合、抽取、串流和濾鏡,無論影音格式是從哪個地方出來的,從過去到現在的影音格式它幾乎都能夠支援。當然,它也可以利用LAME這款高品質的開源MP3編碼器來進行MP3轉檔。
LAME常用的MP3轉檔參數不外乎就是其內建的insane
、extreme
、standard
、medium
這四種配置。insane
使用CBR(固定位元率)編碼方式與MP3最大的320kbps位元率來編碼,可以得到最佳的聲音品質;extreme
使用VBR(變動位元率)編碼方式與約在245kbps(44.1kHz雙聲道時)上下浮動的位元率來編碼,音質接近CBR 320kbps,正常人聽不出二者差異;standard
使用VBR編碼方式與約在190kbps上下浮動的位元率來編碼,音質能被大眾接受;medium
使用VBR編碼方式與約在165kbps上下浮動的位元率來編碼,音質已有明顯壓縮感,但是還算可以接受。
有關於LAME的詳細用法可以參考這篇文章:
LAME本身的指令工具固然好用,但它所支援的輸入格式有限。如果要更方便使用LAME來進行MP3轉檔,甚至是直接將影片中的音軌轉成MP3格式的話,就要透過FFmpeg來完成了。不過FFmpeg有著自己的一套複雜的命令列介面(CLI),並不像LAME本身的指令工具有提供內建的四種參數配置。
事實上,LAME的insane
、extreme
、standard
、medium
這四種內建配置,分別對應著-b 320k
、-V 0
、-V 2
和-V 4
參數。-b
可以用來設定CBR編碼時所使用的最低位元率,-V
則可以設定VBR編碼時的品質,數值範圍是0~9,愈低愈好。
FFmpeg提供的-b:a
(-ab
)和-q:a
(-qscale:a
)參數可分別對應LAME指令工具的-b
和-V
參數,且根據轉換出來的位元率可以整理出下表(VBR位元率的部份以44.1kHz雙聲道時為準):
FFmpeg 參數 | LAME 配置名稱 | 位元率範圍 |
---|---|---|
-b:a 320k |
insane |
320 kbps (CBR) |
-b:a 256k |
256 kbps (CBR) | |
-b:a 192k |
192 kbps (CBR) | |
-b:a 160k |
160 kbps (CBR) | |
-b:a 128k |
128 kbps (CBR) | |
-q:a 0 |
extreme |
220 ~ 260 kbps |
-q:a 1 |
190 ~ 250 kbps | |
-q:a 2 |
standard |
170 ~ 210 kbps |
-q:a 3 |
150 ~ 195 kbps | |
-q:a 4 |
medium |
140 ~ 185 kbps |
-q:a 5 |
120 ~ 150 kbps | |
-q:a 6 |
100 ~ 130 kbps | |
-q:a 7 |
80 ~ 120 kbps | |
-q:a 8 |
70 ~ 105 kbps | |
-q:a 9 |
45 ~ 85 kbps |
透過FFmpeg使用LAME的insane
配置進行編碼的指令如下:
透過FFmpeg使用LAME的extreme
配置進行編碼的指令如下:
透過FFmpeg使用LAME的standard
配置進行編碼的指令如下:
透過FFmpeg使用LAME的medium
配置進行編碼的指令如下:
ABR(平均位元率)編碼
LAME的指令工具有支援ABR編碼方式,也就是說,我們可以在保有VBR優點(位元率會根據音訊複雜度自動增減)的情況下利用以下公式來預估編碼後的MP3檔案的大小:
#{{{
{ \text{固定或平均位元率(Kbps, Kb/s)} \times \text{時間(s, 秒)} \over \text{8(b/B)} } = \text{MP3檔案大小(KB)}
}}}#
使用FFmpeg來操作LAME編碼器時,若要使用ABR編碼方式,要在使用-b:a
參數的同時加上-abr 1
參數。例如以下指令可以輸出平均位元率約為128kbps的MP3音訊: