gazou-compressor.jp

動画コーデック移行計画:H.264→VP9→AV1 の段階導入とリスク制御

コーデック移行は 互換性 / 容量削減 / エンコードコスト / 再生性能 の多変数最適化。段階を誤ると キャッシュ分断・CPU過負荷・再生遅延 を誘発します。本稿は H.264 基盤を落とさず VP9 → AV1 を安全に拡張する 再現性ある分岐条件 を提示します。

落とし穴
"一括 AV1 化" はエンコード遅延とキャッシュミス増で p95 再生開始遅延を悪化させる典型例。小規模パイロット & 指標ゲーティングを必須化してください。

要点 (TL;DR)

TL;DR: H.264 を共通フォールバックとして維持しつつ再生上位 20% を VP9 AB テスト → 成功指標クリア後ロングテールをバッチ変換しキャッシュ二層 (H.264 + VP9)。AV1 は高寿命 & 高再生のみ小規模導入し、CPU/起動遅延を計測。指標悪化時は manifest 切替で即時ロールバック。

1. KPI & 計測基盤

2. 対象選定

全動画の Pareto 分布を計測し、上位 20% がトラフィックの ~80% を占めることを確認。まずここに VP9 を適用で再エンコードコストを限定。

3. VP9 パイロット

<video controls preload="metadata">
  <source src="/v/vp9/a1b2c3/ui.webm" type="video/webm; codecs=vp9" />
  <source src="/v/h264/a1b2c3/ui.mp4" type="video/mp4" />
  <!-- Safari 旧端末等は MP4 fallback -->
</video>

4. 全量 VP9 化

成功後、バッチワーカーを並列化 (N=N_cores*2)。H.264 はキャッシュヒットを見つつ徐々に低頻度化。ただし iOS Safari 旧端末互換で保持。

5. AV1 パイロット

# AV1 実行例
ffmpeg -i ui-vp9.webm -c:v libaom-av1 -cpu-used 6 -crf 35 -b:v 0 -row-mt 1 -threads 8   -pix_fmt yuv420p10le ui-av1.mkv

6. キャッシュ / URL 設計

パス構造: /v/<codec>/<hash>/<file>

Immutable: コンテンツハッシュ付で max-age=31536000, immutable。

ネゴシエーション: manifest で source 並び制御 (prefetch hint)。

7. ロールバック戦略

8. 自動化チェック

  1. エンコード完了後: ffprobe メタ検証
  2. VMAF < 85 なら CRF -2 再試行 (最大2回)
  3. 再生ログ収集 → ダッシュボード
  4. 閾値逸脱時 Slack アラート

9. FAQ

H.265(HEVC) は?
Safari 互換は高いが特許とブラウザ差異。Web 配信で汎用化しづらい。
再生端末判定は?
canPlayType + codec string + 早期バッファ取得時間。
突然のトラフィック増?
H.264 キャッシュレイヤがバッファ役。上限超で VP9/AV1 バックフィル遅延を許容。

関連

gazou-compressor.jp 編集部

画像圧縮・変換・背景除去などの実践テクニックと、Webで“速く・軽く・崩さない”ためのノウハウを発信しています。

関連記事

トピック/更新日の近いコンテンツ