So the end goal is to have a php script that, given a list of images, will automatically create a slideshow video with transitions and text overlays and maybe an audio track as well.

I'm competent in coding PHP but not experienced in command line stuff.

We have a dedicated server and I got hosting company to install ffmpeg for me.

So I thought I'd start simple and slowly build up to ultimate goal. But I'm really struggling. I've spent a couple of days trying all sorts of things with very little success.

I found this post with some excellent examples <https://superuser.com/questions/833232/create-video-with-5-images-with-fadein-out-effect-in-ffmpeg> but I can't get any of them to work. Which makes me think that I'm doing something fundamentally wrong.

So this does work for me - I get a nice little 30 sec video slideshow of 6 images displaying for 5 secs each:

```
$ffmpeg="/usr/bin/ffmpeg";
exec($ffmpeg.' -f concat -safe 0 -i input.txt -c:v libx264 -r 30 -pix_fmt yuv420p -y out.mp4 2>&1', $output);
var_dump($output);

```

and this is input.txt

```
file /home/webvivre/public_html/videos/test/i1.jpg
duration 5
file /home/webvivre/public_html/videos/test/i2.jpg
duration 5
file /home/webvivre/public_html/videos/test/i3.jpg
duration 5
file /home/webvivre/public_html/videos/test/i4.jpg
duration 5
file /home/webvivre/public_html/videos/test/i5.jpg
duration 5
file /home/webvivre/public_html/videos/test/i6.jpg
duration 5

```

But this (basically taken from example in link above - have only changed image names and ffmpeg location) doesn't work for me:

```
$code="/usr/bin/ffmpeg -y -loop 1 -i i1.jpg -loop 1 -i i2.jpg -loop 1 -i i3.jpg -filter_complex \" [0:v]zoompan=z='min(zoom+0.0015,1.5)':d=125,trim=duration=5,blend=all_expr='A*(if(gte(T,0.5),1,T/0.5))+B*(1-(if(gte(T,0.5),1,T/0.5)))',setpts=PTS-STARTPTS[v0]; [1:v]zoompan=z='min(zoom+0.0015,1.5)':d=125,trim=duration=5,blend=all_expr='A*(if(gte(T,0.5),1,T/0.5))+B*(1-(if(gte(T,0.5),1,T/0.5)))',setpts=PTS-STARTPTS[v1]; [2:v]zoompan=z='min(zoom+0.0015,1.5)':d=125,trim=duration=5,blend=all_expr='A*(if(gte(T,0.5),1,T/0.5))+B*(1-(if(gte(T,0.5),1,T/0.5)))',setpts=PTS-STARTPTS[v2]; [v0][v1][v2] concat=n=3:v=1:a=0, format=yuv420p[v]\" -map '[v]' -c:v libx264 -pix_fmt yuvj420p -q:v 1 out.mp4 2>&1";
exec($code,$output);
var_dump($output);

```

This is the output:

