2024-04-16

AWS Elemental LiveにおけるH.264/H.265コーデック設定の各種パラメータの意味について

はじめに

動画配信の現場で重要な役割を果たすのが、エンコーダの設定です。AWS Elemental Liveは強力なライブエンコーディングソフトウェアで、H.264/H.265のコーデックパラメータを細かく制御できます。この記事では、主要な設定項目を一つひとつ解説していきます。

ビットレート制御モード

この設定は、エンコーダの動作モードを決める重要なパラメータです。

VBR(Variable Bitrate)

  • 画質を一定に保ち、ビットレートが変動するモード
  • 映画やドラマのようなハイエンドコンテンツに適します
  • max_bitrateを高く設定すれば高画質になりますが、ネットワーク負荷も高まります

CBR (Constant Bitrate)

  • 転送レートを一定に保ち、画質が変動するモード
  • 低ビットレート配信に向いています
  • ビットレート値(bitrate)を高くすれば高画質になりますが、上限があります

ABR (Average Bitrate)

  • 平均転送レートを一定に維持しますが、短時間の変動は許容されるモード
  • VBRに比べ、ビットレート変動が抑えられます

QVBR (Quality-defined VBR)

  • 目標画質値(quality_level)を設定し、その品質になるよう可変ビットレートでエンコード
  • 映像の複雑さに応じて、ビットレートが動的に変わります
  • quality_levelにAutoを選ぶと、エンコーダが自動で品質を調整します

プロファイルとレベル

プロファイルとレベルは、エンコーダの処理能力を規定する指標です。

  • H.264ではBaseline、Main、Highなどから選べます
  • H.265ではMain/Main、Main/Highなどの組み合わせから選びます
  • 高いプロファイルを選ぶほど、高画質で処理能力の高いエンコーディングが可能に

レベル(level)

  • レベルが高いほど、解像度、ビットレート、フレームレートの制限が高くなります
  • 例えば4K解像度の場合はH.264でレベル5.2以上、H.265でレベル5.1以上が必要になります

一般的にはプロファイルHighレベル4.2程度を選ぶとよいでしょう。ただし処理負荷も高くなるので、ハードウェアに合わせて調整する必要があります。

ビットレート設定

ビットレートの設定はエンコーダの肝になる部分です。転送レートと画質のバランスを決めます。

bitrate

  • CBR、VBR、ABRモードで平均ビットレート(bps)を指定します
  • 値を高くすれば高画質になりますが、ネットワーク負荷も高くなります
  • 例えば1280x720の解像度なら3Mbps程度が目安です

max_bitrate

  • VBR、QVBRモードで最大ビットレートを設定します
  • bitrateよりも高い値を設定すると、画質の高い場面で臨機応変にビットレートアップが可能になります

min_bitrate

  • Statmuxモードのみ使用されます
  • 最小ビットレートを明示的に指定したい場合に設定します

フレームレート

フレームレートはエンコーダの出力フレームレートを制御します。

framerate_numerator、framerate_denominator

  • 出力フレームレートを分数で指定します (例: 30000/1001 = 29.97fps)
  • 入力フレームレートと異なる場合は、フレームレートの変換が行われます

framerate _follow_source

  • trueを選ぶと入力フレームレートを維持します(フレームレート変換なし)
  • 通常はfalseにして、適切なフレームレートを別途指定します

例えば、30fpsの入力映像を24fpsにする場合、framerate_numeratorに24000、framerate_denominatorに1001と指定します。フレームレート変換は処理負荷があるため、必要な場合にのみ使うのがよいでしょう。

PIXELアスペクト比

PIXELアスペクト比はエンコーダ出力の画像の形状を決めます。

par_follow_source

  • trueを選ぶと入力のPIXELアスペクト比を維持します
  • 異なるアスペクト比に変換したい場合はfalseを選びます

par_numerator、par_denominator

  • 出力PIXELアスペクト比の分数値を指定します
  • 例えば4:3のアスペクト比なら12:11、16:9なら16:9と指定します

通常はpar_follow_sourceをtrueのままでよいでしょう。アナモルフィック変換が必要な場合のみ、par_numerator/denominatorを調整します。

