我可以使用 FFmpeg 将一系列图像导出为 gif:
ffmpeg -vsync 2 -safe 0 -f concat -i "file:concat.txt"
-lavfi palettegen=stats_mode=diff[pal],[0:v][pal]paletteuse=new=1:diff_mode=rectangle
-y "Test.gif"
Run Code Online (Sandbox Code Playgroud)
现在,我想知道是否可以以某种方式控制循环设置(永远重复、重复n次等)。
我在 FFmpeg.org 文档中找不到任何“循环”。
我计划从我的 dslr 视频文件创建高质量的动画 gif(v)。
我该怎么做呢?
我正在运行 mac。
我有一个包含大量图像的文件夹,我想从非动画 GIF 中对动画 GIF进行排序,并将动画 GIF 移动到一个新文件夹。尝试使用XnView和XnViewMp for Windows等软件,但他们没有此选项 [ http://newsgroup.xnview.com/viewtopic.php?f=82&t=31485 ]。也试过这个:如何将一个 GIF 文件夹分为动画和静态文件夹,但Image Magic 命令仅适用于一个图像,并且有太多文件无法一一执行。
我想调整一些像素艺术的动画 GIF 图像的大小。
我在 macOS 上并且对命令行很满意。
在 ubunt 上,我可以使用 imagemagick's 将动画 .gif 文件转换为 .webp 格式convert 1.gif 1.webp,但随后动画在目标 .web 中丢失。
我想知道如何在转换格式的同时保留动画?
我有一个有透明部分的 GIF 文件。我想用纯白色(或其他颜色)替换它,这样就没有透明部分。我可以使用 ImaageMagick 在命令行上执行此操作吗?如果图像必须从 .gif 更改为其他格式,我也可以。我试图将其转换为 jpg 并且透明部分是黑色的。有没有办法自定义它?
我在 Ubuntu 9.10 Karmic Koala 上使用 ImageMagick
我需要将网页中的一些 base64 图像保存到硬盘驱动器上的实际 GIF 和 JPEG 文件中。有没有可以帮助我的实用程序?我环顾四周,要么没有看到,要么不知道如何正确使用。
换句话说,我希望将嵌入在此链接中的图像放在页面上:
<img src="data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==" class="info" id="ext-gen1128">
Run Code Online (Sandbox Code Playgroud)
..并将其保存到我的盒子上的文件中。谢谢你的帮助。
关于Gifsicle:
\n\n\n\n\nGifsicle 是一个命令行工具,用于创建、编辑和获取有关 GIF 图像和动画的信息。
\n
它的特点之一是(来自其网站):
\n\n\n\n\n优化您的动画!这仅存储每帧的更改部分,并且可以从根本上缩小您的 GIF。您还可以使用透明度使它们变得更小。Gifsicle\xe2\x80\x99s 优化器非常强大,通常将动画减少到最佳商业优化器的几个字节之内。
\n
我通过右键单击 -“发送到”菜单中的此 .BAT 文件调用Gifsicle :
\n\n@echo off\n\n:compressFile\n"C:\\Programs\\Compression Scripts\\gifsicle\\bin\\gifsicle.exe" --batch -V -O3 %1%\necho.\necho.\nSHIFT\nif exist %1% goto compressFile\nPAUSE \nRun Code Online (Sandbox Code Playgroud)\n\n然而,这个动画 GIF 文件:http://i.minus.com/i7WdodY5Zwot3.gif,当使用上述命令使用 Gifsicle 对其压缩进行优化时,会产生更大的 GIF 文件。Gifsicle 使用生成的较大文件大小的 GIF 文件覆盖原始 GIF 文件。
\n\n初始文件大小:7.57 MiB(7,942,886 字节)。使用 Gifsicle 运行上述命令后:7.64 MiB(8,017,622 字节)。
\n\n有没有办法防止 Gifsicle 在输出文件大于原始文件时覆盖原始文件,而在输出文件较小时仍然覆盖原始文件?
\n\n详细信息:
\n操作系统:Windows 7
\nGifsicle 版本:1.63,来自此处提供的二进制文件:http://www.lcdf.org/gifsicle/
\n Gifsicle 手册
我正在尝试从 MP4 视频文件中提取 GIF。
现在我有两个 modi 可以用来执行此操作:
1)常规的:
ffmpeg -t 7.7 -ss 00:22:53 -i video.mp4 -i palette.png -s 320x174 -filter_complex "fps=15" output.gif
Run Code Online (Sandbox Code Playgroud)
它给出一个文件,大小为 1.6MB。
和 2)
ffmpeg -t 7.7 -ss 00:22:53 -i video.mp4 -i palette.png -filter_complex "fps=15,scale=320:-1:flags=lanczos[x];[x][1:v]paletteuse" output.gif
Run Code Online (Sandbox Code Playgroud)
这给出了一种更好看的方式,但是 4.5MB(增加了 181%)的大文件。它使用我用它创建的 16x16 调色板文件
ffmpeg -y -t 7.7 -ss 00:22:53 -i video.mp4 -vf fps=15,scale=320:-1:flags=lanczos,palettegen palette.png
Run Code Online (Sandbox Code Playgroud)
现在我不太明白为什么 2 个具有相同 fps、持续时间和分辨率的 GIF 在大小上会有如此巨大的差异。我的直觉是,它们应该是相同的。为什么会有这样的差异呢?有没有什么方法可以将 2) 的尺寸缩小到 1) 的尺寸而不损失质量?
谢谢
我试图用透明度调整动画 GIF 的大小,但它把背景变成了纯白色。我如何保持透明度?
我阅读了https://superuser.com/a/556031/130929并尝试过
>set FILTERS=scale=320:-1:flags=lanczos
>ffmpeg -hide_banner -i logo.gif -vf "%FILTERS%,palettegen=stats_mode=diff" -y palette.png
>ffmpeg -hide_banner -i logo.gif -i palette.png -lavfi "%FILTERS% [x]; [x][1:v] paletteuse" logo-320.gif
Run Code Online (Sandbox Code Playgroud)
我也尝试过,-gifflags +transdiff但它没有帮助,因为答案中的博客文章说它是默认设置。我也试过没有stats_mode=diff.
我还尝试为每个帧使用一个调色板,但这只会使文件变大并且没有保持透明度。
>ffmpeg -hide_banner -i logo.gif -filter_complex "[0:v] scale=320:-1:flags=lanczos,split [a][b]; [a] palettegen=stats_mode=single [p]; [b][p] paletteuse=new=1" logo-320.gif
Run Code Online (Sandbox Code Playgroud) gif ×10
animated-gif ×4
ffmpeg ×3
imagemagick ×2
images ×2
animation ×1
base64 ×1
compression ×1
conversion ×1
jpeg ×1
macos ×1
sorting ×1
transparency ×1
video ×1
windows ×1