ffmpegを使って静止画のスライドショーを作るメモ

実際(の目的)は「0:00s〜30秒間は a.jpg」「0:30〜最後まで b.jpg」みたいなことをしたい、だったのだけど悪戦苦闘したのでメモ。

まず、画像を2つと仮定して、それぞれ a.jpgb.jpg とします。まず、このファイル名をこんな感じでリネームしました。以下、説明はWindows(cmd.exe)ベースですが、まあなんとでもなるはず。

C:\>ren a.jpg 1.jpg
C:\>ren b.jpg 2.jpg

この連番の数字で、1から始まっていることの両方が重要になってきます。さて、スライドのBGMとして hoge.mp3 を用意したとしましょう。

C:\>ffmpeg -i %1d.jpg -i hoge.mp3 hoge.flv

などとすればOK。ところが、当然のことながら? 2.jpgが出るタイミングが望みとは違うでしょう。そこで -rオプションでフレームレートを指定します。小数点以下1ケタぐらいまでなら対応できるようです。0.05とか指定するとヘンになりました。0.1ぐらいまでで妥協しました。

C:\>ffmpeg -r 0.1 -i %1d.jpg -i hoge.mp3 hoge.vl

当然、大体10秒すると切り替わってしまいますから、これはこれで調整がうまくいきません。そこで、間の画像をファイルを作って間延びさせました。きっといい方法があると思うんですがわかりません。誰か知っていたらご指摘いただけるととても勉強になります。

C:\>copy 2.jpg 4.jpg
C:\>copy 1.jpg 2.jpg
C:\>copy 1.jpg 3.jpg

これで 1==2==3、4 という2種類4枚の構成になりました。あとはこれらの作業を組み合わせると望みの位置で画像が切り替わる、ということも出来るはずです。

  • r で指定する方法だと割り算とかになってくるし、長い動画だとこの方法だと同じ内容の画像ファイルが散らかりそうなのでいやなのですが、他にいい方法があったら是非教えてくださいまし。。