インターレース・プログレッシブ設定

インターレースとプログレッシブの扱いを制御するパラメータです。

interlace_mode

  • プログレッシブ、インターレース、トップフィールドファースト、ボトムフィールドファーストから選びます
  • インターレース素材の場合はフィールドオーダーを適切に指定する必要があります

telecine

  • この設定は29.97fpsの場合のみ使用されます
  • ハードテレシネ/ソフトテレシネを指定でき、どちらかに合わせてデインタレース処理されます

例えば、1080iの59.94iインターレース素材をエンコードする場合は、interlace_modeをBottomFieldFirstに、telecineをHardに設定します。

GOP構造

GOP(Group of Pictures)構造はエンコーディングの効率と編集性のバランスを制御します。

gop_size、gop_size_units

  • GOPサイズ(キーフレーム間隔)をフレーム数または秒数で指定します
  • 短いGOPサイズを選ぶと編集はしやすくなりますが、ビットレート効率が低下します

gop_num_b_frames

  • 参照フレーム間のBフレーム数を設定します
  • Bフレームを多く使うほどエンコーディング効率は高まりますが、エンコーダの処理負荷も高くなります

min_i_interval

  • 規則的I-フレームとシーン変化I-フレームの最小間隔をフレーム数で設定します
  • 0以外を設定すると編集性が高まりますが、ビットレートが増えます

一般的な設定例としては、gop_sizeを60フレーム(2秒)、gop_num_b_framesを2、min_i_intervalを0などが考えられます。編集の要求が高ければgop_sizeを短く、ビットレート重視ならgop_num_b_framesを増やすといった調整を行います。

Qpとフィルタの設定

Qpとフィルタの設定で、エンコーディングの画質と効率を微調整します。

qp

  • 固定QPでエンコーディングする際の量子化パラメータ値を指定します
  • 値が小さいほど高画質になりますが、ビットレートも高くなります

max_qp、min_qp

  • QPの最大値/最小値の範囲を指定します

adaptive_quantization

  • Onにするとフレーム内でQPを空間的に変更し、画質とビットレートのバランスを最適化します

spatial_aq

  • Onにすると画面内の複雑さに応じてQPを変更します
  • フラットな領域はQPを大きく、複雑な領域はQPを小さくするといった処理が行われます

temporal_aq

  • Onにすると時間方向の複雑さに応じてQPを変更します
  • ほとんど変化がない領域ではQPを大きく、動きの激しい領域ではQPを小さくします

最も一般的な設定は、qpを26程度、adaptive_quantization、spatial_aq、temporal_aqをすべてOnにするといったパターンでしょう。コンテンツの種類に合わせて細かく調整することで、ビットレートを抑えつつ高画質化が可能になります。

その他の設定

以上が主要な設定項目の解説になります。さらにエンコーディングをきめ細かくコントロールしたい場合は、以下のようなパラメータも活用できます。

  • svq: エンコーダの処理品質と圧縮密度のトレードオフ値
  • look_ahead_rate_control: ルックアヘッドレートコントロールの程度
  • dynamic_sub_gop: Bフレーム数を動的に調整するかどうか
  • slices: 1フレーム内のスライス数 (並列処理に影響)
  • telecine: ソフト・ハードテレシネの適用
  • tiles (H.265): エンコーディングをタイルに分割して並列処理
  • adaptive_sao (H.265): Sample Adaptive Offsetフィルタの強度

このように、Elemental Liveにはエンコーディング条件を細かく制御できるパラメータが多数用意されています。制作の種類、配信環境、視聴環境などを総合的に勘案し、適切な設定を見つけていく必要があります。

まとめ

動画配信ではエンコーディング設定が肝になります。今回は主要なH.264/H.265パラメータについて解説してきましたが、これらをいかに組み合わせるかがポイントです。Total Coding Strategyの観点から、コンテンツに適したビットレート制御モード、GOP構造、フィルタの使い分けを検討しましょう。視聴者に最適な体験を提供できるよう、エンコーダの性能を高めていきたいものです。