たくさんの画像を撮り、それらからビデオスライドショーを作りたいと思っています。そのためのアプリがありますよね?うん、かなりの数のようだ。問題は、スライドを音楽に同期させたいことです。これまでに見たすべてのアプリでは、各スライドを1秒の倍数でしか表示できません。 140 bpmに収まるように、1.714285714秒の倍数で表示してほしい。
私が見たツールは一般的に内部にffmpegがあるように見えるので、おそらくこの種のことはスクリプトで実行できます。しかし、ffmpegには非常に多くのオプションがあります...誰かが何か近いものを持っていることを願っています。
最大約100枚のスライドがあります。スライドは3.428571428秒間表示する必要があるか、2回だけ表示できると思います。
ビデオから画像を抽出することも、多くの画像からビデオを作成することもできます。
ビデオから画像を抽出する場合:
ffmpeg -i foo.avi -r 1 -s WxH -f image2 foo-%03d.jpeg
これにより、ビデオから1秒あたり1つのビデオフレームが抽出され、「
foo-001.jpeg
」、「foo-002.jpeg
」などの名前のファイルに出力されます。画像は、新しいWxH値に合うように再スケーリングされます。限られた数のフレームのみを抽出する場合は、上記のコマンドを-vframesまたは-tオプションと組み合わせて、または-ssと組み合わせて使用して、特定の時点から抽出を開始できます。多くの画像からビデオを作成する場合:ffmpeg -f image2 -i foo-%03d.jpeg -r 12 -s WxH foo.avi
構文
foo-%03d.jpeg
は、シーケンス番号を表すためにゼロが埋め込まれた3桁で構成される10進数を使用することを指定します。これは、C printf関数でサポートされている構文と同じですが、通常の整数を受け入れる形式のみが適しています。
これはドキュメントからの抜粋です。詳細については、ffmpegの ドキュメント ページを確認してください。
以下は、現在のディレクトリ内のすべてのpng画像からビデオスライドショーを作成します(ビデオコーデックlibx264またはwebmを使用)。このコマンドは、連続した番号と順序の画像名を受け入れます(_img001.jpg
_、_img002.jpg
_、_img003.jpg
_)およびランダムな画像の束。
(各画像の長さは5秒)
_ffmpeg -r 1/5 -pattern_type glob -i '*.png' -c:v libx264 out.mp4 # x264 video
ffmpeg -r 1/5 -pattern_type glob -i '*.png' out.webm # WebM video
_
これにより、_img001.png
_という名前の一連のpng画像からビデオスライドショーが作成されます(ビデオコーデックlibx264またはwebmを使用) 、_img002.png
_、_img003.png
_、…
(各画像の長さは5秒)
_ffmpeg -f image2 -r 1/5 -i img%03d.png -vcodec libx264 out.mp4 # x264 video
ffmpeg -f image2 -r 1/5 -i img%03d.png out.webm # WebM video
_
これにより、各画像の長さが15秒のスライドショーが作成されます。
_ffmpeg -f image2 -r 1/15 -i img%03d.png out.webm
_
1つの画像からビデオを作成する場合は、これで十分です(出力ビデオの長さは30秒に設定されます) :
_ffmpeg -loop 1 -f image2 -i img.png -t 30 out.webm
_
番号が付けられて順番に並べられた画像(_img001.jpg
_、_img002.jpg
_、_img003.jpg
_)がなく、ランダムな画像の束がある場合は、次の方法を試してください。
_cat *.jpg | ffmpeg -f image2pipe -r 1 -vcodec mjpeg -i - out.webm
_
またはpng画像の場合:
_cat *.png | ffmpeg -f image2pipe -r 1 -vcodec png -i - out.webm
_
これにより、現在のディレクトリにあるすべてのjpg/png画像が読み取られ、パイプを使用して1つずつffmpegの入力に書き込まれ、そこからビデオが生成されます。
重要:一連のすべての画像は、同じサイズ(xおよびyの寸法)および形式である必要があります。
説明:FFmpegに入力ファイルのFPSオプション(フレーム/秒)を非常に低い値に設定するように指示することで、出力でFFmpegの重複フレームを作成しました。このようにして、各画像をしばらくの間画面に表示することができました。これまで、任意の分数をフレームレートとして設定できることを確認しました。 1分あたり140ビートは-r 140/60になります。
出典: FFmpeg wiki
ビデオから画像を作成する場合
_ffmpeg -i video.mp4 img%03d.png
_
これにより、_img001.png
_、_img002.png
_、_img003.png
_、…という名前の画像が作成されます。
私はこれを使って終わりました:
mencoder "mf://html/*.png" -ovc x264 -mf fps=1.16666667 -o output.avi
その後、LiVES
でサンプルレートを変更します。
詳細(および最終結果のビデオ)を次の場所にロードします: http://hyperdata.org/hackit/ ( mirror )