FFmpeg/FFmpeg
6 articles
前提知識
- ›C言語の基礎知識(構造体、ポインタ、関数ポインタ)
- ›Makefile とビルドシステムへの慣れ親しみ
- ›FFmpeg が何をするものか(映像・音声処理)の大まかな理解
01
FFmpeg ソースコード:アーキテクチャ概観と200万行のCコードを読み解く方法
FFmpeg リポジトリの包括的な入門ガイド。7つのコアライブラリ、3つのCLIツール、ライブラリの依存階層、ビルドパイプライン、コンポーネント登録の仕組み、public/privateの構造体分離パターンを解説します。
02
FFmpegのコアデータ構造:AVFrame、AVPacket、AVBuffer、そしてAVClassシステム
AVBufferの参照カウントシステム、AVClassによるリフレクション機構、コーデックのコールバックディスパッチなど、FFmpegエコシステム全体の『共通言語』として機能する基本データ型を深く掘り下げます。
03
libavcodec と libavformat の内部構造:FFmpeg のデコード・エンコード・Mux・Demux の仕組み
libavcodec の send/receive API を通じたデコード・エンコードの処理経路、libavformat における demux・mux のライフサイクル、I/O プロトコルスタック、ハードウェアアクセラレーションコンテキストを詳しく解説します。
04
ffmpeg トランスコーディングパイプライン:Scheduler のアーキテクチャとスレッド制御
ffmpeg CLI ツールのトランスコーディングエンジンを解剖し、デマルチプレクサ・デコーダ・フィルタ・エンコーダ・マルチプレクサを DAG として構築する Scheduler の設計と、各コンポーネントのスレッド管理を詳しく解説します。
05
FFmpegのフィルターグラフエンジン:libavfilterによる音声・映像処理の仕組み
libavfilterサブシステムを解説します。フィルターノードがリンクで接続された有向グラフエンジンとして、音声・映像フレームを処理し、フォーマットネゴシエーション、アクティベーションスケジューリング、トランスコードパイプラインとの統合を実現する仕組みを詳しく説明します。
06
FFmpegのビルド・テスト・コントリビューション: configure、FATE、開発ワークフロー
シリーズの実践的な総仕上げ。ソースからのビルド方法、FATEテストフレームワークの仕組み、学習リソースとしてのサンプルプログラム、そして新しいコーデック・フィルター・フォーマットをコントリビュートする手順を解説します。