基本編碼

影片壓縮基礎知識

本節將介紹 VP9 編碼的基本選項,包括影格大小、基本位元率控制和品質。

如果您是影片壓縮新手,建議觀看這部影片,進一步瞭解影片壓縮的必要性與運作方式。

簡單編碼

下列 FFmpeg 指令會將輸入檔案轉換為 VP9 影片,並使用 Opus 音訊。這是最簡單的編碼方式,使用預設設定。

ffmpeg -i tears_of_steel_1080p.webm -c:v libvpx-vp9 -c:a libopus output.webm

這項 FFmpeg 編碼作業會使用下列指令列參數:

FFmpeg
-i <filename> 指定輸入檔案名稱
-c:v libvpx-vp9 告知 FFmpeg 建立 VP9 影片
-c:a libopus 告知 FFmpeg 建立 Opus 音訊
output.webm 指定輸出檔案名稱

FFmpeg 會根據您使用的輸出檔案名稱,推斷要製作的檔案類型。在本範例中,FFmpeg 會輸出 WebM 檔案,因為我們要求 output.webm

解析度

每部影片都有畫面大小 (以像素為單位表示寬度和高度)。下列 FFmpeg 指令列參數可用於控管 VP9 編碼的輸出影片影格大小:

FFmpeg
-vf scale=<width>x<height> 畫格寬度和高度

舉例來說,下列 FFmpeg 指令會輸出 640x480 的 VP9 WebM 影片。

ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x480 \
  -c:v libvpx-vp9 -c:a libopus output.webm

解析度越小,畫質越低,但解析度越大,所需的頻寬和解碼處理能力就越高,舊裝置可能無法支援。以 VP9 來說,640x480 是適用於各種行動裝置和網路裝置的安全解析度。

位元率 (位元率)

VP9 支援多種不同的位元率模式:

模式
常數量化器 (Q) 可指定固定量化器值,位元率會有所不同
受限品質 (CQ) 可設定最高畫質等級。位元率參數內的品質可能不一
可變位元率 (VBR) 在位元率限制內,隨著時間推移平衡品質和位元率
固定位元率 (CBR) 嘗試維持相當穩定的位元率,但畫質會有所變化

建議對檔案型影片 (而非直播) 使用 CQ 模式。 下列 FFmpeg 指令列參數用於 CQ 模式:

FFmpeg
-b:v <arg> 設定目標位元率 (例如 500k)
-minrate <arg>
-maxrate <arg>
設定最小和最大位元率。
-crf <arg> 設定最高品質等級。有效值介於 0 至 63 之間,數字越小代表品質越高。

舉例來說,下列 FFmpeg 指令會使用 CQ 模式建立 640x480 的中等畫質影片檔案,平均位元率為 750kbps,最高畫質限制為 33。

ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x480 \
  -b:v 750k -crf 33 -c:v libvpx-vp9 -c:a libopus output.webm

位元率會因你希望達成的畫質和影片解析度而異。如要查看各種解析度的完整建議位元率,請按這裡

畫質和速度設定

壓縮影片時,輸出品質與建立影片所需時間之間會有所取捨。一般來說,編碼時間越長,畫質就越高,但達到最高畫質所需的時間可能不切實際。

VP9 提供多種設定,可平衡畫質和速度:

  • 畫質設定會指示編碼器壓縮影片的方式。可用的模式包括最佳、良好和即時。

  • 透過執行緒設定,編碼器可以使用多個 CPU 執行緒來編碼影片。這些設定可能會稍微降低品質,但可大幅提升編碼和解碼速度。

這兩種類型的設定是由數個指令列參數控制:

FFmpeg
-threads 指出編碼期間要使用的執行緒數量。
-quality 可設為 goodbestrealtime
-speed 這個參數的意義會因品質設為 goodrealtime 而異。速度設定 0-4 適用於 goodbest 中的隨選影片,0 為最高品質,4 為最低品質。Realtime 有效值為 5-8,數字越小代表品質越高
-tile-columns 分格會將影片分割成矩形區域,以便進行多執行緒編碼和解碼。圖塊數量一律為 2 的乘冪。0=1 個圖塊、1=2、2=4、3=8、4=16、5=32。

下列 FFmpeg 指令會建立 640x480 的檔案,並將品質設為「良好」,速度設為 0 (高品質):

ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x480 \
  -b:v 750k -quality good -speed 0 -crf 33 -c:v libvpx-vp9 -c:a libopus \
  output.webm

畫質和速度設定選項可能會因解析度和可用處理能力而異。如需完整建議,請參閱下一節。