这些命令的基本思想是创建一个比较,(一个比较从过去定义了一个jpeg,从现在定义了一个jpeg,结合起来,例如它们将彼此滑动并在图像之后显示)。
例如https://media.evercam.io/v1/cameras/1lowe-scnoe/compares/lower-jreyh.gif
所有命令都写在下面,进行这些操作
徽标为:
我们正在使用FFmpeg和ImageMagick命令(例如
)制作动画和mp4文件ffmpeg -i before_image.jpg -s 1280x720 before_image_resize.jpg
ffmpeg -i after_image.jpg -s 1280x720 after_image_resize.jpg
以上命令首先要调整将在动画中使用的两个图像的大小。
此命令用于创建gif。
convert after_image_resize.jpg before_image_resize.jpg -write mpr:stack -delete 0--1 mpr:stack'[1]' \\( mpr:stack'[0]' -set delay 25 -crop 15x0 -reverse \\) mpr:stack'[0]' \\( mpr:stack'[1]' -set delay 27 -crop 15x0 \\) -set delay 2 -loop 0 temp.gif
此命令可将徽标添加到动画中。
convert temp.gif -gravity SouthEast -geometry +15+15 null: evercam-logo.png -layers Composite compa-efxfphu.gif
然后将mp4文件创建为
ffmpeg -f gif -i compa-efxfphu.gif -pix_fmt yuv420p -c:v h264_nvenc -movflags +faststart -filter:v crop='floor(in_w/2)*2:floor(in_h/2)*2' compa-efxfphu.mp4
然后从此mp4创建缩略图。
ffmpeg -i compa-efxfphu.mp4 -vframes 1 -vf scale=640:-1 -y thumb-compa-efxfphu.jpg
是否有可能减少这些步骤?这一切都花费很多时间,我只对两个convert
命令感兴趣,我们可以将它们合并为一个命令吗?
或者您是否有机会将所有这4个减少到一个?任何输入都会非常感激。
答案 0 :(得分:1)
更新后的答案
这是我最好的镜头,它的运行时间约为原始答案的50%...
convert -depth 8 -gravity southeast -define jpeg:size=1280x720 \
logo.png -write MPR:logo +delete \
\( before.jpg -resize '1280x720!' MPR:logo -geometry +15+15 -composite -write MPR:before \) \
\( after.jpg -resize '1280x720!' MPR:logo -geometry +15+15 -composite -write MPR:after \) \
+append -quantize transparent -colors 250 -unique-colors +repage -write MPR:commonmap +delete \
MPR:after -map MPR:commonmap +repage -write MPR:after +delete \
MPR:before -map MPR:commonmap +repage -write MPR:before \
\( MPR:after -set delay 25 -crop 15x0 -reverse \) \
MPR:after \( MPR:before -set delay 27 -crop 15x0 \) \
-set delay 2 -loop 0 -write anim.gif \
-delete 1--1 -resize 640x thumb.jpg
这是我的想法...
gravity
并初始化libjpeg
的“加载收缩” 功能(...)
内开始一些“旁处理” ,以加载before
图片,调整其大小,粘贴到徽标上,然后保存到MPR以供以后使用,after
图片重复上一步,原始答案
仍在进行中,但是您可以避免调用ffmpeg
的前两次,并在 ImageMagick 中进行大小调整,还可以将徽标一次粘贴到顶部:
convert -gravity southeast logo.png -write MPR:logo \
\( before.jpg -resize '1280x720!' MPR:logo -geometry +15+15 -composite -write MPR:before \) \
\( after.jpg -resize '1280x720!' MPR:logo -geometry +15+15 -composite -write MPR:after \) \
-delete 0--1 \
MPR:before \( MPR:after -set delay 25 -crop 15x0 -reverse \) \
MPR:after \( MPR:before -set delay 27 -crop 15x0 \) \
-set delay 2 -loop 0 temp.gif
如果您将以下行的最后一行更改为:
,您可能还可以使用该命令来创建缩略图。-set delay 2 -loop 0 temp.gif
到
-set delay 2 -loop 0 -write temp.gif \
-delete 1--1 -resize 640x thumbnail.jpg
您还可以使用libjpeg的“加载时收缩” 功能来加快速度并减少内存使用。基本上,您在读取磁盘之前告诉它所需的文件大小,并且它仅读取文件的一个子集,从而减少了I / O时间和内存压力:
convert -gravity southeast logo.png -write MPR:logo \
\( -define jpeg:size=1280x720 before.jpg -resize ... \
\( -define jpeg:size=1280x720 after.jpg -resize ...
这可以将我的机器上的时间减少25%到30%。
这是我的想法...
gravity
,因为它是一项设置,并保持设置直到更改,(...)
内开始一些“旁处理” ,以加载before
图片,调整其大小,粘贴到徽标上,然后保存到MPR以供以后使用,after
图片重复上一步,关键字:动画,雨刮器效果,GIF动画