基本編碼
影片壓縮基本資訊
本節說明 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 |
可能會設為 good 、best 或 realtime |
-speed |
這個參數的涵義會因品質設為 good 或 realtime 而異。速度設定 0-4 適用於 good 和 best 的 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
畫質和速度設定選項可能會因解析度和可用的處理能力而異。下一節將提供完整的建議。