```
array(25) { [0]=> string(67) "ffmpeg version 2.8.15 Copyright (c) 2000-2018 the FFmpeg developers" [1]=> string(56) " built with gcc 4.8.5 (GCC) 20150623 (Red Hat 4.8.5-36)" [2]=> string(1147) " configuration: --prefix=/usr --bindir=/usr/bin --datadir=/usr/share/ffmpeg --incdir=/usr/include/ffmpeg --libdir=/usr/lib64 --mandir=/usr/share/man --arch=x86_64 --optflags='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic' --extra-ldflags='-Wl,-z,relro ' --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libvo-amrwbenc --enable-version3 --enable-bzlib --disable-crystalhd --enable-gnutls --enable-ladspa --enable-libass --enable-libcdio --enable-libdc1394 --enable-libfdk-aac --enable-nonfree --disable-indev=jack --enable-libfreetype --enable-libgsm --enable-libmp3lame --enable-openal --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libvorbis --enable-libv4l2 --enable-libx264 --enable-libx265 --enable-libxvid --enable-x11grab --enable-avfilter --enable-avresample --enable-postproc --enable-pthreads --disable-static --enable-shared --enable-gpl --disable-debug --disable-stripping --shlibdir=/usr/lib64 --enable-runtime-cpudetect" [3]=> string(40) " libavutil 54. 31.100 / 54. 31.100" [4]=> string(40) " libavcodec 56. 60.100 / 56. 60.100" [5]=> string(40) " libavformat 56. 40.101 / 56. 40.101" [6]=> string(40) " libavdevice 56. 4.100 / 56. 4.100" [7]=> string(40) " libavfilter 5. 40.101 / 5. 40.101" [8]=> string(40) " libavresample 2. 1. 0 / 2. 1. 0" [9]=> string(40) " libswscale 3. 1.101 / 3. 1.101" [10]=> string(40) " libswresample 1. 2.101 / 1. 2.101" [11]=> string(40) " libpostproc 53. 3.100 / 53. 3.100" [12]=> string(38) "[mjpeg @ 0x183c720] Changeing bps to 8" [13]=> string(32) "Input #0, image2, from 'i1.jpg':" [14]=> string(61) " Duration: 00:00:00.04, start: 0.000000, bitrate: 33777 kb/s" [15]=> string(128) " Stream #0:0: Video: mjpeg, yuvj420p(pc, bt470bg/unknown/unknown), 1000x750 [SAR 1:1 DAR 4:3], 25 fps, 25 tbr, 25 tbn, 25 tbc" [16]=> string(38) "[mjpeg @ 0x18427c0] Changeing bps to 8" [17]=> string(32) "Input #1, image2, from 'i2.jpg':" [18]=> string(61) " Duration: 00:00:00.04, start: 0.000000, bitrate: 41896 kb/s" [19]=> string(132) " Stream #1:0: Video: mjpeg, yuvj444p(pc, bt470bg/unknown/unknown), 1000x750 [SAR 300:300 DAR 4:3], 25 fps, 25 tbr, 25 tbn, 25 tbc" [20]=> string(38) "[mjpeg @ 0x1849fa0] Changeing bps to 8" [21]=> string(32) "Input #2, image2, from 'i3.jpg':" [22]=> string(61) " Duration: 00:00:00.04, start: 0.000000, bitrate: 34776 kb/s" [23]=> string(132) " Stream #2:0: Video: mjpeg, yuvj444p(pc, bt470bg/unknown/unknown), 1000x750 [SAR 300:300 DAR 4:3], 25 fps, 25 tbr, 25 tbn, 25 tbc" [24]=> string(81) "Cannot find a matching stream for unlabeled input pad 1 on filter Parsed_blend_10" }

```

And for reference, this is info provided to me by hosting company after installing ffmpeg for me:

```
svr01~ # ffmpeg
ffmpeg version 2.8.15 Copyright (c) 2000-2018 the FFmpeg developers
  built with gcc 4.8.5 (GCC) 20150623 (Red Hat 4.8.5-36)
  configuration: --prefix=/usr --bindir=/usr/bin --datadir=/usr/share/ffmpeg --incdir=/usr/include/ffmpeg --libdir=/usr/lib64 --mandir=/usr/share/man --arch=x86_64 --optflags='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic' --extra-ldflags='-Wl,-z,relro ' --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libvo-amrwbenc --enable-version3 --enable-bzlib --disable-crystalhd --enable-gnutls --enable-ladspa --enable-libass --enable-libcdio --enable-libdc1394 --enable-libfdk-aac --enable-nonfree --disable-indev=jack --enable-libfreetype --enable-libgsm --enable-libmp3lame --enable-openal --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libvorbis --enable-libv4l2 --enable-libx264 --enable-libx265 --enable-libxvid --enable-x11grab --enable-avfilter --enable-avresample --enable-postproc --enable-pthreads --disable-static --enable-shared --enable-gpl --disable-debug --disable-stripping --shlibdir=/usr/lib64 --enable-runtime-cpudetect
  libavutil      54. 31.100 / 54. 31.100
  libavcodec     56. 60.100 / 56. 60.100
  libavformat    56. 40.101 / 56. 40.101
  libavdevice    56.  4.100 / 56.  4.100
  libavfilter     5. 40.101 /  5. 40.101
  libavresample   2.  1.  0 /  2.  1.  0
  libswscale      3.  1.101 /  3.  1.101
  libswresample   1.  2.101 /  1.  2.101
  libpostproc    53.  3.100 / 53.  3.100
Hyper fast Audio and Video encoder

```

If someone could just shove me in the right direction to get the above working I'd be very grateful. I just know it's going to end up being something really simple.