gif
文件中创建一个png
动画?我尝试了ImageMagick套件中的
convert
命令,但这并不总是成功。另外,我对此有几个问题:我无法知道进度如何。
无论我尝试什么,
-delay
标志都不会改变框架gif动画的速率。convert
根据文件名的字母顺序确定帧顺序。这意味着name500.png
将被放置在name50.png
之后,而不是name450.png
之后。我可以通过添加0来解决此问题,但这很烦人。#1 楼
较新版本的ffmpeg没有-sameq(请参见常见问题解答),但具有GIF支持。
ffmpeg -i %03d.png output.gif
其中%03d是3位数字的帧ID。
您还可以尝试使用
ffmpeg
从一系列图像中创建电影,然后将电影转换为GIF动画(再次使用ffmpeg
)。# cf. http://pages.uoregon.edu/noeckel/MakeMovie.html
# first convert an image sequence to a movie
ffmpeg -sameq -i %03d.jpg output.mp4
# ... and then convert the movie to a GIF animation
ffmpeg -i output.mp4 -pix_fmt rgb24 -s qcif -loop_output 0 output.gif
评论
该指令已过期。
–本·阿弗莱克
14年7月16日在19:03
sameq选项不再可用。此外,对我来说,这将覆盖原始图像文件,并且不会产生有效的电影文件。
–罗德岛
2014年11月8日在18:57
将-sameq代码保留在那里有什么意义?您为什么还要临时使用有损视频格式(output.mp4)?如果是这样,为什么将“相同质量”作为输入,而不是很高的比特率?由此产生的假象只会使GIF编码器变得更糟。如果确实需要将视频用作临时视频,则可以使用无损的视频,例如huffyuv。或没有转码的MJPEG,只需将输入的jpeg重新混合为MJPEG。 (-codec:视频副本)。
– Peter Cordes
16 Dec 7'在15:25
-loop_output参数不存在。
– herrbischoff
20年7月3日在8:55
#2 楼
convert
是一种方便的命令行工具。cd
到包含png文件的文件夹并运行以下命令:convert -delay 10 -loop 0 *.png animation.gif
来源:http: //ubuntuforums.org/showthread.php?t=1132058
评论
问题提到了转换以及使用它的一些问题。您的答案没有解决任何一个。
–垫子
2011年11月6日,0:36
从ImageMagick版本6.8.7-4 2013-11-02 Q16开始,这对我有用。
–鲁迪·马特拉(Rudy Matela)
13年11月6日在17:11
这可以工作,但是10表示10 * 10ms,因此非常快。延迟100为1秒。
–Anne van Rossum
2015年9月27日在8:01
如果使用透明PNG,请使用-dispose previous或-dispose 2选项
–HảiPhong
16年8月31日在1:00
给我自己说明:大括号扩展有助于将图像列表指定为参数,例如pic_ {0..20..2} .png扩展到pic_0.png,pic_2.png一直扩展到pic_20.png
–杨艺博
17年9月6日在2:51
#3 楼
convert
的--delay
选项仅适用于命令行中的下一个图像。因此,convert -delay 10 *
只会将第一帧的延迟设置为0.1秒。需要重复此选项:convert $(for a in *; do printf -- "-delay 10 %s " $a; done; ) result.gif
对于您的排序需求,convert不对框架进行排序,而外壳globe
*
则对。如果您知道帧的编号是从0到700,则您可以自己计算数字:convert $(for ((a=0; a<700; a++)); do printf -- "-delay 10 name%s.png " $a; done;) result.gif
评论
我没有通过convert遇到这种行为,对我来说,convert -delay 1000 -loop 0 * .png animation.gif确实在每个图像之间增加了10s的延迟。
–罗德岛
2014年11月8日18:52
您也可以使用ls命令的版本排序。也就是说:convert -delay 1000 $(ls -v name * png)output.gif
–erik
2015年4月5日20:37
#4 楼
ffmeg重要的GIF选项+测试数据为了补充此答案:
wget -O opengl-rotating-triangle.zip https://github.com/cirosantilli/media/blob/master/opengl-rotating-triangle.zip?raw=true
unzip opengl-rotating-triangle.zip
cd opengl-rotating-triangle
ffmpeg \
-framerate 60 \
-pattern_type glob \
-i 'tmp.*.png' \
-r 15 \
-vf scale=512:-1 \
out.gif \
;
测试数据是生成于:https://stackoverflow.com/questions/3191978/how-to-use-glut-opengl-to-render-to-a-file/14324292#14324292
重要的
ffmpeg
选项我想强调的是:-patter_type glob
:选择图像的便捷方法-framerate 60
和-r 15
:假设输入图像上的帧率为60 FPS(ffmpeg
不能否则会知道,因为图像中没有FPS数据(如视频格式),所以请每4张图像选择一个,从而减小尺寸(4 == 60 / 15
)-vf scale=512:-1
:按比例设置宽度,比例高度,通常是为了减小尺寸并节省空间另请参阅:
来自图像的视频:https://stackoverflow.com/questions/24961127/how-to-create-a-video-from -images-with-ffmpeg / 37478183#37478183
视频中的GIF:https://askubuntu.com/questions/648603/how-to-create-an-animated-gif-from-mp4- v ideo-via-command-line
在Ubuntu 18.10,ffmpeg 4.0.2中进行了测试。
评论
非常感谢,这对我非常有用。
– herrbischoff
20年7月3日在8:54
#5 楼
更新:将
convert
用作png-to-gif,然后将gifsicle用作动画。这不是一个应用程序即可完成所有任务的解决方案,但是可以确定地编写脚本。
/>
GIMP可以创建动画gif并提供对定时/延迟和重复等的控制
评论
我知道gimp,但不知道如何编写脚本。此外,使用gimp制作动画就像用大炮杀死苍蝇一样
– Yotam
2011年11月7日7:58
那是个坏主意;由于每个帧将被单独量化,因此质量将很糟糕。
–Clément
16年7月5日在13:27
#6 楼
ImageMagick可以生成高质量的gif动画。观看此视频-http://www.youtube.com/watch?v=OFusYizJ-bA评论
欢迎使用Unix和Linux!通常,我们希望网站上的答案能够独立存在-链接很棒,但是,如果该链接中断,则答案应该具有足够的信息,仍然会有所帮助。请考虑编辑您的答案以包括更多详细信息。有关更多信息,请参见FAQ。
–slm♦
13年4月18日在20:20
上面的评论真有用。
–卢克
18年7月10日在6:42
转换-delay 200 -loop 0 * .jpg output.gif
–卢克
18年7月10日在6:42
@Luke-在此问题下发布的所有混乱中,您的评论最有用
–cipricus
19-10-26在22:07
评论
[新闻] Ubuntu Stackexchange与Unix Stackexchange之间存在大量重叠。我试图在这里对一些线程进行分类。关于第3项,在对文件进行排序后,您仍然可以使用convert。大概这样的东西可以工作files = $(ls name * png | sort -n -tname -k1);转换$ files animation.gif
对于点1:convert具有-monitor参数,该参数可跟踪进程
@hhc-所有分类只是一个包含5个链接的答案的链接;其中只有一个看起来相关,但这只是上述问题的链接。 -@Luke的评论提供了一种简单的解决方案:convert -delay 200 -loop 0 * .jpg output.gif。