ffmpegで連番画像を動画に変換,動画を連番画像に変換
ffmpegを使えば,連番画像から簡単に動画を作ることができる.逆に,動画から連番画像をつくることもできる.
ffmpegはよく使っていたにもかかわらず,自分はこの事実を知らなかった.お陰で上記の変換をするプログラムをOpenCVで自作していた...
ffmpeg -r 15 -i img_%04d.png -b 5000000 -r 15 output.avi
img_XXXX.pngという連番画像を15fpsで動画にしますというコマンドである.-bは画質に関わる.
ここで-rのオプションが2つあることに注目.
手前を-r 5として後半を-r 15とすると,1秒間に15フレームの動画だが画像は5枚しか更新されない動画が完成する.
つまり15フレームのうち3フレームずつ同じ画像が含まれることになる.(多分そんな感じ)
一方動画から連番画像を出力する場合は
ffmpeg -i "input.avi" -f image2 -vcodec png "./img_%04d.png"
とすることでimg_XXXX.pngが得られる.飛び飛びの画像を保存したい場合は30fpsの動画に対して
ffmpeg -i "input.avi" -f image2 -vcodec png -r 15 "./img_%04d.png"
とかにすれば1個飛ばしができた気がする.jpegの場合は-vcodec pngを-vcodec mjpegに変えればいいのだが,劣化が激しいので別にオプションをつけて
ffmpeg -i "input.avi" -f image2 -vcodec mjpeg -qscale 1 -qmin 1 -qmax 1 "img_%04d.jpg"
とすれば良いようだ.