ffmpegは動画を作ったり抽出したり色んなことができるのですが、オプション多すぎてわからなくなるのでメモ
基本
ffmpeg -i input.mp4 output.avi
-i
で入力を指定し、最後に出力を指定する。
何にでも付けられるオプション
ffmpeg -y -v error -i input.mp4 output.avi
-y
は出力ファイル(output.avi
)がすでにある場合に何も聞かずに上書く。
-v error
はログレベルがエラー以上のもののみ画面に出力する。(指定しないと色んな情報が画面に出力される)
複数の動画をつなげて1つの動画にする
ffmpeg -f concat -safe 0 -i list.txt -c copy concat.mp4
list.txtファイルには、つなげたい動画を1行に1ファイルずつ頭に『file 』を付けて順番に書く。
file /path/to/input/file1.mp4
file /path/to/input/file2.mp4
1枚の静止画から動画を作る
ffmpeg -loop 1 -i pict.jpg -i audio.aac -c:v h264 -profile:v main -t 10 -pix_fmt yuv420p -r 60 out.mp4
-i pict.jpg -i audio.aac
で静止画と音声を指定
-c:v h264
で動画のコーデックをh264に指定
-t 10
で動画の時間を10秒に指定
-r 60
でフレームレートを60に指定
複数枚の静止画が5秒ずつ表示されるスライドショー的な動画を作る
ffmpeg -r 0.2 -i %02d.JPG -b:v 3000k -c:v h264 -pix_fmt yuv420p -r 30 out.mp4
-r 0.2
はフレームレート(1秒に何枚静止画を出すか)の指定なので、0.2だと1枚の静止画が5秒間表示されることになる。
-i %02d.JPG
で入力静止画のフォーマットを指定。%02d
は2桁の数字を意味するので、この場合は01.JPG
、02.JPG
、...、99.JPG
が対象となる。連番である必要がある。
-b:v 3000k
で動画のビットレートを指定。大きくすると綺麗になるがファイルサイズも大きくなる。
-r 30
動画のフレームレートを指定する。
動画から静止画を抽出する
ffmpeg -ss 10 -t 5 -i input.mp4 -r 2 -f image2 pict%02d.jpg
-ss 10
で抽出位置を開始から10秒の位置に指定(指定しない場合は最初から)
-t 5
で時間を5秒間に指定(指定しない場合はすべてが対象)
-r 2
で1秒に2枚抽出することを指定
1秒に2枚で5秒間なので、pict01.png〜pict10.jpgの10枚ぐらい(多少前後するっぽい?)の連番ファイルができる。
出力ファイル名の拡張子をpngにしたらpngになる。
無音の音声ファイルを作る
ffmpeg -f lavfi -i anullsrc=channel_layout=stereo:sample_rate=48000 -c:a aac -t 1 silence.aac
-t 1
で時間を1秒に指定