我试图从多张图片中创建一个单一的视频幻灯片,使用xfade过滤器做过渡效果,并在每张幻灯片上使用zoompan过滤器做放大/缩小效果。
图片可以有不同的分辨率/宽高比/方向性
在大多数情况下,我都能成功,将此分成2个步骤。
然而,在有些情况下,OOM会杀死这些进程,还有一些情况下它只是超时了。
我使用了以下命令(有些参数是由PHP-FFMpeg包添加的)。
图片转视频
/usr/local/bin/ffmpeg -y -r 1 -loop 1 -i 'image1.jpg' -ss 0 '-t' '3' -filter_complex 'scale=trunc(1200/2)*2:trunc(801/2)*2:force_original_aspect_ratio=1,pad=trunc(1200/2)*2:trunc(801/2)*2:(ow-iw)/2:(oh-ih)/2,fps=25,crop=w=trunc(1200/2)*2:h=trunc(801/2)*2,scale=4000:2000,zoompan=z='\''min(max(zoom, pzoom)+0.002667,1.200000)'\'':d=1:x='\''iw/2-(iw/zoom/2)'\'':y='\''ih/2-(ih/zoom/2)'\'',setsar=1,scale=trunc(1200/2)*2:trunc(801/2)*2:force_original_aspect_ratio=1,pad=trunc(1200/2)*2:trunc(801/2)*2:(ow-iw)/2:(oh-ih)/2[video]' -map '[video]' -crf 17 -preset fast -threads 8 -vcodec 'libx264' -acodec 'aac' -b:v '1000k' -refs '6' -coder 1 -sc_threshold '40' -flags '+loop' -me_range '16' -subq '7' -i_qfactor '0.71' -qcomp '0.6' -qdiff '4' -trellis '1' -b:a '128k' /output.mp4
将多个视频合并为一个视频(幻灯片)。