FFmpeg 是一個可以執行錄影、轉檔、串流等功能的自由軟體,支援多種格式音訊和視訊。「Bit rate」中文譯作位元速率或比特率,它決定一個影片(含音訊)或純音訊檔案的總大小,指單位時間(影片通常為 1 秒)內傳輸和處理的位元數量,因此理論上越高的位元速率畫質(品質)也越好,不過如果要節省空間或適用網路串流,太大的位元速率只會造成檔案肥大的問題,那有沒有適中的解決方案?又能降低位元速率減少檔案大小,還能維持一定的畫質?有的!YouTube 上的影片就是很好的教材,你上傳任何影片到 YouTube 上都會被壓縮位元速率,根據自己的長期觀察,1920 x 1080 px 30 fps 的影片比特率都在 1.5Mbps ~ 1.7Mbps (1500kbps ~ 1700kbps) 上下、1920 x 1080 px 60 fps 的影片比特率都在 1.9Mbps ~ 2.1Mbps (1900kbps ~ 2100kbps) 上下,因此依照這個比特率輸出可以再最佳的畫質下節省空間或適用網路串流!以下將 Mbps 簡寫 M,kbps 簡寫 K,指令也都直接用簡寫唷!
但是很多影片編輯軟體(如:威力導演)用較低的位元速率輸出會導致塊狀相當嚴重,畫質低落,看到眼睛都痛了!因此就要透過比較強大且專業的轉檔程式來處理,也就是這次要用的 FFmpeg,然後提醒一下千萬別用「格式工廠」降比特率,效果超差且畫質惡劣,這個就是過來人的經驗。
FFmpeg 有兩個參數用來調整影片/音訊位元速率,分別是 -b:v
和 -b:a
,前者調整影片位元速率,後者調整音訊位元速率,還有 -b
可以調整影片的位元速率,但音訊會直接被採用 128K(0.128M)的位元速率。通常比較明顯可以改善檔案大小的都是調整影片位元速率,以下用兩個示範指令:
🎬 FFmpeg 調整影片位元速率、音訊原封不動輸出
ffmpeg -i input.mp4 -b:v 2000K -c:a copy output.mp4
說明:ffmpeg
啟動程式、-i
輸入影片檔案、-b:v
輸出影片的位元速率、-c:a copy
音源直接複製、輸出影片檔案。
將任何影片(不含音訊)的位元速率設定成 2000K (2M),音訊直接複製來源的,即原封不動。
🎬 FFmpeg 調整影片、音訊位元速率輸出
ffmpeg -i input.mp4 -b:v 2000K -b:a 320K output.mp4
說明:ffmpeg
啟動程式、-i
輸入影片檔案、-b:v
輸出影片的位元速率、-b:a
輸出影片內音訊的位元速率、輸出影片檔案。
將任何影片(不含音訊)的位元速率設定成 2000K (2M),音訊的位元速率設定成 320K (0.32M)。
🎬 FFmpeg 調整影片位元速率、音訊採 128K 輸出
ffmpeg -i input.mp4 -b 2200K output.mp4
說明:ffmpeg
啟動程式、-i
輸入影片檔案、-b
輸出影片的位元速率、輸出影片檔案。
將任何影片的位元速率設定成 2200K (2.2M),音訊則是以預設的 128K(0.128M)位元速率輸出。
🎞️ 圖文示範
這邊準備一個超大的原始影片 input.mp4,影片位元速率為 17000K(1.7M),音訊位元速率為 383K,然後輸出兩個檔案,output.mp4 僅改影片位元速率至 2000K(2M),output2.mp4 還多將音訊位元速率改至 320K。
▲ FFmpeg 輸出完成截圖!
▲ 左:原始檔案 input.mp4|中:輸出檔案 output.mp4|右:輸出檔案 output2.mp4。
很明顯中、右檔案大小小非常多,中音訊沒有更動,右將音訊位元速率降下去了!但檔案大小不算差很多,YouTube 在音訊上幾乎都壓到只剩 128K,這就是為什麼很多人都要聽無損。
留言區 / Comments
萌芽論壇