このセクションでは、一般的なさまざまなプロファイルに対する VP9 エンコードの推奨事項を示します。

  • ウェブとモバイル向けに高度に最適化された動画(VOD)
  • プレミアム コンテンツの配信(VOD)
  • スポーツ、アニメーション、10 ビット コンテンツ(VOD)
  • ライブ エンコーディング
  • WebRTC

はじめに

動画をエンコードする際は、次の点を考慮する必要があります。

  • メディアの単一バージョンを作成しますか、それとも異なるビットレートと解像度で複数のバージョンを作成しますか?
  • ライブ動画ストリームを作成していますか?それともオンデマンド動画ファイルを作成していますか?
  • エンコードしているメディアの種類は何ですか?動きの多いメディアですか?詳細? アニメーション?
  • 最高品質(プレミアム コンテンツなど)または速度(ウェブ会議など)のどちらを優先してエンコードしますか?

このセクションでは、基本的なオンデマンド動画ファイルの設定から始まり、これらの質問すべてに対する推奨事項を示します。

基本設定

エンコード ビットレート

ウェブとモバイルでの配信のベースラインとして、次のビットレートが推奨されます。これらの推奨事項は、一般ユーザー向けのウェブやモバイルでの配信に適した画質を維持しながら、ビットレートを最小限に抑えるものです。これらは、妥当な画質を維持しながらビットレートを低く抑えるための推奨事項と考えることができます。

推奨される目標ビットレート

フレーム サイズ/レート 平均ビットレート(VOD、kbps) 平均ビットレート(ライブ、kbps)
320x240p @ 24,25,30 150 250
640x360p @ 24,25,30 276 386
640x480p @ 24,25,30 512(LQ)、750(MQ) 720(LQ)、1024(MQ)
1280x720p @ 24,25,30 1024 1440
1280x720p @ 50,60 1800 2500
1920x1080p @ 24,25,30 1800 2500
1920x1080p @ 50,60 3000 4200
2560x1440p @ 24,25,30 6000 8400
2560x1440p @ 50,60 9000 12600
3840x2160p @ 24、25、30 12000 16800
3840x2160p @ 50,60 18000 25200

図 2a: 目標ビットレート

VOD エンコード設定

ほとんどの種類のコンテンツの設定

ほとんどのコンテンツ タイプでは、ビットレート上限付きの制約付き品質(CQ)モードを使用することをおすすめします。ほとんどの動画には、動きの激しいシーン(アクション シーケンスなど)と、詳細の少ないシーン(会話など)が混在しています。CQ モードでは、エンコーダは、難しいシーケンスにより多くのビットを割り当てながら、長くて簡単なシーンでは(ビットを無駄にすることなく)妥当な品質レベルを維持できます。

また、下のグラフに示す品質値を使用して、ビットレートの範囲を目標値の 50% ~ 150% に設定することをおすすめします。このモードでは 2 パス エンコードが必要であり、以下に示すように HD 以上の場合は高速設定を使用することが推奨されます。

CQ エンコードのエンコーダ設定

フレームの高さ ターゲット品質(CQ) エンコード モード
240 37 TWO_PASS_MEDIUM
360 36 TWO_PASS_MEDIUM
480 34(低品質)または 33(中品質) TWO_PASS_MEDIUM
720 32 TWO_PASS_FAST
1080 31 TWO_PASS_FAST
1440 24 TWO_PASS_FAST
2160 15 TWO_PASS_FAST

図 2b: CQ の推奨設定

最後に、キーフレーム間の動画を 240 フレーム(30 fps のコンテンツの場合は 8 秒)にすることをおすすめします。キーフレームは自己完結型の動画フレームです。レンダリングのために他のフレームに依存しません(詳しくは GOP 構造をご覧ください)。ウェブとモバイルの再生では、エンコーダがキーフレームの「最適な」配置を選択して品質を最大限に高めることができるように、キーフレーム間の間隔を広めに設定しています。

コマンドライン パラメータの例: 640x360 の動画

上記から、360p 動画の推奨事項は次のようになります。

  1. CQ レベル 36(図 2b を参照)
  2. 目標ビットレート 276 kbps(図 2a を参照)
  3. 最小許容ビットレート: 138 kbps(目標の 50%)
  4. 最大許容ビットレート 414 kbps(目標値の 150%)
  5. キーフレームの間隔は最大 240 秒
  6. 2 パス、「中」プロファイル

これにより、libvpx と FFmpeg のコマンドライン パラメータは次のようになります。

libvpx

--end-usage=cq --cq-level=36 --target-bitrate=276 --minsection-pct=50 \
  --maxsection-pct=150 --kf-max-dist=240 --passes=2 --good --cpu-used=2

FFmpeg

-crf 36 -b:v 276k -minrate 138k -maxrate 414k -g 240 -good -speed 2

プレミアム コンテンツの設定

