web-dev-qa-db-ja.com

PHPで画像からビデオを作成する方法は?

10枚の画像があり、それらの画像をスライドショーのようなビデオに結合したいとします。

たとえば、各画像を5秒間表示してから、次の画像をさらに5秒間続行します。

可能であれば、音楽と説明文も含めるのが最適です。

このためのサンプルコードはffmpegライブラリにありますか?

14
mirza

私の最初の考えは、このようなもので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にリダイレクトできます。

11
Timeout

私が最初に頭に浮かんだのは imagemagick でした。私はそれをPHPで多くの画像操作に使用しました、そしてそれがまともな量のビデオフォーマットの読み取りをサポートし、そのリンクによるとそれはいくつかへの書き込みもサポートすることを知っています。

5
M. Laing

はい、ffmpegはあなたにとって正しい解決策です。私は最近似たようなものを作りました-アニメーションのサムネイルを備えたビデオサイト。私はffmpegを使用して、アミノ化されたgifに画像をまとめました。ただし、出力は必要なものにすることができます...残念ながら、このトピックを検索したところ、目的のすべてのポイントを組み合わせるサンプルコードが見つからなかったため、ffmpegを使用して手動で試す必要があると思います。 。私のプロジェクトでは、phpビデオツールキットを使用しました http://sourceforge.net/projects/phpvideotoolkit/ 少し簡単にするために、いくつかの部分で...

4
Michal

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

https://github.com/letungit90/ffmpeg_memo

2
Makio