SVT-AV1 の VOD 向け最適ベースラインは -preset 6 -crf 24 -pix_fmt yuv420p10le に tune=0、lookahead=120 を組み合わせた設定だ。 エンコード速度・ファイルサイズ・知覚品質のバランスが最も良く、ほとんどの本番ワークロードでそのまま使える。この記事では各パラメーターが「なぜ」重要なのか、そしていつ設定を変えるべきかを解説する。
動画配信基盤における帯域コスト削減とユーザー体験向上の切り札として、AV1 コーデックの採用は不可避な選択だ。FFmpeg 8.0 "Huffman"(2025年8月リリース)に続き、8.1 "Hoare"(2026年3月リリース)では Vulkan ベースのフィルターパイプラインがさらに安定し、libsvtav1(SVT-AV1 v4.0、2026年1月リリース)との統合が深化した。実用的なエンコード速度と圧倒的な圧縮効率の両立が可能になっている。
本稿では、FFmpeg 8.x 環境における SVT-AV1 の挙動を技術的に解剖し、商用レベルの配信に耐えうる「高密度かつ堅牢なエンコード設定」を提示する。
FFmpeg v8 における SVT-AV1 の実装特性
FFmpeg 8.x の大きな進歩のひとつは、Vulkan API によるハードウェアコンテキストの取り扱いが整備された点にある。SVT-AV1 自体は CPU ベースのソフトウェアエンコーダーだが、デコードやフィルタリング処理(スケーリング、トーンマッピング)を Vulkan 経由で GPU にオフロードすることで、CPU リソースを SVT-AV1 の演算に集中させることが可能になった。
この環境では、SVT-AV1 のボトルネックは「前処理」ではなく純粋な「エンコード演算」に集約されるため、Preset と CRF の選定がリソース効率に直結する。
実戦的エンコードコマンド:Production Ready
品質と効率を最大化するためのベースラインとなるコマンドだ。単純なコピー&ペーストではなく、各フラグの意図を理解して運用してほしい。
Windows (PowerShell) 用スクリプト:
# Windows PowerShell Script for FFmpeg v8 SVT-AV1
# 実行ポリシーでスクリプトがブロックされる場合は以下を実行:
# Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process
$InputFile = "input_master.mov"
$OutputFile = "output_av1.mkv"
ffmpeg -y -init_hw_device vulkan=vk:0 `
-i "$InputFile" `
-c:v libsvtav1 `
-preset 6 `
-crf 24 `
-pix_fmt yuv420p10le `
-svtav1-params "tune=0:enable-overlays=1:scd=1:scm=0:lookahead=120:keyint=240:film-grain=0" `
-c:a copy `
"$OutputFile"
macOS / Linux (Bash) 用スクリプト:
#!/bin/bash
INPUT="input_master.mov"
OUTPUT="output_av1.mkv"
ffmpeg -y -init_hw_device vulkan=vk:0 \
-i "$INPUT" \
-c:v libsvtav1 \
-preset 6 \
-crf 24 \
-pix_fmt yuv420p10le \
-svtav1-params "tune=0:enable-overlays=1:scd=1:scm=0:lookahead=120:keyint=240:film-grain=0" \
-c:a copy \
"$OUTPUT"
パラメーターの内部ロジックと最適化
単なる推奨値の羅列ではなく、SVT-AV1 の内部アルゴリズムに基づいたパラメーター選定の論理を解説する。
1. Preset:パーティショニング決定の深さ
Preset 値は、エンコーダーが「どれだけ深く探索を行うか」を決定する。具体的には、ブロックパーティショニング(画像を分割して動きを予測する処理)の細かさと、動きベクトル探索の精度が変化する。
- Preset 0–3(Research/Archival): 全探索に近い挙動。計算コストは指数関数的に増大するが、ビットレート削減効果は Preset 4 と比較して 5〜10% 程度にとどまる。商用配信では採算が合わないケースが大半。
- Preset 4–6(VOD Production): 推奨レンジ。RDO(Rate-Distortion Optimization)が十分に機能し、複雑なテクスチャの保持とエンコード速度のバランスが最適化されている。
- Preset 7–13(Real-time/Live): 高速化のために早期終了(Early Exit)の閾値が緩くなり、画質よりもスループットが優先される。
技術的トレードオフ: Preset を 6 から 4 に下げると、CPU 使用率は約 2 倍になる一方、同一 CRF 値でのファイルサイズは 5〜8% 削減される。帯域コストとコンピュートコストの損益分岐点を見極める必要がある。
2. CRF と Psycho-visual Tuning(tune=0)
AV1 の強みは、人間の視覚特性(HVS)を利用した圧縮にある。
-crf(Constant Rate Factor): x264/x265 の CRF とはスケールが異なる。SVT-AV1 の CRF30は、x265 の CRF24程度に相当する。高画質配信では20〜26の範囲がゴールデンゾーンだ。tuneパラメーター: 3つのモードがある。tune=0(VQ — Visual Quality)は視覚的なシャープネスとディテール保持を優先し、SSIM/VMAF スコアとの相関性が高い。tune=1(PSNR、デフォルト)は信号対雑音比を最大化しようとするが、数値上の正しさを優先するため視覚的な「ぼやけ」を許容する傾向がある。tune=2(SSIM)は構造的類似性指標を直接最適化する。
設定の結論: ユーザー体験(QoE)を指標とする場合、必ず tune=0 を指定すべきだ。デフォルトの tune=1 はベンチマーク向けであり、視聴者の満足度向上には向いていない。「見た目の解像感」が数値スペックより重要だ。
3. 10-bit Color Pipeline(-pix_fmt yuv420p10le)
入力ソースが 8-bit であっても、必ず 10-bit でエンコードすべきだ。
- 内部ロジック: 8-bit ソースを 8-bit で圧縮すると、量子化プロセスでの丸め誤差により、空や壁などの平坦なグラデーション部分にバンディング(縞模様)が発生する。10-bit 空間で計算することで、この量子化ノイズをディザリングなしで大幅に抑制できる。
- オーバーヘッド: SVT-AV1 のアーキテクチャは最新の SIMD 命令(AVX2/AVX-512)に最適化されており、10-bit 処理による速度低下は無視できるレベル(数% 以内)だ。
svtav1-params 詳細設定とマイクロチューニング
FFmpeg のオプション体系から溢れた、SVT-AV1 固有の制御パラメーターは -svtav1-params で直接渡す。
Lookahead とシーンチェンジ検出(scd)
lookahead=120: エンコーダーが処理中のフレームより先を「見る」フレーム数だ。これにより、ビットレート配分(Rate Control)が最適化され、複雑なシーンの直前に I フレームを配置するなどの先回りが可能になる。FPS の数倍(例: 5 秒分)確保するのが理想だ。scd=1(Scene Change Detection): シーンの切り替わりを検出し、強制的にキーフレーム(I フレーム)を挿入する。これにより、シーン転換時のブロックノイズを防ぎ、シーク性能を向上させる。scm=0(Screen Content Mode 無効): スクリーンコンテンツモードを無効にする設定だ。このモードはスクリーンキャプチャやゲーム映像向けの最適化を行うが、自然動画(実写映像)に対しては不要な処理となる。実写・映画コンテンツではscm=0を指定することで、余計なオーバーヘッドを排除できる。
Film Grain Synthesis(FGS)
AV1 の「魔法」とも言える機能だ。
film-grain=<value>: ノイズ(フィルムグレイン)を忠実にエンコードしようとすると、高周波成分として扱われ、大量のビットレートを消費する。FGS は、エンコード時にノイズを除去(デノイズ)し、そのノイズの「特徴パラメーター」だけをメタデータとして記録する。再生時にデコーダーがノイズを再合成する。- 運用: 実写映画やドラマでは
film-grain=8〜15程度を設定することで、低ビットレートでも質感のある映像が得られる。アニメーションの場合は0(無効)が基本だ。
Temporal Filtering(enable-tf)
enable-tf=0: デフォルトでは有効だが、極端な高画質を狙う場合は無効化(0)を検討する。有効にすると、時間軸方向のノイズを除去するためにフレーム間の平均化が行われるが、動きの速い細かいディテール(雨、紙吹雪など)が消失するリスクがある。ビットレートに余裕がある場合は0に設定し、ディテールを保存する。
FAQ
アニメ映像で線が滲む・リンギングが出る
tune=0 の心理視覚最適化は、フラットな色面が多いアニメーションではエッジ周辺にリンギング(にじみ)を発生させることがある。対処法は3つ: (1) tune=0 を維持しつつ CRF を 2〜3 下げて品質予算を増やす。(2) film-grain=0 を明示する — アニメにグレイン合成は不要だ。(3) リンギングが消えない場合は tune=1(PSNR)か tune=2(SSIM)に切り替える。エッジ処理が穏やかになる代わりに、実写コンテンツでのシャープネスはやや落ちる。
SVT-AV1 と libaom はどちらを使うべきか?
本番ワークロードでは SVT-AV1 一択だ。同等画質で libaom の 5〜10 倍速い。libaom が勝るのは Preset 0〜2 相当の極低速エンコード時の圧縮効率だけで、商用配信では実用的ではない。FFmpeg では libsvtav1 が SVT-AV1、libaom-av1 が libaom に対応している。
CRF はいくつに設定すべき?
1080p/4K の VOD 配信なら CRF 22〜26 から始めるのがいい。CRF 20 はほとんどのコンテンツで「透過的」(原画と区別がつかない)な品質だ。CRF 28〜30 は帯域優先のコンテンツに。注意点として、SVT-AV1 の CRF スケールは x265 とは異なり、SVT-AV1 の CRF 30 ≒ x265 の CRF 21〜24 程度だ。
8-bit ソースでも 10-bit エンコードする理由は?
10-bit 色空間で処理すると、量子化時の精度が上がり、空・肌・壁などのスムーズなグラデーションで発生するバンディング(縞模様)を排除できる。AVX2/AVX-512 に最適化された SVT-AV1 では、10-bit 処理のオーバーヘッドは 5% 未満。使わない理由がない。
Film Grain Synthesis はいつ有効にすべき?
実写映像(映画、ドラマ、ドキュメンタリー)では film-grain=8〜15 を設定する。エンコーダーがグレインを除去し、その数学的モデルだけをメタデータとして保存、デコーダーが再生時に再合成する仕組みだ。知覚品質を維持しながら大幅なビットレート削減が可能になる。アニメ・CGI・画面録画など、フラットな色面が多いコンテンツでは film-grain=0 にする。
エンコード速度を上げるには?
まず CPU リソースの配分と NUMA トポロジを確認。64 コア以上ではスレッド間同期のオーバーヘッドが発生するため、logical_processors で制限する。大量のファイルをエンコードする場合は、チャンク分割エンコード(入力を分割 → 並列エンコード → 結合)が有効だ。Preset を 4 から 6 に上げるだけでも、エンコード時間はおおよそ半分になる(ファイルサイズは 5〜8% 増)。
特定のデバイスで再生できない場合は?
profile=main + yuv420p10le が最も互換性が高い組み合わせだ。Chrome、Safari、ほとんどのスマートTV、モバイルデバイスで再生できる。yuv422p や yuv444p は profile=professional が必要となり、ハードウェアデコーダーの対応が限られる。ブラウザ配信では MP4 コンテナ(.mp4)を使うこと — MKV よりも対応環境が広い。
推奨ハードウェア構成
本記事で紹介した FFmpeg v8 の Vulkan パイプラインと SVT-AV1 のパフォーマンスを最大化するには、ボトルネックを解消する適切なハードウェア選定が不可欠だ。
1. Intel Arc A380 / A750(コスパ重視)
- 市場で最も安価に AV1 ハードウェアデコード・エンコード(QSV)環境を入手可能
- Vulkan フィルター処理のオフロード用としても十分な性能
- 対象: 自宅サーバーを安く構築したいエンジニア、省電力重視のユーザー
2. NVIDIA GeForce RTX 4060 Ti 以上(安定性重視)
- Vulkan API のドライバ品質が最も高く、FFmpeg でのトラブルが最小限
- デコードとフィルタリングを GPU 側で高速に処理し、CPU を SVT-AV1 の演算に集中させることができる
- 対象: ゲームや編集作業とエンコードを 1 台で兼任させたいハイエンドユーザー
3. AMD Ryzen 9 7950X / 9950X(エンコード特化)
- SVT-AV1 は CPU リソースをリニアに消費するため、物理コア数が重要
- 16 コア 32 スレッドの並列処理能力により、Preset 4〜5 設定でも実用的な FPS を実現
- 対象: 妥協のない最高画質を求める映像エンジニア、専用エンコードサーバー構築者
自宅 PC のリソースを占有せずにエンコードしたい場合は、VPS を使うという手もある。
関連記事
AV1 を選ぶべきか迷っているなら、コーデック比較の記事も参考にしてほしい。
- AV1 vs H.265 vs H.264 徹底比較:画質・圧縮率・互換性 — SVT-AV1 を含む主要コーデックを実測データで比較。用途別の選択指針を解説している
- FFmpeg動画圧縮の完全ガイド — CRFの仕組みやプリセット選びの基礎
- FFmpegをGPUで高速化する完全ガイド — Vulkan以外のGPUアクセラレーション手法
- VPSでFFmpegエンコードサーバーを構築する方法 — ローカルPCを占有せず専用エンコード環境を作りたい場合に
- FFmpeg + Whisper で字幕を自動生成する方法 — AV1パイプラインとAI字幕生成の組み合わせ
- FFmpeg vs AWS MediaConvert コスト比較 — セルフホスト SVT-AV1 エンコードとマネージドクラウドの損益分岐点
まとめ
SVT-AV1 エンコードの要点:
| パラメーター | 推奨値 | 理由 |
|---|---|---|
-preset | 6(VOD)/ 8–10(ライブ) | RDO と速度のバランス |
-crf | 20–26 | 高画質配信のゴールデンゾーン |
-pix_fmt | yuv420p10le | バンディング防止 |
tune | 0 | 視覚的シャープネス優先 |
lookahead | 120 | ビットレート配分の最適化 |
scd | 1 | シーン転換時の品質保護 |
film-grain | 実写: 8–15 / アニメ: 0 | コンテンツに応じて選択 |