FFmpeg全名是Fast Forward MPEG(Moving Picture Experts Group),為開源的影音多媒體處理框架,可以進行影音的解碼、編碼、編碼轉換、混合、抽取、串流和濾鏡,無論影音格式是從哪個地方出來的,從過去到現在的影音格式它幾乎都能夠支援。當然,它也可以利用Opus的官方開源Opus編碼器來進行Opus轉檔。
Opus的opusenc
指令工具常用的轉檔參數不外乎就是控制變動位元率的--bitrate
,其後面接的數值範圍在會跟聲道數量有關,每個聲道的位元率範圍是6 ~ 256 kbps,也就是說雙聲道的話,數值範圍在12 ~ 512之間。
有關於opusenc
的詳細用法可以參考這篇文章:
Opus本身的指令工具固然好用,但它所支援的輸入格式有限。如果要更方便使用opusenc
來進行Opus轉檔,甚至是直接將影片中的音軌轉成Opus格式的話,就要透過FFmpeg來完成了。不過FFmpeg有著自己的一套複雜的命令列介面(CLI),與opusenc
的用法並不相同。
opusenc
的--bitrate
參數會對應到FFmpeg的-b:a
(-ab
)參數。
透過FFmpeg輸出音質最高的Opus的指令如下(雙聲道):
不過Opus是強在中、低位元率,所以其實雙聲道用到--bitrate 175
,聽起來就和原始音質差不多了。
CBR(固定位元率)和CVBR(約束的變動位元率)編碼
opusenc
還有提供更能精確控制輸出位元率的編碼模式,當然愈固定的位元率,編碼效果愈差,不過我們就可以利用以下公式來預估編碼後的Opus檔案的大小:
#{{{
{ \text{固定或約束的變動位元率(Kbps, Kb/s)} \times \text{時間(s, 秒)} \over \text{8(b/B)} } = \text{Opus檔案的大小(KB)}
}}}#
使用FFmpeg來操作Opus官方編碼器時,若要使用CBR或CVBR編碼方式,可以傳入-vbr
參數並在其後接上off
(CBR)或是constrained
(CVBR)。
例如以下指令可以輸出固定位元率為320kbps的Opus音訊:
以下指令可以輸出約束的變動位元率為320kbps的Opus音訊: