如何在PHP中从图片创建动态视频/幻灯片

如何在PHP中从图片创建动态视频/幻灯片,php,xml-swf-charts,Php,Xml Swf Charts,我有一个动态存档(ftp空间中的一个文件夹),其中有从网络摄像头加载的图像。现在我想创建一个简单的幻灯片或视频与这些图像,每次用户想看它。 没有任何过渡选项或其他…我需要从相机拍摄的图像建立一个siple timelapse 我只是尝试了一下,它工作得很好(我可以用php为swf脚本构建一个动态xml配置文件),但我不能将时间转换设置为少于1秒…而且不是免费的 有简单的解决办法吗?(如果更好,也可以使用javascript…) 塔克斯 PHP仅仅是一种字符串操作语言 无法在PHP中创建幻灯片。这

我有一个动态存档(ftp空间中的一个文件夹),其中有从网络摄像头加载的图像。现在我想创建一个简单的幻灯片或视频与这些图像,每次用户想看它。 没有任何过渡选项或其他…我需要从相机拍摄的图像建立一个siple timelapse

我只是尝试了一下,它工作得很好(我可以用php为swf脚本构建一个动态xml配置文件),但我不能将时间转换设置为少于1秒…而且不是免费的

有简单的解决办法吗?(如果更好,也可以使用javascript…)
塔克斯

PHP仅仅是一种字符串操作语言


无法在PHP中创建幻灯片。这是服务器端语言。

我认为您可以创建GIF序列,如下所示:


这是我找到的最好的方法:简单快捷

<HTML>
<HEAD>
<TITLE>Video</TITLE>
</HEAD>
<BODY  BGCOLOR="#000000">
<img name="foto">
<SCRIPT LANGUAGE="JavaScript">
var Pic = new Array();

Pic[0] = '/images/image1.jpg'
Pic[1] = '/images/image2.jpg'
Pic[2] = '/images/image3.jpg'
//this part in real code is replaced with a PHP script that print image location dinamically

var t;
var j = 0;
var p = Pic.length;
var preLoad = new Array();
for (i = 0; i < p; i++) {
preLoad[i] = new Image();
preLoad[i].src = Pic[i];
}
//all images are loaded on client
index = 0;
function update(){
if (preLoad[index]!= null){
document.images['foto'].src = preLoad[index].src;
index++;
setTimeout(update, 1000);
}

}
update();

</script>

</BODY>
</HTML>

视频

如果您希望最终结果是一个视频文件,您可以做一些类似于我在将一系列谷歌街景全景图转换为视频文件时所做的事情

这一切都是在服务器上使用PHP和ffmpeg完成的。下面是一些从源代码中删减的示例代码

ffmpeg命令:

$makeMovieFfmpeg = "ffmpeg -r 4 -f image2 -i dir/%d.jpg -s 800x600 -r 15 -s 800x600 -b 1500kbs myvideo.avi 2>&1";
说明:

-r 4 //input framerate of 4fps
-f image2 //invoke the image2 file demuxer since we're working with a series of images
-i //location of image files with applied pattern where %d represents numeric sequence
-s //input image size
-r //output framerate of 15fps
-s //output video size
-b //set the bitrate
2>&1 //redirects stderr to stdout in order to make output available to PHP
执行命令:

print_r (exec($makeMovieFfmpeg,$ret,$err));

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
它将创建具有混合效果的幻灯片


你可以在下面的备忘录中查看其他效果

请写下合理的标题/标签。尝试搜索术语“jpeg-to-mpeg转换器”,然后在术语后面附加“PHP”。下面的链接中会显示一些具有效果的幻灯片