10枚の画像があり、それらの画像をスライドショーのようなビデオに結合したいとします。
たとえば、各画像を5秒間表示してから、次の画像をさらに5秒間続行します。
可能であれば、音楽と説明文も含めるのが最適です。
このためのサンプルコードはffmpegライブラリにありますか?
私の最初の考えは、このようなものでffmpegコマンドにシェルアウトすることでした。
画像からビデオを作成する
ffmpegを使用して、複数の画像を1つのビデオにつなぎ合わせることができます。多くのオプションがありますが、開始するには次の例で十分です。 Xが数値であるXXXXX.morph.jpgのファイル名を持つすべての画像を取得し、「output.mp4」というビデオを作成します。 qscaleオプションは画質を指定し(1が最高、32が最低)、「-r」オプションを使用して1秒あたりのフレーム数を指定します。
ffmpeg -r 25 -qscale 2 -i%05d.morph.jpg output.mp4
(この宣伝文句が取られたウェブサイトはなくなりました。リンクは削除されました。)
ここで、25は1秒あたり25枚の画像を意味します。これをわずかな(1秒)遅延の場合は1に設定するか、小数を使用することができます。IE:2秒の遅延の場合は0.5です。
次に、ビデオストリームとオーディオストリームを次のようなものと組み合わせることができます。
ffmpeg -i video.mp4 -i audio.mp3 -c:v copy -c:a aac -b:a 128k final.mp4
もちろん、適切なコーデックを選択してください。 mp4が必要な場合は、ビデオにはlibx264を使用し、オーディオにはaac(ffmpegに組み込まれ、「実験的」ではなくなった)を使用します。
このような方法を使用することを選択した場合、ffmpegの出力は、デフォルトで、読み込もうとしたときにstderrに送られることを覚えておいてください。必要に応じて、stdoutにリダイレクトできます。
私が最初に頭に浮かんだのは imagemagick でした。私はそれをPHPで多くの画像操作に使用しました、そしてそれがまともな量のビデオフォーマットの読み取りをサポートし、そのリンクによるとそれはいくつかへの書き込みもサポートすることを知っています。
はい、ffmpegはあなたにとって正しい解決策です。私は最近似たようなものを作りました-アニメーションのサムネイルを備えたビデオサイト。私はffmpegを使用して、アミノ化されたgifに画像をまとめました。ただし、出力は必要なものにすることができます...残念ながら、このトピックを検索したところ、目的のすべてのポイントを組み合わせるサンプルコードが見つからなかったため、ffmpegを使用して手動で試す必要があると思います。 。私のプロジェクトでは、phpビデオツールキットを使用しました http://sourceforge.net/projects/phpvideotoolkit/ 少し簡単にするために、いくつかの部分で...
Ffmpegでブレンド効果を使用できます:
ffmpeg -framerate 20 \
-loop 1 -t 0.5 -i 1.jpg \
-loop 1 -t 0.5 -i 2.jpg \
-loop 1 -t 0.5 -i 3.jpg \
-loop 1 -t 0.5 -i 4.jpg \
-c:v libx264 \
-filter_complex " \
[1:v][0:v]blend=all_expr='A*(if(gte(T,0.5),1,T/0.5))+B*(1-(if(gte(T,0.5),1,T/0.5)))'[b1v]; \
[2:v][1:v]blend=all_expr='A*(if(gte(T,0.5),1,T/0.5))+B*(1-(if(gte(T,0.5),1,T/0.5)))'[b2v]; \
[3:v][2:v]blend=all_expr='A*(if(gte(T,0.5),1,T/0.5))+B*(1-(if(gte(T,0.5),1,T/0.5)))'[b3v]; \
[0:v][b1v][1:v][b2v][2:v][b3v][3:v]concat=n=7:v=1:a=0,format=yuv420p[v]" -map "[v]" out.mp4
Ffmpegの効果については、以下のリンクを確認してください:D