ffmpegの(個人的に)よく使うオプションまとめ


FFMPEGの(個人的に)よく使うオプションまとめ

記述意図

  • GitHubにまとめづらい
  • やることがバラバラだからまとまってる記事がない
  • 必要なさげなことが多くて読みにくい記事が多い

環境

環境1

Mac mini (Late2014)
macOS Mojave 10.14.3
ffmpeg version 4.1

環境2

HP z400
Ubuntu 18.04 LTS
ffmpeg version n4.1
Xeon X5690
Quadro K2000 とか

オプションについて(本題)

基本

ffmpeg -i input.mp4 output.mp4

フォーマットさえしっかりしていればとりあえずこれでOK

音声抽出

ffmpeg -i input.mp4 output.mp3

とりあえずこれで良い

画像抽出

ffmpeg -i input.mp4 -ss 15 -f image2 output.png

15秒目の画像を抽出する
-ss は開始位置だけど、1枚しか画像を抽出しないならこれが抽出位置になる
-f 知りたければ自分で調べてね
エラーっぽいの出るけど、画像得られるから無問題

動画抽出

ffmpeg -i input.mp4 -ss 42 -t 23 output.mp4

動画を42秒目から23秒間抽出する
つまり
0:42 -> 1:05
が出力される

フレームレート指定

-r:v 値(fps)

ffmpeg -i input.mp4 -r:v 30 output.mp4

30fps

ビットレート指定

-b:v 値(bps)

ffmpeg -i input.mp4 -b:v 1k output.mp4

1kbps
あまり小さいと無視されるっぽい

2分5秒の動画で比較すると

指定レート(bps) 生成ファイル(MB) 実際のレート(bps)
1k 6.1 390k
100k 6.1 390k
10M 152 9.7M
ちなみに画質差はこんな感じ

100k

1M

10M

入力:1920x1080 mov (iPhone 7 Plus -> mac)
コーデックとかにも依るのかもだけど

動画回転

右90度回転

-vf transpose=1

ffmpeg -i input.mp4 -vf transpose=1 output.mp4
左90度回転

-vf transpose=2

ffmpeg -i input.mp4 -vf transpose=2 output.mp4




コーデック設定

-c:v コーデック名

h264
ffmpeg -i input.mp4 -c:v h264 output.mp4
h264_nvenc (GPU)
ffmpeg -i input.mp4 -c:v h264_nvenc output.mp4
処理時間の差

-b:v 30M (30Mbps)
125秒動画の形式変更 mov -> mp4

codec 処理時間(秒) 生成ファイル(MB)
h264 276 451MB
h264_nvenc 95 454MB