FFmpeg全名是Fast Forward MPEG(Moving Picture Experts Group),為開源的影音多媒體處理框架,可以進行影音的解碼、編碼、編碼轉換、混合、抽取、串流和濾鏡,無論影音格式是從哪個地方出來的,從過去到現在的影音格式它幾乎都能夠支援。當然,它也可以利用Ogg Vorbis這款開源Ogg編碼器來進行Ogg轉檔。
Ogg Vorbis的oggenc
指令工具常用的轉檔參數不外乎就是控制音質的-q
以及控制平均變動位元率的-b
。-q
後面接的數值範圍在-1 ~ 10之間,數值愈大音質愈高。-b
後面接的數值及表示想要輸出的平均變動位元率,數值範圍在32 ~ 500之間。
有關於oggenc
的詳細用法可以參考這篇文章:
Ogg Vorbis本身的指令工具固然好用,但它所支援的輸入格式有限。如果要更方便使用Ogg Vorbis來進行Ogg轉檔,甚至是直接將影片中的音軌轉成Ogg格式的話,就要透過FFmpeg來完成了。不過FFmpeg有著自己的一套複雜的命令列介面(CLI),與oggenc
的用法並不相同。
oggenc
的-q
參數會對應到FFmpeg的-q:a
(-qscale:a
)參數;-b
參數會對應到FFmpeg的-b:a
(-ab
)參數。直接使用-q:a
或是-b:a
參數都是屬於VBR(變動位元率)的編碼方式,其實那個「q」(品質參數)和「b」(位元率參數)的數值是可以對應的,列表如下:
品質參數 | 位元率參數 |
---|---|
-q:a -1 |
-b:a 45k |
-q:a 0 |
-b:a 64k |
-q:a 1 |
-b:a 80k |
-q:a 2 |
-b:a 96k |
-q:a 3 |
-b:a 112k |
-q:a 4 |
-b:a 128k |
-q:a 5 |
-b:a 160k |
-q:a 6 |
-b:a 192k |
-q:a 7 |
-b:a 224k |
-q:a 8 |
-b:a 256k |
-q:a 9 |
-b:a 320k |
-q:a 10 |
-b:a 500k |
透過FFmpeg輸出音質最高的Ogg的指令如下:
不過在48kHz的取樣頻率下,用到-q:a 7
聽起來就與原始聲音無異了。所以比較推薦用的高音質轉檔指令如下:
透過FFmpeg輸出平均變動位元率逼近320kbps的Ogg的指令如下:
CBR(固定位元率)和ABR(平均位元率)編碼
Ogg編碼格式無CBR和ABR編碼方式,不過事實上oggenc
指令工具本身有提供一個--managed
參數,能讓使用者搭配-b
參數來使用「managed」模式進行編碼。「managed」模式實現了CVBR(約束的變動位元率)的編碼方式,讓輸出音訊資料的位元率更逼近轉檔時輸入的位元率。不過這個「managed」模式,FFmpeg並沒有提供參數讓使用者透過CLI來調用,就看以後會不會新增了。