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)。

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ストリーム・フォーマット情報の解析・表示
ffplaySDL を使ったシンプルなメディアプレーヤー(主にテスト用途)

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)。

バイナリ配布時はライセンスと帰属表示の要件を必ず確認してください。


まず試す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