FFMPEG: créez mp4 à partir d'images et appliquez le filigrane et le filtre à zoom

J'ai une commande qui prend des images et crée une vidéo mp4 avec le filtre de zoom sur chaque image, applique un filigrane sur la vidéo et fusionne entre les images:

ffmpeg -y -i img-1.jpg -i img-2.jpg -i img-3.jpg -f lavfi -i color=black:r=25:s=1280x720:d=15 -loop 1 -i watermark.png -filter_complex [0:v]setsar=1,setdar=16/9,scale=5120:2880,zoompan=z='min(zoom+0.0005,1.1)':x='0':y='0':d=125,format=yuv420p,setpts=PTS-STARTPTS[va0];[1:v]setsar=1,setdar=16/9,scale=7680:4320,zoompan=z='if(lte(zoom,1.0),1.1,max(1.001,zoom-0.0005))':x='0':y='ih/2-(ih/zoom/2)':d=125,format=yuv420p,format=yuva420p,fade=t=in:st=0:d=0.5:alpha=1,setpts=PTS-STARTPTS+5/TB[va1];[2:v]setsar=1,setdar=16/9,scale=5120:2880,zoompan=z='min(zoom+0.0005,1.1)':x='5120':y='2880':d=125,format=yuv420p,format=yuva420p,fade=t=in:st=0:d=0.5:alpha=1,setpts=PTS-STARTPTS+10/TB[va2];[3:v][va0]overlay[over1];[over1][va1]overlay[over2];[over2][va2]overlay[over3];[over3][4:v]overlay=Ww:Hh:shortest=1,fade=t=in:st=0:d=0.5,fade=t=out:st=14.5:d=0.5,format=yuv420p[outv] -c:v libx264 -map [outv] -s 1280x720 -aspect 16:9 -r 25 -crf 18 -preset ultrafast output.mp4 

