FFmpeg全名是Fast Forward MPEG(Moving Picture Experts Group),為開源的影音多媒體處理框架,可以進行影音的解碼、編碼、編碼轉換、混合、抽取、串流和濾鏡,無論影音格式是從哪個地方出來的,從過去到現在的影音格式它幾乎都能夠支援。當然,FFmpeg也有內建FLAC和ALAC編碼器,可以將音訊轉成FLAC或ALAC格式。



FLAC(Free Lossless Audio Codec)是一種音訊無損壓縮(Lossless Compression)的編碼格式,有別於AAC或MP3等等的有損壓縮(Lossy Compression),採用FLAC編碼之音訊的音質並不會有任何的損失,經過解碼(Decode)後能還原出原始的訊號。也因此,在進行FLAC編碼的時候,其實不需要去調整什麼參數來讓它的音質更好或更差,我們只需要去控制它的壓縮率就好了。

ALAC(Apple Lossless Audio Codec)也是一種音訊無損壓縮的編碼格式,由蘋果公司開發,經常被用在MP4容器內,純聲音的話副檔名為.m4a。ALAC編碼的時候似乎無法像FLAC這樣去控制壓縮程度,不過它的壓縮程度與FLAC差異不大。

FFmpeg的-compression_level參數可以控制FLAC的壓縮率,後面要接一個數值,數值範圍在0 ~ 12之間,預設值是5,其實5就能在保有良好編碼速度下有著不錯的壓縮率了。

透過FFmpeg輸出壓縮程度最高的FLAC的指令如下:

ffmpeg -i 輸入的影音檔案路徑 -acodec flac -compression_level 12 輸出的影音檔案路徑

或是直接不加-compression_level參數,使用預設值也行。

ffmpeg -i 輸入的影音檔案路徑 -acodec flac 輸出的影音檔案路徑

透過FFmpeg輸出ALAC的指令如下:

ffmpeg -i 輸入的影音檔案路徑 -acodec alac 輸出的影音檔案路徑