動画ファイルからパラパラ漫画用のスプライトシートを生成する方法です。
いつもやり方を忘れてしまうので備忘のため。
コマンド
ffmpeg -i /path/to/movie.mp4 -vf fps=12,scale=600:-1,tile=24x1 -an -vsync 0 -qscale 2 -qmin 1 -qmax 5 ./sheets/%0d.jpg
※ jpg出力だと画質が著しく悪くなる可能性があるのでpng出力のが良いかも。
追記
-qscale
オプションでjpgの画質設定が可能。詳しくは後述。
-i
オプション
入力ファイル。
素材となる動画ファイルを指定する。
-vf
オプション
ビデオフィルター。
エンコード時にかける効果を指定する。
fps
フィルター
1秒間あたりのフレーム数を指定する。
# 例) 秒間12フレーム
fps=12
scale
フィルター
1フレームあたりの画像サイズを指定する。
# width:height の書式で明示的にサイズを指定
scale=1920:1080
# 片方を `-1` にすると、もう片方の値と元の動画ファイルのアスペクト比にしたがって計算される
scale=600:-1
tile
フィルター
fps
フィルターで指定した値にしたがって動画中のフレームをタイル状に並べる。
# 例)横24枚・縦1列に並べる
tile=24x1
# 例)横8枚・縦3列に並べる
tile=8x3
-qscale
-qmin
-qmax
オプション
エンコードの品質を設定する。
数値が小さい方が高品質。
-qscale 2
で80%ぐらい?
最大値は 31
2
〜 5
ぐらいがちょうどよさげ。
# 平均品質を `2` として 最小を `1` 最大を `5` とする
-qscale 2 -qmin 1 -qmax 5
その他のオプション
-
an
オプション: 音声を取り除く -
vsync
オプション: おまじない