🎬 FFmpeg個人リファレンス

入出力

FFmpegのコマンドは ffmpeg [入力オプション] -i 入力 [出力オプション] 出力 という順番が基本です。 -i の前に書いたオプションは入力に、後に書いたオプションは出力に効きます。この順番がとても重要です。

もっとも基本の形

ffmpeg -i input.mov output.mp4

入力を -i で指定し、最後に出力ファイル名を書くだけ。出力の拡張子からフォーマットが自動で決まります。

上書きの挙動を制御する

出力先が既に存在するとき、デフォルトでは確認を求められます。スクリプトでは -y / -n で挙動を固定します。

# 上書きを確認なしで許可
ffmpeg -y -i input.mov output.mp4

# 既に存在したら処理しない
ffmpeg -n -i input.mov output.mp4

複数の入力を組み合わせる

入力は -i を並べて複数指定できます。どのトラックを使うかは -map で選びます。

# 複数入力(0番目=映像, 1番目=音声)
ffmpeg -i video.mp4 -i music.mp3 -map 0:v:0 -map 1:a:0 -c:v copy -c:a aac output.mp4
ヒント
-map 入力番号:種別:トラック番号 の形式です。0:v:0 は「0番目の入力の最初の映像」を意味します。

トラックを選ぶ・除外する

# 1番目の音声トラックだけ使う
ffmpeg -i input.mkv -map 0:a:1 output.m4a

# 映像トラックを除外(音声のみ)
ffmpeg -i input.mp4 -vn output.m4a

# 音声トラックを除外(無音動画)
ffmpeg -i input.mp4 -an output.mp4
  • -vn … 映像を出力しない
  • -an … 音声を出力しない
  • -sn … 字幕を出力しない

標準入出力(パイプ)

ファイルを介さず、他のコマンドと直接つなぐこともできます。pipe:0 が標準入力、pipe:1 が標準出力です。 パイプを使うときは -f でフォーマットを明示します(拡張子で判断できないため)。

# 標準入力から受け取り、標準出力へ流す(パイプ)
cat input.mp4 | ffmpeg -i pipe:0 -f mp3 pipe:1 > output.mp3

関連: コーデック / コンテナ / ffprobe