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構造、フィルタの使い分けを検討しましょう。視聴者に最適な体験を提供できるよう、エンコーダの性能を高めていきたいものです。