- 最新のAV1動画フォーマットを使うと、Web上の動画ファイルサイズを 20〜40倍小さく できる
- YouTubeやNetflixはAV1を次世代動画コーデックとして採用しており、Chrome、Safari、Firefoxなど主要ブラウザでサポートされている
- 本ガイドでは、AV1コーデックのエンコード戦略と最適化方法を説明する
コーデックとコンテナの概要
- 静止画フォーマット: WebP、JPEG、PNGはほとんどのブラウザでサポートされている。最新のブラウザではAVIFも利用できる
- 動画ファイルの構造:
- 動画コーデック: H.264、HEVC、VP9、AV1などが動画圧縮の戦略を決める
- 音声コーデック: MP3、Opus、AACなどが音声圧縮の戦略を決める
- コンテナ: MP4、MOV、WebMなどがあり、動画・音声ストリーム、字幕、メタデータを保存する
AV1コーデックの紹介
- AV1コーデックは2018年3月に初めてリリースされた
- HEVC/VP9やH.264/VP8と比べて、ファイルサイズを最大 30〜50%さらに小さく できる
- 長所:
- 低ビットレートでも高画質を維持できる
- 圧縮による劣化がほとんどない
- 短所:
- エンコード速度が遅い
- 最新のデバイスでのみ対応している(iPhone 15+、MacBook M3など)
- 互換性のためにAV1版とH.264版の両方を用意する必要がある
現時点でAV1を使う方法
- コンテナとコーデックの選択
- コンテナ: MP4が最も一般的で推奨される
- 音声コーデック: Opusの使用を推奨(高効率で無料)
- 最大限の互換性のためのファイル準備
- デスクトップおよび最新のモバイルブラウザ向け(Chrome、Safari、Firefox、Edgeなど)
- MP4コンテナ + AV1動画コーデック + Opus音声コーデック
- ユーザーカバレッジ: 約74%(2023年9月時点)
- 旧Safariおよび旧macOS向け
- MP4コンテナ + H.264動画コーデック + AAC音声コーデック
- ユーザーカバレッジ: 約19%
- 旧iPhoneおよびMacのサポート強化向け(任意)
- MP4コンテナ + HEVC動画コーデック + AAC音声コーデック
AV1動画ファイルの作成方法
1. FFmpegのインストール
- Mac:
brew install ffmpeg
- Linux: ディストリビューションのパッケージからFFmpegをインストール
- Windows: インストールガイド を参照
2. H.264ファイルの作成(旧デバイス対応用)
ffmpeg -i SOURCE.mov -map_metadata -1 -c:a aac -c:v libx264 -crf 24 -preset veryslow -profile:v main -pix_fmt yuv420p -movflags +faststart -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" video.h264.mp4
3. AV1ファイルの作成(最新デバイス対応用)
ffmpeg -i SOURCE.mov -map_metadata -1 -c:a libopus -c:v libsvtav1 -qp 30 -tile-columns 2 -tile-rows 2 -pix_fmt yuv420p -movflags +faststart -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" video.av1.mp4
crf または qp の値を調整することで、画質とファイルサイズのバランスを取れる
4. HEVCファイルの作成(必要に応じて)
- 古いiPhoneおよびMacをサポートするためにHEVCでエンコードする
ffmpeg -i SOURCE.mov -map_metadata -1 -c:a aac -c:v libx265 -crf 24 -preset veryslow -pix_fmt yuv420p -movflags +faststart -tag:v hvc1 -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" video.hevc.mp4
FFmpegの主要オプション説明
- -i SOURCE.mov: 元ファイルの入力指定
- -map_metadata -1: 不要なメタデータを削除
- -c:a libopus: 音声コーデックを選択(Opus)
- -c:v libsvtav1: 動画コーデックを選択(AV1)
- -crf 34, -qp 30: 画質とファイルサイズの調整(値が低いほど高画質でサイズは大きくなる)
- -preset veryslow: 高品質ファイル生成のためのエンコード速度設定
- -pix_fmt yuv420p: 色データを減らしてファイルサイズを削減
- -movflags +faststart: ストリーミング開始時間を短縮
- -tile-columns 2 -tile-rows 2: エンコード速度を向上
ブラウザ互換性の設定
- 最新ブラウザではAV1を使い、旧ブラウザではH.264にフォールバックする
<video controls width="600" height="400">
<source src="video.av1.mp4" type="video/mp4; codecs=av01.0.05M.08,opus">
<source src="video.h264.mp4" type="video/mp4; codecs=avc1.4D401E,mp4a.40.2">
</video>
- 旧iPhoneおよびMacをサポートする場合はHEVCファイルを追加できる
<source src="video.hevc.mp4" type="video/mp4; codecs=hvc1">
GIFをAV1またはH.264に変換する
1件のコメント
ランディングページで動画を使うことは多いので、一度試してみてもよさそうですね。うまく機能するのか、例外ケースが発生して使えないのか。