上記の例では、比較的高速なエンコード設定を使用して、動画ストリームを効率的に作成しました。ただし、一部のコンテンツ(プレミアム映画など)では、エンコードに時間をかけて高品質の出力を得る価値があります。

プレミアム コンテンツの場合は、上記と同じ設定で、プリセットを別のものに変更し、エンコーダに品質の最適化に時間をかけるよう指示することをおすすめします。

プレミアム コンテンツのエンコード モードとコマンドライン パラメータ

フレームの高さ エンコード モード libvpx FFmpeg
240 TWO_PASS_VERY_SLOW --good --cpu-used 0 -good -speed 0
360 TWO_PASS_VERY_SLOW --good --cpu-used 0 -good -speed 0
480 TWO_PASS_VERY_SLOW --good --cpu-used 0 -good -speed 0
720 TWO_PASS_SLOW --good --cpu-used 1 -good -speed 1
1080 TWO_PASS_MEDIUM --good --cpu-used 2 -good -speed 2
1440 TWO_PASS_MEDIUM --good --cpu-used 2 -good -speed 2
2160 TWO_PASS_MEDIUM --good --cpu-used 2 -good -speed 2

図 2c: プレミアム コンテンツのエンコード モード

スポーツ、動きの激しいコンテンツの設定

スポーツ コンテンツには VBR エンコードをおすすめします。スポーツは動きと複雑さのレベルが比較的一定であるため、VBR を使用すると、動きの少ない期間に QP エンコードよりも高い品質を実現できます。

コマンドラインの場合、QP モードと VBR モードの主な違いは、CQ レベルを指定しないことです。それ以外の場合は、推奨設定は同じです。

VBR コマンドライン パラメータの例: 640x360 の動画

libvpx

--end-usage=vbr --target-bitrate=276 --minsection-pct=50 --maxsection-pct=150 \
  --kf-max-dist=240 --passes=2 --good --cpu-used=2

FFmpeg

-b:v 276k -minrate 138k -maxrate 414k -g 240 -good -speed 2

アニメーションとゲームの設定

ノイズが多い / 低品質のコンテンツ設定

ノイズの多いコンテンツの場合は、alt-ref フレームの数と強度を増やすことをおすすめします。代替参照フレームは「不可視」フレームであり、ユーザーに表示されることはありませんが、最終フレームの作成時に参照として使用されます(詳細はこちらをご覧ください)。

VP9 により多くの alt-ref フレームを使用するよう指示するには、次のパラメータを使用することをおすすめします。

libvpx

--auto-alt-ref=1 --lag-in-frames-16 --arnr-maxframes=5 --arnr-strength=3

FFmpeg

10 ビット/HDR エンコード

10 ビット エンコードには、VP9 Profile 2 を使用します。10 ビットでエンコードしてもビット数は増えないため、残りのパラメータは同じです。

libvpx

--profile=2

FFmpeg

-profile 2

ライブ エンコード設定

ライブ配信

ライブ エンコードは通常 CBR として行われるため、エンコーダの品質を最大化する能力が制限されます。そのため、図 2a に示すように、より高いビットレートを使用します。

ライブ エンコードでは、スレッド化を最大化することも重要です。手順は次のとおりです。

  1. VP9 が動画を列に分割できるようにする(列の幅は 256 ピクセル以上で、2 のべき乗である必要があります)。
  2. VP9 により多くの CPU パワーを使用するように指示します。次の表に、各解像度に対する推奨事項を示します。

タイリングとスレッド化に関する推奨事項

CQ エンコードのエンコーダ設定
フレームサイズ タイル列の数 スレッド数
320X240 1 2
640x360 2 4
640×480 2 4
1280x720 4 8
1920x1080 4 8
2560x1440 8 16
3840×2160 8 16

図 2d. ライブ エンコードの推奨タイリングとスレッド処理

ライブ エンコードでは、パフォーマンスを確保するためにデッドラインも「リアルタイム」に設定され、alt-ref フレームが将来を参照しないように指示されます(将来を参照するとレイテンシが発生します)。

このことから、360p ライブ動画の推奨事項は次のようになります。

  1. CBR、目標ビットレート 386 kbps(図 2a を参照)
  2. 2 つのタイル列(図 2d を参照)
  3. 4 スレッド(図 2d を参照)
  4. リアルタイム パフォーマンス
  5. 代替フレームによる遅延がない(フレームの遅延がない)

これにより、libvpx と FFmpeg のコマンドライン パラメータは次のようになります。

libvpx

--end-usage=cbr --target-bitrate=386 --cpu-used=4 --tile-columns=2 --rt --lag-in-frames=0

FFmpeg

ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x480 -r 29.97 -b:v 386k \
  -minrate 386k -maxrate 386k -c:v libvpx-vp9 -c:a libopus output.webm

DASH/YouTube 向けライブ VP9 エンコード

WebRTC エンコード