「FFmpegって名前は聞いたことがあるけど、何ができるの?」——動画・音声を扱うすべての人に関係するツールです。FFmpegは無料で使えるオープンソースの動画処理エンジンで、変換・圧縮・カット・音声抽出・GIF作成など、動画に関するほぼすべての作業をコマンド1行でこなせます。この記事で全体像をつかみましょう。所要時間:10分。
動作確認: FFmpeg 6.1(ubuntu-latest / GitHub Actions CI検証済み)
この記事でわかること
- FFmpegとは何か(公式定義と特徴)
- コーデックとコンテナの違い(最重要の前提知識)
- FFmpegでできること(用途別の実例コマンド)
- FFmpegでできないこと
- ffmpeg・ffprobe・ffplayの役割の違い
- 開発者向けライブラリ構成
- よくある疑問と答え(FAQ 5問)
- 次に読むべき記事
FFmpegとは
FFmpegは「音声・映像のあらゆる処理を行うためのオープンソースフレームワーク」です。公式サイトでは次のように定義されています。
A complete, cross-platform solution to record, convert and stream audio and video.
主な特徴:
- 無料・オープンソース(LGPL/GPL)
- クロスプラットフォーム(Windows・macOS・Linux・BSD等すべて対応)
- コマンドラインツール(GUIなし、スクリプト化・自動化が容易)
- 圧倒的な対応フォーマット数(数百種類のコーデック・コンテナ)
- YouTube・Netflix・VLC・HandBrakeのバックエンドでも使われている
VLC・HandBrake・OBS・Adobe Premiere・DaVinci Resolveなど、あなたが使っているソフトウェアのほとんどがFFmpegのライブラリ(libav*)を内部で使用しています。
コーデックとコンテナの違い(重要な前提知識)
FFmpegを理解するうえで最も混同しやすい概念です。
| 概念 | 説明 | 例 |
|---|---|---|
| コンテナ(ファイル形式) | 映像・音声・字幕などのデータを格納する「入れ物」。ファイル拡張子で識別 | .mp4, .mkv, .avi, .mov, .webm |
| コーデック(エンコード方式) | データの圧縮・展開アルゴリズム | H.264, H.265, AV1, AAC, MP3, Opus |
よくある組み合わせ:
| ファイル名 | コンテナ | 映像コーデック | 音声コーデック |
|---|---|---|---|
video.mp4 | MP4 | H.264 | AAC |
video.mkv | Matroska | H.264 or H.265 | AAC or FLAC |
video.webm | WebM | VP9 or AV1 | Vorbis or Opus |
video.mov | QuickTime | ProRes or H.264 | AAC |
「MP4をMKVに変換する」=コンテナのみ変更(コーデックはそのまま)が可能です(ストリームコピー)。
FFmpegでできること(実例コマンド付き)
1. フォーマット変換(コンテナ変換)
映像・音声を再エンコードせずにコンテナだけ変換。非常に高速で品質劣化なし。
# MKV → MP4(コーデックはそのまま)
ffmpeg -i input.mkv -c copy output.mp4
2. エンコード・圧縮
品質を保ちながらファイルサイズを削減します。
# H.264圧縮(最も汎用)
ffmpeg -i input.mp4 -c:v libx264 -crf 23 -c:a aac output.mp4
# H.265でさらに高圧縮(同品質でH.264より約40%小さい)
ffmpeg -i input.mp4 -c:v libx265 -crf 28 -c:a aac output.mp4
3. 動画のトリミング・カット
# 1分00秒から2分00秒を切り出し(高速・ストリームコピー)
ffmpeg -ss 00:01:00 -i input.mp4 -to 00:02:00 -c copy output.mp4
4. 音声抽出
# 動画からMP3を抽出
ffmpeg -i input.mp4 -vn -c:a libmp3lame -q:a 2 output.mp3
# 無劣化でAACをそのまま抽出
ffmpeg -i input.mp4 -vn -c:a copy output.aac
5. GIF作成
# 動画の一部をGIFアニメーションに変換
ffmpeg -i input.mp4 -vf "fps=15,scale=480:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" output.gif
6. 解像度変更(リサイズ)
# 1080p → 720pに変換
ffmpeg -i input_1080p.mp4 -vf scale=1280:-2 -c:v libx264 -crf 23 output_720p.mp4
7. ライブ配信(RTMP)
# YouTubeライブに配信
ffmpeg -re -i input.mp4 -c:v libx264 -b:v 4000k -c:a aac -f flv rtmp://a.rtmp.youtube.com/live2/YOUR_KEY
FFmpegでできないこと
| できないこと | 理由・代替手段 |
|---|---|
| DRM保護コンテンツの解除 | 著作権法上の保護対象。FFmpegの対象外 |
| GUIによるビジュアル編集 | コマンドラインツールのため。GUIが必要ならHandBrake・OpenShot等を使用 |
| タイムライン編集(非線形編集) | Adobe Premiere・DaVinci Resolve等のNLEが必要 |
| AIベースのアップスケーリング | Real-ESRGAN等の専用ツールが必要 |
ffmpeg・ffprobe・ffplayの役割
| ツール | 役割 | 使いどき |
|---|---|---|
ffmpeg | 変換・エンコード・フィルタリング・配信 | 動画処理のほぼすべて |
ffprobe | ファイル解析・メタデータ確認 | コーデック・解像度・フレームレート確認 |
ffplay | 動画再生(SDL)テスト用 | フィルタ結果の素早い確認 |
# バージョン確認
ffmpeg -version
# ファイル情報を確認
ffprobe -v quiet -show_streams -print_format json input.mp4
# 動画を再生して確認
ffplay input.mp4
開発者向けライブラリ構成(libav*)
| ライブラリ | 役割 |
|---|---|
libavcodec | エンコーダー・デコーダーの集合体 |
libavformat | コンテナのmux/demux処理 |
libavdevice | デバイス入出力(カメラ・マイクなど) |
libavfilter | フィルタグラフ処理 |
libavutil | 共通ユーティリティ |
libswscale | 映像スケーリング・ピクセルフォーマット変換 |
libswresample | 音声リサンプリング・フォーマット変換 |
FAQ
Q1. FFmpegは有料ですか?
A. 無料です。LGPL v2.1以降(またはGPL v2以降)でライセンスされたオープンソースソフトウェアです。商用利用も条件を満たせば可能です(詳細はFFmpeg Legalを参照)。
Q2. プログラミング知識がなくても使えますか?
A. はい。コマンドラインの基本(ターミナル/コマンドプロンプトを開く、コマンドを入力する)がわかれば使えます。この記事のコマンドをそのままコピペして試せます。
Q3. WindowsとMacとLinux、どれでも動きますか?
A. はい。FFmpegはクロスプラットフォーム対応です。インストール方法が異なるだけで、コマンドはほぼ共通です(パス区切り文字など微差はあります)。
Q4. 対応しているフォーマットを確認するには?
# 対応フォーマット一覧
ffmpeg -formats
# 対応コーデック一覧
ffmpeg -codecs
# 利用可能エンコーダー一覧
ffmpeg -encoders
Q5. FFmpegとHandBrakeの違いは?
A. HandBrakeはFFmpegのライブラリを内部で使うGUIソフトです。FFmpegはコマンドラインツールで自由度が高く、スクリプト化・自動化ができます。HandBrakeはGUIで直感的に操作できますが、FFmpegほど細かい制御はできません。
関連記事
- Windows/macOS/Linux別 FFmpegインストール手順
- FFmpegコマンドの基本構文 — 入力・フィルタ・出力の順序
- ffmpeg / ffprobe / ffplay — ツールの違いと使い分け
- 動画圧縮の完全ガイド — CRF・ビットレート・プリセット
動作確認: ffmpeg 6.1.1 / Ubuntu 24.04 (GitHub Actions runner)
一次ソース: ffmpeg.org/about.html / ffmpeg.org/ffmpeg.html