まえがき
前回 WebM作りました。
サムネイルやスライドショーはある点において便利だよね。
参考: FFmpeg WikiのImages / Frames
キャプチャ (動画から画像へ)
指定箇所をキャプチャ
$ ffmpeg -ss hh:mm:ss.xxx -i src.webm -vframes 1 capture.jpg
hh:mm:ss.xxx
でキャプチャ時間を指定する。
-vframes 1
で1フレームのみを出力する。
一定の間隔でキャプチャ
$ ffmpeg -i src.webm -vf fps=fps=1 capture%05d.jpg
fps=fps=1
でフレームレート(間隔)を指定する。1秒間隔なら1、10秒なら1/10となる。
画像は連番で出力されるため、その形式を指定する。上記の例では0埋め5桁の整数で連番がつく。
キャプチャを格子状に並べた画像で出力する
$ ffmpeg -i src.webm -vf fps=fps=1/10,scale=320:240,tile=4x8 capture.jpg
tile=4x8
で横4 縦8 の格子状にキャプチャが並べられた画像を出力する。キャプチャが足りない分は黒埋め。多い場合は連番出力が必要。
scale=320:240
でキャプチャの解像度を指定する。指定しなければ元画像と同じ。タイル数並べた分の画像サイズで出力されるので縮小した方が良い。
スライドショー (画像から動画へ)
$ ffmpeg -framerate 30 -i capture%03d.jpg -pix_fmt yuv420p output.webm
-framerate
でフレームレート(間隔)を指定する。入力ファイル数 / フレームレート秒の動画ができる。
入力ファイルは連番形式であること。ただし-start_number
で開始番号を指定できる。
-pix_fmt yuv420p
で色空間をyuv420pに指定。h.264とかにする場合はこれしておいた方が良いので、とりあえず統一しておく。