この記事でわかること

  • AV1の特徴とH.264・H.265との違い
  • libsvtav1(高速)とlibaom-av1(高圧縮)の使い分け
  • CRFモードとビットレート指定エンコード
  • 2passエンコードによる精密なビットレート制御
  • コンテナ・音声コーデックの選択
  • ブラウザ対応状況とWeb配信向け設定

テスト済みバージョン: FFmpeg 7.0で確認済み
対象 OS: Windows / macOS / Linux


AV1 とは何か

AV1(AOMedia Video 1)は、Alliance for Open Mediaが開発したオープンかつロイヤリティフリーの動画コーデックです。

コーデック相対ファイルサイズエンコード速度ブラウザ対応
H.264 (libx264)100%(基準)高速ほぼ全対応
H.265 (libx265)約50%中速Safari, Edge
AV1 (libsvtav1)約35〜45%中速Chrome, Firefox, Edge
AV1 (libaom-av1)約30〜40%低速Chrome, Firefox, Edge

同等画質でH.264の半分以下のファイルサイズを実現できます。YouTube・Netflix・Twitchなど大手プラットフォームがAV1配信を採用しています。


エンコーダーの確認

まず利用可能なAV1エンコーダーを確認します。

ffmpeg -encoders 2>/dev/null | grep av1

出力例:

 V..... libsvtav1            SVT-AV1(Scalable Video Technology for AV1) encoder (codec av1)
 V..... libaom-av1           libaom AV1 (codec av1)

libsvtav1 が表示されない場合は、FFmpegをlibsvtav1サポート付きでビルドするか、パッケージマネージャで最新版をインストールしてください。


libsvtav1 — 高速AV1エンコード(推奨)

基本コマンド(CRFモード)

ffmpeg -i input.mp4 -c:v libsvtav1 -crf 35 -preset 6 -c:a libopus -b:a 128k output.webm
パラメータ説明
-c:v libsvtav1SVT-AV1エンコーダーを使用
-crf 35品質固定モード(低いほど高品質、0〜63)
-preset 6エンコード速度(0=遅い高品質〜13=高速低品質)
-c:a libopusOpusオーディオ(AV1+WebMの組み合わせに最適)

CRF値の目安(libsvtav1)

CRF値品質用途
20〜25視覚的ロスレス級アーカイブ、マスター素材
28〜35高品質通常の配布・配信
35〜42標準品質Web配信、プレビュー
43〜55低品質容量制限が厳しい場合

presetの選択

# 品質重視(時間がかかる)
ffmpeg -i input.mp4 -c:v libsvtav1 -crf 30 -preset 2 -c:a libopus -b:a 128k output.webm

# バランス(デフォルト推奨)
ffmpeg -i input.mp4 -c:v libsvtav1 -crf 30 -preset 6 -c:a libopus -b:a 128k output.webm

# 速度重視(リアルタイム処理向け)
ffmpeg -i input.mp4 -c:v libsvtav1 -crf 30 -preset 10 -c:a libopus -b:a 128k output.webm

MP4コンテナに出力する場合

WebMではなくMP4コンテナに出力することも可能です。

ffmpeg -i input.mp4 -c:v libsvtav1 -crf 35 -preset 6 -c:a aac -b:a 128k output_av1.mp4

ただしAV1+MP4の対応状況はAV1+WebMより限定的な場合があります。


libaom-av1 — 高圧縮AV1エンコード

libaom-av1はAV1のリファレンス実装で、libsvtav1より高圧縮ですがエンコードが非常に遅いです。

基本コマンド(CRFモード)

ffmpeg -i input.mp4 -c:v libaom-av1 -crf 30 -b:v 0 -c:a libopus -b:a 128k output.webm

重要: libaom-av1でCRFモードを使う場合は -b:v 0 を必ず指定してください。

マルチスレッド設定

ffmpeg -i input.mp4 -c:v libaom-av1 -crf 30 -b:v 0 -row-mt 1 -tiles 2x2 \
  -c:a libopus -b:a 128k output.webm
オプション説明
-row-mt 1行単位のマルチスレッドを有効化
-tiles 2x2タイル分割でエンコード並列化

