Как создать динамическое видео / слайд-шоу из картинок в PHP - PullRequest
1 голос
/ 25 сентября 2011

У меня есть динамический архив (папка на моем ftp-пространстве), куда загружаются изображения с веб-камеры.Теперь я хочу создать простое слайд-шоу или видео с этими изображениями каждый раз, когда пользователь хочет его посмотреть.Никаких опций перехода или других ... Мне нужно создать интервал времени из изображений, снятых камерой.

Я просто попробовал это http://www.maani.us/xml_slideshow/, он работает нормально (я могу собрать с помощью phpдинамический XML-файл конфигурации для SWF-сценария), но я не могу установить временной переход менее чем за 1 секунду ... и это не бесплатно ...

Любое простое решение?(также javascript, если это лучше ...) Спасибо!

Ответы [ 5 ]

3 голосов
/ 01 июня 2012

Если вы хотите, чтобы конечный результат был видеофайлом, вы можете сделать что-то похожее на то, что я делал, превратив серию панорам Google Streetview в захватывающее замедленное видео .

Все это делается на сервере с использованием 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));
0 голосов
/ 07 сентября 2017

Ffmpeg - ваше лучшее решение.https://www.ffmpeg.org/download.html

Быстрый способ создания слайд-шоу из изображения выполняется под командой

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

. Это создаст слайд-шоу с эффектом наложения.

Вы можете проверить ниже памяткудругой эффект https://github.com/letungit90/ffmpeg_memo

0 голосов
/ 25 сентября 2011

Я думаю, что вы можете создать последовательность GIF, как здесь:

http://www.dreamincode.net/forums/topic/53942-create-gif-images-using-gd/

0 голосов
/ 25 октября 2011

Это лучший способ, который я нашел: простой и быстрый

<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>
0 голосов
/ 25 сентября 2011

PHP - это просто язык для работы со строками

Вы не можете создавать слайд-шоу в PHP.Это язык на стороне сервера.

...