なぜMetaはFFmpegフォークを維持していたのか?

FFmpegはオーディオ/ビデオ処理のデファクトスタンダードツールです。Metaは一日に数百億回のFFmpeg実行を通じてユーザーアップロード動画を処理しており、この規模では標準的なFFmpegではカバーされない特殊な要件が生じます。例えば、スレッドベースのマルチレーンエンコーディングリアルタイム画質メトリクス計算といった機能は、当時の公式バージョンにはありませんでした。これに対応するため、Metaは独自のフォークを開発・使用してきました。

しかし時間の経過とともに、二つの大きな問題が発生しました。第一に、フォークバージョンがアップストリームから大きく乖離し、新しいコーデックやフォーマットのサポート、安定性の改善を適用することが難しくなりました。第二に、フォークと公式バージョンを並行して維持することは、機能セットの分裂と、リベース時のリグレッションリスクを高めました。この問題の解決策は、機能をアップストリームに貢献し、フォークを完全に廃止することでした。

Meta's large-scale server infrastructure processing billions of videos daily with FFmpeg IT Technology Image

核心的な問題解決:二つのアップストリーム貢献

Metaがアップストリームに貢献し、内部フォークへの依存を排除した二つの主要機能を見ていきましょう。

1. 効率的なマルチレーントランスコーディング (FFmpeg 6.0〜8.0)

ユーザーが動画をアップロードすると、DASH (Dynamic Adaptive Streaming over HTTP) 再生のために、様々な解像度/品質のエンコーディングセットを生成します。従来は各エンコーディングを別々のFFmpegプロセスで実行していたため、デコード作業が重複する非効率がありました。単一コマンドで複数出力を作成する方法もありましたが、以前のFFmpegでは各エンコーダがフレームごとに順次実行され、並列性に課題がありました。

Metaフォークは全てのエンコーダインスタンスを並列実行する最適化を提供しており、この設計がFFlabs、VideoLANの開発者らとの協力を通じてFFmpeg 6.0から本格的に、8.0で完成されアップストリームに統合されました。これはFFmpeg史上最も複雑なリファクタリングの一つと評価され、全てのFFmpegユーザーがより効率的なエンコーディングを行えるようになりました。

2. リアルタイム画質メトリクス計算 (FFmpeg 7.0〜)

圧縮による画質劣化を数値化するVMAF、SSIMなどのメトリクスは、従来はエンコーディング完了後に別コマンドで計算可能でした。しかし、ライブストリーミング環境では、エンコーディングと同時にリアルタイムでメトリクスを取得する必要が生じます。

これを実現するには、各出力レーンのエンコーダの後にビデオデコーダを挿入し、圧縮適用後のフレームを取得してオリジナルと比較する必要があります。'インループ(In-loop)デコーディング'機能がFFmpeg 7.0から導入されたことで、Metaは単一のFFmpegコマンドで各エンコーディングレーンのリアルタイム品質メトリクスを生成できるようになり、この機能についてもフォークへの依存から脱却できました。

このような大規模システム最適化は、スポティファイ アプリ リリースの裏側 ダッシュボード設計と自動化の教訓で扱われているように、複雑なパイプラインを標準化・自動化することの効用をよく示しています。

Diagram showing multi-lane video encoding for DASH streaming optimization System Abstract Visual

アップストリーム貢献の戦略と限界

Metaは、リアルタイム画質メトリクスや効率的なスレッディングのようにコミュニティ全体に役立つ機能は積極的にアップストリームに貢献します。しかし、全てのパッチを公開するわけではありません。

内部維持が合理的な場合:

  • Meta Scalable Video Processor (MSVP) サポート: Meta自身のインフラでのみ使用されるカスタムASICに対するサポートパッチは、外部開発者がテストやメンテナンスを行うことができないため、内部に維持します。ただし、FFmpegの標準ハードウェアAPIを通じて実装することで、他のプラットフォーム(NVIDIA NVENC、Intel QSVなど)と同じツーリングを使用できるようにしています。
  • 極度にインフラ特化したパッチ: Metaの非常に具体的なワークフローにのみ依存する変更点は一般化が困難です。

日本の開発エコシステムへの示唆: 日本においても大規模メディアサービスを運営する場合、オープンソースフォークのメンテナンス負荷は同様に発生します。Metaの事例は、早期にアップストリームと協業し、標準APIを遵守し、一般化可能な機能はコミュニティに還元する戦略が長期的により持続可能であることを示しています。特にFFmpegのようなコアインフラツールでは、『ベンダーロックイン』を避け、エコシステムの発展に参画することが技術的負債を減らす道です。

Engineer analyzing real-time video quality metrics (VMAF, SSIM) on a dashboard Development Concept Image

まとめ:オープンソースエコシステムとの共生

より効率的なマルチレーンエンコーディングとリアルタイム画質メトリクス機能のアップストリーム統合により、Metaは全てのVOD及びライブストリーミングパイプラインから内部FFmpegフォークを完全に廃止することができました。これは25年以上開発されてきたFFmpegエコシステムの強さと、大企業がオープンソースに貢献する際の共生モデルを実証しています。

次の学習ステップ:

  1. FFmpeg公式ドキュメントで -filter_complex と複数出力を利用した高度なトランスコーディングワークフローを学んでみましょう。
  2. 画質評価メトリクス(VMAF, SSIM)の原理と、FFmpegでの計算方法(libvmaf フィルタ)を理解することが役立ちます。
  3. 大規模システムを設計する際、特定のバージョン/フォークに過度に依存しないアーキテクチャを考察することが重要です。

MetaのFFmpeg改善事例は、データセットのようなAIインフラにおいても重要な教訓を与えます。例えば、ブラジルAIのための核心データセット、Nemotron-Personas-Brazil リリースで見られるように、特定の地域/文脈に合った高品質データを公開することは、そのエコシステム全体の発展を促進します。技術の進歩は、閉鎖的な最適化よりも、エコシステムとの健全な相互作用から生まれるという点を、この根拠資料はよく示しています。

本コンテンツは、信頼性の高い情報源をもとにAIツールを活用して作成され、編集者によるレビューを経て公開されています。専門家によるアドバイスの代替となるものではありません。