2passエンコード(ビットレート指定)

配信ビットレートが決まっている場合は2passエンコードを使用します。

libsvtav1 での2pass

# Pass 1
ffmpeg -i input.mp4 -c:v libsvtav1 -b:v 2M -preset 6 -pass 1 -an -f null /dev/null

# Pass 2
ffmpeg -i input.mp4 -c:v libsvtav1 -b:v 2M -preset 6 -pass 2 -c:a libopus -b:a 128k output.webm

libaom-av1 での2pass

# Pass 1
ffmpeg -i input.mp4 -c:v libaom-av1 -b:v 2M -pass 1 -an -f null /dev/null

# Pass 2
ffmpeg -i input.mp4 -c:v libaom-av1 -b:v 2M -pass 2 -c:a libopus -b:a 128k output.webm

解像度・プラットフォーム別の推奨設定

YouTube 向け(AV1)

YouTube は AV1 をサポートしており、高効率なエンコードでストレージ節約できます。

# 1080p / YouTube 向け
ffmpeg -i input.mp4 \
  -c:v libsvtav1 -crf 32 -preset 6 \
  -vf "scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2" \
  -pix_fmt yuv420p \
  -c:a libopus -b:a 256k \
  output_youtube_av1.webm

Web 配信向け(軽量)

ffmpeg -i input.mp4 \
  -c:v libsvtav1 -crf 40 -preset 8 \
  -vf "scale=1280:720" \
  -c:a libopus -b:a 96k \
  output_web.webm

コーデック比較

同じ素材を異なるコーデックでエンコードして比較します。

# H.264 (参照)
ffmpeg -i input.mp4 -c:v libx264 -crf 23 -preset slow -c:a aac -b:a 128k out_h264.mp4

# H.265
ffmpeg -i input.mp4 -c:v libx265 -crf 28 -preset slow -c:a aac -b:a 128k out_h265.mp4

# AV1 (SVT-AV1)
ffmpeg -i input.mp4 -c:v libsvtav1 -crf 35 -preset 6 -c:a libopus -b:a 128k out_av1.webm

典型的なファイルサイズ削減例(5分の1080p動画の場合):

  • H.264: 300MB
  • H.265: 160MB(約47%削減)
  • AV1 (SVT): 120MB(約60%削減)

ブラウザ対応状況

ブラウザAV1対応
Chrome 70+
Firefox 67+
Edge 18+
Safari 16.4+✅(macOS Ventura以降)
iOS Safari❌(2024年時点で非対応)

iOSを含めた完全対応が必要な場合はH.264も用意しておくことを推奨します。


トラブルシューティング

libsvtav1 が見つからない

Unknown encoder 'libsvtav1'

対処法: パッケージマネージャで最新のFFmpegをインストールします。

# macOS (Homebrew)
brew install ffmpeg

# Ubuntu/Debian
sudo apt install ffmpeg

# Windows: wingetまたはFFmpeg公式サイトから最新バイナリをダウンロード
winget install ffmpeg

エンコードが非常に遅い

libaom-av1を使用している場合は libsvtav1 に切り替えると10〜50倍高速になります。

# NG: libaom-av1は遅い
ffmpeg -i input.mp4 -c:v libaom-av1 -crf 30 -b:v 0 output.webm

# OK: libsvtav1を使用
ffmpeg -i input.mp4 -c:v libsvtav1 -crf 35 -preset 6 output.webm

音声が出ない・コンテナエラー

WebMコンテナではVorbis/Opusのみ使用可能です。AACは使用できません。

# NG: WebMにAAC
ffmpeg -i input.mp4 -c:v libsvtav1 -crf 35 -c:a aac output.webm

# OK: WebMにOpus
ffmpeg -i input.mp4 -c:v libsvtav1 -crf 35 -c:a libopus -b:a 128k output.webm

関連リソース

よく使うオプション・フィルタ・コーデック設定をまとめた PDF チートシートです。手元に置いておくと調べる時間を短縮できます。

FFmpeg チートシート

関連記事


動作確認: ffmpeg 7.0 / Ubuntu 24.04
一次ソース: ffmpeg.org/ffmpeg-codecs.html#libsvtav1