VOD 建議設定
目的
本節提供在執行檔案型編碼 (即未上線) 時,採用 VP9 編碼設定的建議。
這些建議適用於以下目標:
- 在品質與編碼速度之間取得平衡
- 達成合理品質的最低位元率
- 適合各種內容類型的設定
這些建議不會:
- 地址即時編碼
- 針對特定內容類型 (例如高動態運動影片) 進行最佳化調整
- 配置特定裝置或網路的設定
單一解析度編碼
VP9 支持一系列幀尺寸,包括微小分辨率到 4K。較大的影格大小可提升高畫質,但這類頻寬會需要較多的頻寬來提供內容,而且需要更強大的處理效能才能解碼。
如果您只建立單一解析度,640x480 是一個安全投注機制,適用於各式各樣的網路和行動裝置。下列 FFmpeg 指令列參數可讓您建立解析度為 750kbps 的單一解析度檔案。
-vf scale=640x480 -b:v 750k -quality good -speed 0 -crf 33 \
-c:v libvpx-vp9 -c:a libopus output.webm
多重解析度編碼
如果您打算指定多種解析度,或您的傳送網路出現頻寬不足的情況,建議您建立多種解析度。這樣您的播放器就可以控制要向觀眾顯示哪個解析度。
多重解析度影片編碼通常用於自動調整位元率串流,影片播放器會根據使用者的頻寬即時切換解析度。例如,Shaka Player 可讓您播放多重解析度編碼,其中每個 VP9 編碼都是單獨的檔案,而 DASH 資訊清單提供每個編碼的相關資訊。
如要進一步瞭解如何以自動調整串流格式包裝影片,請參閱 Shaka Packager。本指南將著重介紹多種解析度的 VP9 編碼設定。
建議設定
以下所有設定可用於個別解析度的個別檔案。請注意,640x480 版本有兩種版本:一個是低品質 (LQ),另一種則是中等品質 (MQ)。
位元率
為 VP9 檔案進行隨選檢視時,建議使用壓縮品質 (CQ) 模式。此編碼模式可讓您指定目標平均位元率,同時控制影片的最高品質,以及最小和最大位元率。
下列位元率建議為網頁和行動發布的基準。這些建議可大幅降低位元率,以便滿足消費者網頁和行動裝置發布的需求;請將其視為具有低品質建議,但依然可以達到合理的品質。
以上述範例來說,建議將最小位元率設為目標位元率的 50%,並將最大位元率設為目標的 145%。
畫面大小/影格速率 | 目標位元率 (VOD、kbps) | 最小位元率 (50%) | 最大位元率 (145%) |
---|---|---|---|
320x240p @ 24,25,30 | 150 | 75 | 218 |
640x360p @ 24,25,30 | 276 | 138 | 400 |
640x480p @ 24,25,30 | 512 (LQ)、750 (MQ) | 256 (LQ) 375 (MQ) | 742 (LQ) 1088 (MQ) |
1280x720p @ 24,25,30 | 1024 | 512 | 1485 |
1280x720p @ 50,60 | 1800 | 900 | 2610 |
1920x1080p @ 24,25,30 | 1800 | 900 | 2610 |
1920x1080p @ 50,60 | 3000 | 1500 | 4350 |
2560x1440p @ 24,25,30 | 6000 | 3000 | 8700 |
2560x1440p @ 50,60 | 9000 | 4500 | 13050 |
3840x2160p @ 24,25,30 | 12000 | 6000 | 17400 |
3840x2160p @ 50,60 | 18000 | 9000 | 26100 |
在 FFmpeg 中,您可以透過下列指令來控制位元率:
FFmpeg | |
---|---|
-b:v <arg> |
設定位元率 (例如 50 萬) |
-minrate <arg> -maxrate <arg> |
設定最小和最大位元率。 |
例如,在編碼 640x480 內容時,您可以使用指令列 -b:v 750k -minrate 375 -maxrate 1088
。
品質
在 CQ 模式中,您也必須設定最高等級。以檔案形式的 VP9 編碼來說,建議使用下列品質等級:
畫面高度 | 目標品質 (CQ) |
---|---|
240 | 37 |
360 | 36 |
480 | 34 (LQ) 或 33 (MQ) |
720 | 32 |
1080 | 31 |
1440 | 24 |
2160 | 15 |
在 FFmpeg 中,使用 -crf
指令設定品質。舉例來說,如要將品質設為 33,請使用 -crf 33
指令。
多重票證編碼與編碼速度
檔案型編碼可讓您靈活調整速度。您也可以對相同的內容執行多張票證來提高品質,並為每個票證選擇速度。
在 FFmpeg 中對 VP9 檔案進行編碼時,建議您將 -quality
參數設為 good
,然後使用以下的 -speed
參數設定第一個和第二個票證的速度。這在編碼時間與輸出品質之間取得了良好的平衡。
畫面高度 | 速度 (第一票證) | 速度 (第二次通行證) |
---|---|---|
240 | 4 | 1 |
360 | 4 | 1 |
480 | 4 | 1 |
720 | 4 | 2 |
1080 | 4 | 2 |
1440 | 4 | 2 |
2160 | 4 | 2 |
例如,FFmpeg 中的第一個傳遞編碼字串可能包含 -quality good -speed 4
。
主要畫面格間距
建議在主要畫面格之間允許最多 240 個影格 (30fps 內容則為 8 秒)。主要畫面格是自行取景的影格,不會利用任何其他影格來轉譯,但通常比其他頁框類型大。網頁與行動裝置播放時,主要畫面格之間的距離寬鬆,可讓編碼器選擇主要畫面格的最佳放置位置,盡可能提升品質。
在 FFmpeg 中,主要畫面格間距由 -g
指令控制,表示畫格數。如果是 240 影格,這個值就是 -g 240
。
時序和對話串建議
定時會將影片影格分割成多個資料欄,這樣做會降低品質,但加快編碼效能。圖塊至少必須有 256 像素寬,因此可使用多少圖塊。
視 CPU 數量和輸出框架的解析度而定,使用更多 CPU 執行緒可能會有幫助。一般來說,如果輸出框架的大小很小,則多個執行緒具有有限的值。
建議採用下列設定,以不同解析度進行傾斜和執行緒。
畫面大小 | 圖塊欄數 | 執行緒數量 |
---|---|---|
320x240 | 1 個 (-tile-columns 0 ) |
2 |
640x360 | 2 個 (-tile-columns 1 ) |
4 |
640x480 | 2 個 (-tile-columns 1 ) |
4 |
1280x720 | 4 個 (-tile-columns 2 ) |
8 |
1920x1080 | 4 個 (-tile-columns 2 ) |
8 |
2560x1440 | 8 個 (-tile-columns 3 ) |
16 |
3840x2160 | 8 個 (-tile-columns 3 ) |
16 |
在 FFmpeg 中,圖塊數量是以 -tile-columns
參數控管,而執行緒數量則是 -threads
。舉例來說,640x480 編碼會使用指令列 -tile-columns 2 -threads 4
。
FFmpeg 指令列
將以上建議合併在一起時,下列 FFmpeg 指令可能會用來對 VP9 內容進行編碼。
請注意,第一個傳遞和第二票證指令會相互連結。第二項指令中的 -y
引數會回答「是」;當 FFmpeg 要求使用輸出影片覆寫第一個傳遞統計資料檔案時。
另請注意,1080p 來源用於編碼目標為 1280x720 的輸出。使用 4K 來源進行更大的輸出。
320x240 (每秒 24、25 或 30 個畫格)
ffmpeg -i tears_of_steel_1080p.webm -vf scale=320x240 -b:v 150k \ -minrate 75k -maxrate 218k -tile-columns 0 -g 240 -threads 2 \ -quality good -crf 37 -c:v libvpx-vp9 -c:a libopus \ -pass 1 -speed 4 tos-320x240.webm && \ ffmpeg -i tears_of_steel_1080p.webm -vf scale=320x240 -b:v 150k \ -minrate 75k -maxrate 218k -tile-columns 0 -g 240 -threads 2 \ -quality good -crf 37 -c:v libvpx-vp9 -c:a libopus \ -pass 2 -speed 1 -y tos-320x240.webm
- 輸入檔案:tears_of_steel_1080p.webm (1920x800, 544.88 MB)
- 輸出檔案:tos-320x240.webm (320x240, 21.73 MB)
640x360 (每秒 24、25 或 30 個畫格)
ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x360 -b:v 276k \
-minrate 138k -maxrate 400k -tile-columns 1 -g 240 -threads 4 \
-quality good -crf 36 -c:v libvpx-vp9 -c:a libopus \
-pass 1 -speed 4 tos-640x360.webm && \
ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x360 -b:v 276k \
-minrate 138k -maxrate 400k -tile-columns 1 -g 240 -threads 4 \
-quality good -crf 36 -c:v libvpx-vp9 -c:a libopus \
-pass 2 -speed 4 -y tos-640x360.webm
- 輸入檔案:tears_of_steel_1080p.webm (1920x800, 544.88 MB)
- 輸出檔案:tos-640x360.webm (640x360, 31.53 MB)
640x480 (低畫質,每秒 24、25 或 30 個畫格)
ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x480 -b:v 512k \
-minrate 256k -maxrate 742k -tile-columns 1 -g 240 -threads 4 \
-quality good -crf 34 -c:v libvpx-vp9 -c:a libopus \
-pass 1 -speed 4 tos-640x360-low.webm && \
ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x480 -b:v 512k \
-minrate 256k -maxrate 742k -tile-columns 1 -g 240 -threads 4 \
-quality good -crf 34 -c:v libvpx-vp9 -c:a libopus \
-pass 2 -speed 4 -y tos-640x480-low.webm
- 輸入檔案:tears_of_steel_1080p.webm (1920x800, 544.88 MB)
- 輸出檔案:tos-640x480-low.webm (640x480, 51.18 MB)
640x480 (中畫質,每秒 24、25 或 30 個畫格)
ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x480 -b:v 750k \
-minrate 375k -maxrate 1088k -tile-columns 1 -g 240 -threads 4 \
-quality good -crf 33 -c:v libvpx-vp9 -c:a libopus \
-pass 1 -speed 4 tos-640x360-medium.webm && \
ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x480 -b:v 750k \
-minrate 375k -maxrate 1088k -tile-columns 1 -g 240 -threads 4 \
-quality good -crf 33 -c:v libvpx-vp9 -c:a libopus \
-pass 2 -speed 4 -y tos-640x480-medium.webm
- 輸入檔案:tears_of_steel_1080p.webm (1920x800, 544.88 MB)
- 輸出檔案:tos-640x480-medium.webm (640x480, 69.27 MB)
1280x720 (每秒 24、25 或 30 個畫格)
ffmpeg -i tears_of_steel_1080p.webm -vf scale=1280x720 -b:v 1024k \
-minrate 512k -maxrate 1485k -tile-columns 2 -g 240 -threads 8 \
-quality good -crf 32 -c:v libvpx-vp9 -c:a libopus \
-pass 1 -speed 4 tos-1280x720-24-30fps.webm && \
ffmpeg -i tears_of_steel_1080p.webm -vf scale=1280x720 -b:v 1024k \
-minrate 512k -maxrate 1485k -tile-columns 2 -g 240 -threads 8 \
-quality good -crf 32 -c:v libvpx-vp9 -c:a libopus \
-pass 2 -speed 4 -y tos-1280x720-24-30fps.webm
- 輸入檔案:tears_of_steel_1080p.webm (1920x800, 544.88 MB)
- 輸出檔案:tos-1280x720-24-30fps.webm (1280x720, 98.2 MB)
1280x720 (每秒 50 或 60 個畫格)
ffmpeg -i tears_of_steel_1080p.webm -vf scale=1280x720 -b:v 1800k \
-minrate 900k -maxrate 2610k -tile-columns 2 -g 240 -threads 8 \
-quality good -crf 32 -c:v libvpx-vp9 -c:a libopus \
-pass 1 -speed 4 tos-1280x720-50-60fps.webm && \
ffmpeg -i tears_of_steel_1080p.webm -vf scale=1280x720 -b:v 1800k \
-minrate 900k -maxrate 2610k -tile-columns 2 -g 240 -threads 8 \
-quality good -crf 32 -c:v libvpx-vp9 -c:a libopus \
-pass 2 -speed 4-y tos-1280x720-50-60fps.webm
- 輸入檔案:tears_of_steel_1080p.webm (1920x800, 544.88 MB)
- 輸出檔案:tos-1280x720-50-60fps.webm (1280x720, 157.1 MB)
1920x1080 (每秒 24、25 或 30 個畫格)
ffmpeg -i tearsofsteel_4k.mov -vf scale=1920x1080 -b:v 1800k \
-minrate 900k -maxrate 2610k -tile-columns 2 -g 240 -threads 8 \
-quality good -crf 31 -c:v libvpx-vp9 -c:a libopus \
-pass 1 -speed 4 tos-1920x1080-24-30fps.webm && \
ffmpeg -i tearsofsteel_4k.mov -vf scale=1920x1080 -b:v 1800k \
-minrate 900k -maxrate 2610k -tile-columns 3 -g 240 -threads 8 \
-quality good -crf 31 -c:v libvpx-vp9 -c:a libopus \
-pass 2 -speed 4 -y tos-1920x1080-24-30fps.webm
- 輸入檔案:tearsofsteel_4k.mov (3840x1714, 6.76 GB)
- 輸出檔案:tos-1920x1080-24-30fps.webm (1920x1080, 151.51 MB)
1920x1080 (每秒 50 或 60 個畫格)
ffmpeg -i tearsofsteel_4k.mov -vf scale=1920x1080 -b:v 3000k \
-minrate 1500k -maxrate 4350k -tile-columns 2 -g 240 -threads 8 \
-quality good -crf 31 -c:v libvpx-vp9 -c:a libopus \
-pass 1 -speed 4 tos-1920x1080-50-60fps.webm && \
ffmpeg -i tearsofsteel_4k.mov -vf scale=1920x1080 -b:v 3000k \
-minrate 1500k -maxrate 4350k -tile-columns 3 -g 240 -threads 8 \
-quality good -crf 31 -c:v libvpx-vp9 -c:a libopus \
-pass 2 -speed 4 -y tos-1920x1080-50-60fps.webm
- 輸入檔案:tearsofsteel_4k.mov (3840x1714, 6.76 GB)
- 輸出檔案:tos-1920x1080-50-60fps.webm (1920x1080, 238.18 MB)
2560x1440 (每秒 24、25 或 30 個畫格)
ffmpeg -i tearsofsteel_4k.mov -vf scale=2560x1440 -b:v 6000k \
-minrate 3000k -maxrate 8700k -tile-columns 3 -g 240 -threads 16 \
-quality good -crf 24 -c:v libvpx-vp9 -c:a libopus \
-pass 1 -speed 4 tos-2560x1440-24-30fps.webm && \
ffmpeg -i tearsofsteel_4k.mov -vf scale=2560x1440 -b:v 6000k \
-minrate 3000k -maxrate 8700k -tile-columns 3 -g 240 -threads 16 \
-quality good -crf 24 -c:v libvpx-vp9 -c:a libopus \
-pass 2 -speed 4 -y tos-2560x1440-24-30fps.webm
- 輸入檔案:tearsofsteel_4k.mov (3840x1714, 6.76 GB)
- 輸出檔案:tos-2560x1440-24-30fps.webm 2560x1440, 533.54 MB)
2560x1440 (每秒 50 或 60 個畫格)
ffmpeg -i tearsofsteel_4k.mov -vf scale=2560x1440 -b:v 9000k \
-minrate 4500k -maxrate 13050k -tile-columns 3 -g 240 -threads 16 \
-quality good -crf 24 -c:v libvpx-vp9 -c:a libopus \
-pass 1 -speed 4 tos-2560x1440-50-60fps.webm && \
ffmpeg -i tearsofsteel_4k.mov -vf scale=2560x1440 -b:v 9000k \
-minrate 4500k -maxrate 13050k -tile-columns 3 -g 240 -threads 16 \
-quality good -crf 24 -c:v libvpx-vp9 -c:a libopus \
-pass 2 -speed 4 -y tos-2560x1440-50-60fps.webm
- 輸入檔案:tearsofsteel_4k.mov (3840x1714, 6.76 GB)
- 輸出檔案:tos-2560x1440-50-60fps.webm 2560x1440, 664.04 MB)
3840x2160 (每秒 24、25 或 30 個畫格)
ffmpeg -i tearsofsteel_4k.mov -vf scale=3840x2160 -b:v 12000k \
-minrate 6000k -maxrate 17400k -tile-columns 3 -g 240 -threads 24 \
-quality good -crf 15 -c:v libvpx-vp9 -c:a libopus \
-pass 1 -speed 4 tos-3840x2160-24-30fps.webm && \
ffmpeg -i tearsofsteel_4k.mov -vf scale=3840x2160 -b:v 12000k \
-minrate 6000k -maxrate 17400k -tile-columns 3 -g 240 -threads 24 \
-quality good -crf 15 -c:v libvpx-vp9 -c:a libopus \
-pass 2 -speed 4 -y tos-3840x2160-24-30fps.webm
- 輸入檔案:tearsofsteel_4k.mov (3840x1714, 6.76 GB)
- 輸出檔案:tos-3840x2160-24-30fps.webm 3840x2160, 1.03 GB)
3840x2160 (每秒 50 或 60 個畫格)
ffmpeg -i tearsofsteel_4k.mov -vf scale=3840x2160 -b:v 18000k \
-minrate 9000k -maxrate 26100k -tile-columns 3 -g 240 -threads 24 \
-quality good -crf 15 -c:v libvpx-vp9 -c:a libopus \
-pass 1 -speed 4 tos-3840x2160-50-60fps.webm && \
ffmpeg -i tearsofsteel_4k.mov -vf scale=3840x2160 -b:v 18000k \
-minrate 9000k -maxrate 26100k -tile-columns 3 -g 240 -threads 24 \
-quality good -speed 4 -crf 15 -c:v libvpx-vp9 -c:a libopus \
-pass 2 -y tos-3840x2160-50-60fps.webm
- 輸入檔案:tearsofsteel_4k.mov (3840x1714, 6.76 GB)
- 輸出檔案:tos-3840x2160-50-60fps.webm 3840x2160, 1.56 GB)