入出力
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