基本編碼

影片壓縮基本資訊

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

如果您是第一次使用影片壓縮功能,請觀看這部影片,進一步瞭解需要影片壓縮的需求,以及影片的運作方式。

簡易編碼

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

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 的 VoD,其中 0 是最高品質,4 是最低品質。Realtime 個有效值為 5-8;數字越小代表品質越高
-tile-columns 「分割」功能可將影片分割為矩形,方便您在進行多執行緒時對影片進行編碼及解碼。圖塊數量一律為 2。0=1 個圖塊,1=2,2=4,3=8,4=16,5=32。

下列 FFmpeg 指令會建立 640x480 檔案,並將畫質設為 'good' 速度設為 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

畫質和速度設定選項可能會因解析度和可用的處理能力而異。下一節將提供完整的建議。