FFmpegインストール・使い方・オプション・コマンド
FFmpegは、動画・音声の変換や圧縮、切り出し、結合などをコマンドラインで実行できる強力なツールです。本記事は「初めてでも迷わない」ことを目的に、基本のコマンド構造と、よく使うオプションを使用例つきの表でまとめました。すぐにコピペできる実用レシピも掲載します。
インストール
- macOS(Homebrewを使うのが簡単):
-
Homebrewのインストール(まだの人だけ)
-
ffmpegのインストール(ターミナルから以下コマンド実行)
brew install ffmpeg
-
バージョン確認
ffmpeg -version
-
Windows:
-
公式配布または
choco install ffmpeg
(Chocolatey)等。 -
インストール後に
ffmpeg -version
で確認。
-
-
Linux:
- ディストリビューションのパッケージマネージャを利用(例:
sudo apt install ffmpeg
)。
- ディストリビューションのパッケージマネージャを利用(例:
基本的なコマンドの構造(ここが最重要)
FFmpegの基本形は下記です。概念として「入力 → 処理 → 出力」の流れになります。
ffmpeg [グローバルオプション] [入力オプション] -i [入力ファイル] [出力オプション] [出力ファイル]
各パートの役割
パート名 | 役割・説明 | 例・補足 |
---|---|---|
グローバルオプション | ffmpeg全体に影響するオプション | -y (出力ファイルを確認せず上書き) |
入力オプション | 入力ファイルに関する指定 | -ss 60 (入力の60秒から開始)、-f mp4 (入力フォーマットを明示) |
入力ファイル | 変換・編集したいファイルの指定 | -i input.mp4 |
出力オプション | 出力形式やエンコード方法の指定 | -c:v libx264 (動画コーデック)、-c:a aac (音声コーデック)、-crf 23 (画質指定)、-vf scale=1280:720 (サイズ変更) |
出力ファイル | 変換・編集後のファイル名の指定 | output.mp4 |
ポイント(順序が重要)
-
オプションの多くは「どの出力に効くか」が位置で決まります。原則として、出力ファイル名の“前”に書いたオプションはその出力に適用されます。
-
-i
で入力を指定し、その後にコーデックやビットレート、フィルタ(-vf
/-af
)などを並べ、最後に出力ファイル名を書きます。 -
1回のコマンドで複数出力も可能です(それぞれの出力の直前にオプションを配置)。
コマンド例
ffmpeg -y -i input.mp4 -c:v libx264 -crf 23 -c:a aac -b:a 128k -vf "scale=1280:720" output.mp4
コマンド例の分解イメージ
ffmpeg \
[グローバル] \ # -y(出力ファイルを確認せず上書き)
-i input.mp4 # 入力(コンテナ: MP4、映像/音声ストリームを内包) \
-c:v libx264 -crf 23 # 映像コーデック設定(libx264)と品質(CRF) \
-c:a aac -b:a 128k # 音声コーデック(AAC)と音声ビットレート \
-vf scale=1280:720 # 映像フィルタ(例: リサイズ) \
output.mp4 # 出力
用語メモ(初心者向け)
用語 | 意味・説明 | 例・補足 |
---|---|---|
コーデック | データを圧縮・展開する方式。動画や音声の「中身の形式」。 | 映像: H.264 、音声: AAC |
コンテナ | 映像・音声・字幕などをまとめて格納する“入れ物”の形式。 | MP4 、MKV など |
ビットレート | 1秒あたりのデータ量。高いほど画質・音質が良くなる傾向。 | 2M = 2メガビット/秒 |
フレームレート | 1秒間に表示されるフレーム(画像)の数。 | 24fps、30fps、60fps など |
解像度 | 画面の縦横サイズ(ピクセル数)。 | 1920x1080 など |
CRF | 品質目標の指標(Constant Rate Factor)。小さいほど高品質。 | 0=無劣化、18〜28が目安、23付近が標準 |
CFR/VFR | 恒常フレームレート(CFR)/可変フレームレート(VFR)。用途に応じて使い分ける。 | 編集や配信で使い分ける |
よく使うオプション早見表(使用例つき)
オプション | 役割/意味 | よく使う場面 | 使用例 | 補足 |
---|---|---|---|---|
-i | 入力ファイル指定 | 変換・編集の起点 | -i input.mp4 | 複数可(-i を並べる)。 |
-c:v | 映像コーデック指定 | H.264/H.265/VP9等の選択 | -c:v libx264 | 互換性重視はH.264(libx264 )。 |
-c:a | 音声コーデック指定 | AAC/MP3/Opus等 | -c:a aac | 一般的なMP4はAACが無難。 |
-b:v | 映像ビットレート | ABRやCBR指定 | -b:v 2M | ファイルサイズを概ね制御。CRFと併用は非推奨。 |
-b:a | 音声ビットレート | 音質調整 | -b:a 128k | トーク中心は128kでも十分なことが多い。 |
-crf | 品質指標(可変ビットレート) | 画質優先の圧縮 | -crf 23 | 数値が小さいほど高品質。H.264で18〜28目安。 |
-preset | エンコード速度/圧縮率の調整 | 品質はそのまま速度を調整 | -preset slow | ultrafast →placebo 。遅いほど高圧縮=小容量。 |
-vf | 映像フィルタ | リサイズ/クロップ/回転等 | -vf scale=1280:720 | 複数は, で連結。 |
-af | 音声フィルタ | 音量調整/ノーマライズ等 | -af volume=1.5 | -filter:a とも書ける。 |
-filter_complex | 複雑なフィルタグラフ | 連結/ピクチャインピクチャ等 | -filter_complex "[0:v][1:v]hstack" | 複数入力・分岐に対応。 |
-ss | 開始位置 | トリミング/サムネ抽出 | -ss 00:01:00 | 入力の前=高速/概算、後=精密。 |
-t | 長さ(秒/時刻) | クリップ長の指定 | -t 30 | -to は終了時刻。併用は避ける(後に書いた方が優先)。 |
-to | 終了時刻 | 2分まで等の指定 | -to 00:02:00 | -ss と使って区間抽出も。 |
-r | 出力フレームレート | 24/30/60fps等 | -r 30 | 入力のfpsを変える際に使用。 |
-s | 出力解像度 | 720p等に統一 | -s 1280x720 | -vf scale とおおむね同等。フィルタ連携なら-vf 推奨。 |
-map | ストリーム選択 | 特定の映像/音声/字幕のみ | -map 0:v:0 -map 0:a:0 | 自動選択を制御。複数入力時に重要。 |
-an | 音声なしにする | ミュート動画 | -an | 音声トラックを出力しない。 |
-vn | 映像なしにする | 音声抽出 | -vn | 映像トラックを出力しない。 |
-sn | 字幕なしにする | 字幕を外す | -sn | 字幕を出力しない。 |
-pix_fmt | ピクセルフォーマット | 互換性確保 | -pix_fmt yuv420p | 古い再生機器で有効。 |
-movflags +faststart | MP4のmoov先頭化 | Web再生を早く | -movflags +faststart | ストリーミング開始が早い。 |
-shortest | 最短ストリームに合わせる | BGMが短い等 | -shortest | 最短のストリームに合わせて早めに終了。 |
-y | 上書き許可 | 自動化 | -y | 既存ファイルに確認なしで上書き。 |
-n | 上書き禁止 | 誤上書き防止 | -n | 既存があると失敗させる。 |
-f | フォーマット指定 | 生PCM等の明示 | -f wav | 自動判定が誤るケースで使用。 |
注意: H.264/H.265の品質重視は
-crf
+-preset
が基本。明確な目標サイズがある場合のみ-b:v
(2pass推奨)を検討。注意2:
-r
は入力側と出力側で意味が異なります。入力の前に置く-r
は「入力のフレームレートをこうだとみなす」指定で、通常のMP4等では不要です。出力側の-r
は「出力の目標fps」を指定します。
すぐ使えるコマンド一覧(コピペOK)
1) MOV→MP4、CFR25指定
ffmpeg -i input.mov -crf 25 output1.mp4
2) 動画のトリミング(1分地点から30秒)
ffmpeg -i input.mp4 -ss 00:01:00 -t 30 -c:v libx264 -crf 22 -c:a aac -b:a 128k output_clip.mp4
メモ: -ss
を入力の“後”に置くとフレーム精度が上がります(速度はやや低下)。
3) 高速にざっくりトリミング(キーフレーム基準)
ffmpeg -ss 60 -i input.mp4 -t 30 -c copy output_fast.mp4
メモ: 入力の“前”に-ss
を置き、-c copy
で再エンコードなし。切断点は概算になります。
4) 音声を無音にする(映像は再エンコード)
ffmpeg -i input.mp4 -an -c:v libx264 -crf 23 output_noaudio.mp4
5) 音声だけ抽出(WAVやMP3)
# WAV(非圧縮)
ffmpeg -i input.mp4 -vn -c:a pcm_s16le -ar 48000 -ac 2 output.wav
# MP3(圧縮)
ffmpeg -i input.mp4 -vn -c:a libmp3lame -b:a 192k output.mp3
6) 解像度を1280x720にリサイズ
ffmpeg -i input.mp4 -vf scale=1280:720 -c:v libx264 -crf 22 -c:a aac -b:a 128k output_720p.mp4
7) 目標ビットレートで書き出し(2Mbps)
ffmpeg -i input.mp4 -c:v libx264 -b:v 2M -c:a aac -b:a 128k output_2m.mp4
例:-b:v 2M。「映像品質が保証されるわけではありません。希望のビットレートでお試しください。」
8) 画質優先(CRF基準)
ffmpeg -i input.mp4 -c:v libx264 -crf 20 -preset medium -c:a aac -b:a 160k output_crf20.mp4
9) 複数の動画を結合(同じコーデック/解像度/フレームレート前提)
# 1) リストファイルを作成(例: files.txt)
# file 'part1.mp4'
# file 'part2.mp4'
# file 'part3.mp4'
# 2) concatデマルチプレクサで結合
ffmpeg -f concat -safe 0 -i files.txt -c copy merged.mp4
10) 字幕を焼き込む(SRT)
ffmpeg -i input.mp4 -vf subtitles=subs.srt -c:v libx264 -crf 22 -c:a copy output_subbed.mp4
11) 90度回転(時計回り)
ffmpeg -i input.mp4 -vf "transpose=1" -c:a copy output_rotated.mp4
12) フレームレートを30fpsに変換
ffmpeg -i input.mp4 -r 30 -c:v libx264 -crf 22 -c:a aac -b:a 128k output_30fps.mp4
-r 30 の指定は一般的。ただし「フレームの補間はせず、間引き/複製されます」
よくある疑問・トラブルシューティング
エラー・現象 | 対処法・説明 |
---|---|
Unknown encoder ‘libx264’ | H.264エンコーダが入っていないビルド。macOSのHomebrew版なら通常含まれます。別の配布源を利用するか再インストール。 |
At least one output file must be specified | 出力ファイル名を書き忘れ。最後にoutput.mp4 等を明示。 |
Non-monotonous DTS | トリミングやストリーム結合で時系列が前後。-fflags +genpts や再エンコードで解消することがあります。 |
Webで再生が始まるのが遅い | -movflags +faststart でmoovを先頭に移動。 |
互換性が低い/一部で再生できない | -pix_fmt yuv420p を付与、H.264ならlevel /profile 調整も検討。 |
参考リンク
-
公式サイト: https://ffmpeg.org/
-
CRFの解説(英語): https://slhck.info/video/2017/02/24/crf-guide.html
-
Fab Academy ffmpeg encoding : https://academy.cba.mit.edu/classes/computer_design/video.html
以上、FFmpegの「基本の型」と「定番オプション」「即戦力レシピ」をまとめました。まずはサンプルをコピペで動かし、必要に応じてパラメータを調整してみてください。