FFmpegとは
FFmpegは「マルチメディア処理のためのオープンソースフレームワーク」です。 公式サイト では次のように定義されています。
A complete, cross-platform solution to record, convert and stream audio and video.
デコード・エンコード・トランスコード・多重化(mux)・逆多重化(demux)・ストリーミング・フィルタリング・再生を単一のツール群で扱える点が最大の特徴です。Linux・macOS・Windows・BSD・Solarisなど主要プラットフォームで動作します。
FFmpegでできること
1. デコード・エンコード・トランスコード
FFmpegは「人間と機械が作り出したほぼあらゆるもの」をデコード・エンコードできます(公式 About)。
- デコード: MP4/MKV/AVI/MOV/FLVなどのコンテナから映像・音声を読み出す
- エンコード: H.264・H.265・VP9・AV1・AAC・MP3などにエンコードする
- トランスコード: デコードしてから別コーデックに再エンコードする
ffmpeg -i input.mp4 -c:v libx264 -c:a aac output.mkv
2. フォーマット変換(コンテナ変換)
映像・音声を再エンコードせずにコンテナ(ファイル形式)だけ変換できます。これをストリームコピーと言います。
ffmpeg -i input.mkv -c copy output.mp4
ストリームコピーはデコード・エンコードを行わないため「非常に高速で品質劣化もない」と公式ドキュメントに記載されています。
3. フィルタリング
-vf(映像フィルタ)や -af(音声フィルタ)で多様な加工ができます。
- リサイズ・クロップ・回転・字幕焼き込み
- 音量調整・ノイズ除去・音声チャンネル変換
- タイムラプス・スロー再生
フィルタはフィルタグラフとして接続でき、複数のフィルタを組み合わせた複雑な処理も可能です(公式: ffmpeg-filters)。
4. ストリーミング・録画
RTMP・HLS・DASH・UDP・TCPなど各種プロトコルに対応し、ライブ配信の送受信に使えます(公式: ffmpeg-protocols)。
5. サポートフォーマット・コーデックの確認
インストール済みのビルドが対応するフォーマットとコーデックを一覧できます。
ffmpeg -formats
ffmpeg -codecs
コーデックとコンテナの違い(重要な前提知識)
FFmpegを使う上で混同しやすい概念です。
| 概念 | 説明 | 例 |
|---|---|---|
| コンテナ | 映像・音声・字幕などのデータを格納する「入れ物」。ファイル拡張子で区別される | .mp4, .mkv, .avi, .mov |
| コーデック | データの圧縮・展開方式 | H.264, H.265, AAC, MP3, VP9 |
MP4コンテナには通常 H.264(映像)+ AAC(音声)が格納されていますが、コンテナとコーデックは独立した概念です。同じMP4でもH.265で格納することも技術的には可能です。
FFmpegのコンポーネント構成
公式 About によれば、FFmpegは以下のコンポーネントで構成されています。
コマンドラインツール
| ツール | 役割 |
|---|---|
ffmpeg | 変換・エンコード・フィルタリング・ストリーミング |
ffprobe | ストリーム・フォーマット情報の解析・表示 |
ffplay | SDL を使ったシンプルなメディアプレーヤー(主にテスト用途) |
3ツールの詳細な使い分けについては「ffmpeg / ffprobe / ffplay の違いと役割」を参照してください。
開発者向けライブラリ(libav*)
| ライブラリ | 役割 |
|---|---|
libavcodec | エンコーダー・デコーダーの集合体 |
libavformat | コンテナのmux/demux処理 |
libavdevice | デバイス入出力(カメラ・マイクなど) |
libavfilter | フィルタグラフ処理 |
libavutil | 共通ユーティリティ(数学・文字列など) |
libswscale | 映像スケーリング・ピクセルフォーマット変換 |
libswresample | 音声リサンプリング・フォーマット変換 |
これらのライブラリはアプリケーション開発にも利用でき、VLC・HandBrake・OBSなど多くのソフトウェアがFFmpegのライブラリを採用しています。
FFmpegでできないこと
DRM保護コンテンツの解除
DRM(デジタル著作権管理)で保護されたコンテンツのデコード・抽出はFFmpeg単体ではできません。商業的に販売されているBlu-rayや配信サービスのコンテンツは著作権法上の保護対象であり、FFmpegはそのような用途を想定していません。
GUI操作
FFmpegはコマンドラインツールです。GUIが必要な場合はHandBrake(FFmpegをバックエンドに使用)などのフロントエンドアプリを利用してください。
リアルタイムプレビュー編集
非線形編集(Adobe Premiere・DaVinciなどのタイムライン編集)はFFmpegの対象外です。
ライセンス
FFmpegは LGPL v2.1 以降(またはオプションで GPL v2 以降)でライセンスされています(公式: FFmpeg Legal)。
- LGPL ビルド: デフォルト。ダイナミックリンクによる商用利用が可能。
- GPL ビルド:
--enable-gplオプションでビルド。libx264・libx265など一部の高機能コーデックが有効になる。閉鎖ソフトウェアへの組み込みには制限が生じる。
バイナリ配布時はライセンスと帰属表示の要件を必ず確認してください。
まず試す1コマンド
インストールが済んだらバージョンを確認しましょう。
ffmpeg -version
次に手元のファイルを変換してみましょう。
ffmpeg -i input.mp4 output.avi
これだけで MP4 → AVI への変換ができます(コーデックはFFmpegが自動選択)。
インストール方法は「Windows/macOS/Linux別 FFmpegインストール手順」を参照してください。 コマンドの書き方は「FFmpegコマンドの基本構文」で詳しく解説しています。
動作確認: ffmpeg 6.1.1 / Ubuntu 24.04 (GitHub Actions runner) 一次ソース: ffmpeg.org/about.html / ffmpeg.org/ffmpeg.html