MetaにおけるFFmpeg:大規模メディア処理
概要
- FFmpegはMetaのメディア処理基盤の中核ツール
- 内部フォークから公式FFmpegへの完全移行を実現
- マルチレーンエンコーディングとリアルタイム品質指標の公式実装
- ハードウェアAPIによる自社ASIC(MSVP)サポート
- 今後もFFmpegへの貢献とコミュニティ協力を継続
FFmpegの役割とMetaでの活用
- FFmpegは多様なコーデック・コンテナフォーマット対応の業界標準ツール
- ffmpeg(CLIアプリ)とffprobe(メディア情報取得)を日々数百億回実行
- 動画編集・変換だけでなく、複雑なフィルタチェーンによる高度なメディア操作
- 新しい動画体験の創出と既存サービスの信頼性向上に寄与
内部フォークの課題と公式FFmpegへの移行
- 独自フォークで先行実装していた機能(マルチレーンエンコーディング、リアルタイム品質指標)
- 公式FFmpegの進化により、機能・互換性の乖離が拡大
- 二重管理による保守負荷増大とリグレッションリスク
- FFlabs、VideoLANとの協業で必要機能を公式FFmpegへ実装
- 公式バージョン一本化による保守性向上と最新機能活用
マルチレーン・トランスコーディングの効率化
- 動画アップロード時、DASH対応の複数エンコーディング生成
- 各解像度・コーデック・品質のストリームを単一FFmpegコマンドで同時生成
- デコード処理の重複排除、プロセス起動のオーバーヘッド削減
- 内部フォークでは動画エンコーダーの並列実行を実現
- FFmpeg 6.0以降でマルチスレッド最適化が公式実装
- 1日10億件超の動画処理における計算資源効率化
リアルタイム品質指標の実現
- PSNR, SSIM, VMAFなどの品質指標をリアルタイム算出
- オンデマンド用途ではエンコード後に別コマンドで計算可能
- ライブ配信ではエンコード直後に即時算出が必要
- 各出力レーンにデコーダーを挿入し、圧縮前後フレームを比較
- FFmpeg 7.0以降のインループデコード実装により内部フォーク不要化
メタ独自パッチとハードウェアサポート
- 一部Meta独自機能はインフラ固有のため公式パッチ化せず
- NVIDIA, AMD, Intel等のハードウェアAPI対応
- **Meta Scalable Video Processor (MSVP)**も同APIでサポート
- 社内専用ASICのため、公式FFmpegには非公開
- 内部パッチの継続的リベースと検証による品質担保
今後の展望とコミュニティ貢献
- マルチレーンエンコーディングとリアルタイム品質指標で内部フォークを完全廃止
- ハードウェアAPI活用でMSVPとソフトウェアパイプラインの統合運用
- 25年以上進化を続けるFFmpegの信頼性・機能拡張への貢献継続
- オープンソース開発者との連携による業界全体への波及効果
- 今後もMeta・業界・ユーザーに価値ある新機能開発に注力
謝辞
- オープンソースコミュニティ、FFlabs、VideoLANの協力に感謝
- Metaエンジニア(Max Bykov、Jordi Cenzano Ferret、Tim Harris、Colleen Henry、Mark Shwartzman、Haixia Shi、Cosmin Stejerean、Hassene Tmar、Victor Loh)への謝意