Sortie:

 ffmpeg version 2.6.8 Copyright (c) 2000-2016 the FFmpeg developers built with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-16) 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 --param=ssp-buffer-size=4 -m64 -mtune=generic' --enable-bzlib --disable-crystalhd --enable-gnutls --enable-ladspa --enable-libass --enable-libdc1394 --enable-libfaac --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. 20.100 / 54. 20.100 libavcodec 56. 26.100 / 56. 26.100 libavformat 56. 25.101 / 56. 25.101 libavdevice 56. 4.100 / 56. 4.100 libavfilter 5. 11.102 / 5. 11.102 libavresample 2. 1. 0 / 2. 1. 0 libswscale 3. 1.101 / 3. 1.101 libswresample 1. 1.100 / 1. 1.100 libpostproc 53. 3.100 / 53. 3.100 [mjpeg @ 0x1d78dc0] Changeing bps to 8 Input #0, image2, from 'img-1.jpg': Duration: 00:00:00.04, start: 0.000000, bitrate: 25016 kb/s Stream #0:0: Video: mjpeg, yuvj420p(pc, bt470bg/unknown/unknown), 940x749 [SAR 1:1 DAR 940:749], 25 tbr, 25 tbn, 25 tbc [mjpeg @ 0x1d7b660] Changeing bps to 8 Input #1, image2, from 'img-2.jpg': Duration: 00:00:00.04, start: 0.000000, bitrate: 35632 kb/s Stream #1:0: Video: mjpeg, yuvj420p(pc, bt470bg/unknown/unknown), 962x642 [SAR 150:150 DAR 481:321], 25 tbr, 25 tbn, 25 tbc [mjpeg @ 0x1d7c540] Changeing bps to 8 Input #2, image2, from 'img-3.jpg': Duration: 00:00:00.04, start: 0.000000, bitrate: 20180 kb/s Stream #2:0: Video: mjpeg, yuvj444p(pc, bt470bg/unknown/unknown), 750x500 [SAR 100:100 DAR 3:2], 25 tbr, 25 tbn, 25 tbc Input #3, lavfi, from 'color=black:r=25:s=1280x720:d=15': Duration: N/A, start: 0.000000, bitrate: N/A Stream #3:0: Video: rawvideo (I420 / 0x30323449), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 25 tbr, 25 tbn, 25 tbc Input #4, png_pipe, from 'watermark.png': Duration: N/A, bitrate: N/A Stream #4:0: Video: png, rgba, 1280x720 [SAR 2835:2835 DAR 16:9], 25 fps, 25 tbr, 25 tbn, 25 tbc [swscaler @ 0x1d27220] deprecated pixel format used, make sure you did set range correctly [swscaler @ 0x247af80] deprecated pixel format used, make sure you did set range correctly [swscaler @ 0x250e260] deprecated pixel format used, make sure you did set range correctly [libx264 @ 0x24576e0] using SAR=1/1 [libx264 @ 0x24576e0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX [libx264 @ 0x24576e0] profile Constrained Baseline, level 3.1 [libx264 @ 0x24576e0] 264 - core 142 r2438 af8e768 - H.264/MPEG-4 AVC codec - Copyleft 2003-2014 - http://www.videolan.org/x264.html - options: cabac=0 ref=1 deblock=0:0:0 analyse=0:0 me=dia subme=0 psy=1 psy_rd=1.00:0.00 mixed_ref=0 me_range=16 chroma_me=1 trellis=0 8x8dct=0 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=0 threads=12 lookahead_threads=2 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=0 weightp=0 keyint=250 keyint_min=25 scenecut=0 intra_refresh=0 rc=crf mbtree=0 crf=18.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=0 Output #0, mp4, to 'output.mp4': Metadata: encoder : Lavf56.25.101 Stream #0:0: Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], q=-1--1, 25 fps, 12800 tbn, 25 tbc (default) Metadata: encoder : Lavc56.26.100 libx264 Stream mapping: Stream #0:0 (mjpeg) -> setsar Stream #1:0 (mjpeg) -> setsar Stream #2:0 (mjpeg) -> setsar Stream #3:0 (rawvideo) -> overlay:main Stream #4:0 (png) -> overlay:overlay format -> Stream #0:0 (libx264) Press [q] to stop, [?] for help [Parsed_overlay_22 @ 0x24544e0] [framesync @ 0x24553e8] Buffer queue overflow, dropping. Last message repeated 58 times [Parsed_overlay_23 @ 0x1fac660] [framesync @ 0x24559e8] Buffer queue overflow, dropping. Last message repeated 59 times [swscaler @ 0x6962820] Warning: data is not aligned! This can lead to a speedloss [Parsed_overlay_24 @ 0x1faedc0] [framesync @ 0x2456008] Buffer queue overflow, dropping. Last message repeated 59 times frame= 375 fps= 24 q=-1.0 Lsize= 15650kB time=00:00:15.00 bitrate=8547.0kbits/s video:15648kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.015783% [libx264 @ 0x24576e0] frame I:2 Avg QP:10.50 size:196471 [libx264 @ 0x24576e0] frame P:373 Avg QP:13.66 size: 41902 [libx264 @ 0x24576e0] mb I I16..4: 100.0% 0.0% 0.0% [libx264 @ 0x24576e0] mb P I16..4: 7.9% 0.0% 0.0% P16..4: 53.6% 0.0% 0.0% 0.0% 0.0% skip:38.5% [libx264 @ 0x24576e0] coded y,uvDC,uvAC intra: 74.5% 63.6% 36.4% inter: 37.1% 23.4% 8.1% [libx264 @ 0x24576e0] i16 v,h,dc,p: 39% 44% 11% 7% [libx264 @ 0x24576e0] i8c dc,h,v,p: 29% 37% 27% 6% [libx264 @ 0x24576e0] kb/s:8545.37 

Chaque partie de cette commande fonctionne comme prévu, sauf pour la durée du filtre de zoom. Avec cette vidéo à 25 fps et la durée des filtres de zoom spécifiés sur 125 images, le filtre de zoom doit durer les 5 secondes entières de chaque image. Mais, il ne dure que 2 secondes puis s'arrête. Qu'est-ce que je fais mal ici?

Votre ffmpeg est trop vieux. Les utilisateurs sont invités à utiliser une version de la branche maître git actuelle. Vous pouvez télécharger ou compiler une version récente.