使用FFMPEG以合理的质量向GIF添加水印

使用FFMPEG以合理的质量向GIF添加水印,ffmpeg,Ffmpeg,所以我得到了这个代码,在一个装满GIF的文件夹中添加了一个徽标 @echo off setlocal for %%G in ("%~dp0webm\*.gif") do ( ffmpeg -i %%G -i watermark.png -filter_complex "[0:v]scale=trunc(iw/2)*2:trunc(ih/2)*2[v0];[1:v][v0]scale2ref=trunc(iw/5):trunc(ih/16)[logo][0v];[0v][logo]over

所以我得到了这个代码,在一个装满GIF的文件夹中添加了一个徽标

@echo off
setlocal
for %%G in ("%~dp0webm\*.gif") do (
    ffmpeg -i %%G -i watermark.png -filter_complex "[0:v]scale=trunc(iw/2)*2:trunc(ih/2)*2[v0];[1:v][v0]scale2ref=trunc(iw/5):trunc(ih/16)[logo][0v];[0v][logo]overlay=W-w-3:H-h-4 [v]" -map "[v]" "C:\Users\Propietario\Desktop\Conversion\gif\%%~nG.gif"
    )
)
endlocal
pause
但是,输出质量相当低,类似于我在将视频转换为GIF时遇到的问题,通过创建调色板解决了这个问题

ffmpeg -i input.gif -filter_complex palettegen[PAL];[0:v]fifo[v0];[v0][PAL]paletteuse output.gif
问题是,这两种解决方案都使用了
-filter\u complex
,所以我不知道如何准确地将这两种方法结合起来,以便我能够将GIF转换为具有合理质量的带水印GIF。

使用

@echo off
setlocal
for %%G in ("%~dp0webm\*.gif") do (
    ffmpeg -i %%G -i watermark.png -filter_complex "[0:v]scale=trunc(iw/2)*2:trunc(ih/2)*2[v0];[1:v][v0]scale2ref=trunc(iw/5):trunc(ih/16)[logo][0v];[0v][logo]overlay=W-w-3:H-h-4,palettegen [v]" -map "[v]" "C:\Users\Propietario\Desktop\Conversion\gif\%%~nG-palette.png"
    ffmpeg -i %%G -i watermark.png -i "%%~nG-palette.png" -filter_complex "[0:v]scale=trunc(iw/2)*2:trunc(ih/2)*2[v0];[1:v][v0]scale2ref=trunc(iw/5):trunc(ih/16)[logo][0v];[0v][logo]overlay=W-w-3:H-h-4[ov];[ov][2]paletteuse [v]" -map "[v]" "C:\Users\Propietario\Desktop\Conversion\gif\%%~nG.gif"
    )
)
endlocal
pause
使用


您无法在GIF中添加水印,否则会丢失质量

GIF最多有256色,必须作为像素艺术处理,而不是像视频那样平滑图像。用于视频处理的工具预期视频为平滑图像序列。在这里的某个地方,在清晰像素世界和平滑图像世界之间进行转换,这是不可能没有损失的。GIF也使用了很多技巧,比如说非常自适应的调色板,所以若你们想添加白色徽标,这里可能并没有白色的调色板。这里并没有“阿尔法混合”,任何试图组合颜色的尝试都会显著改变调色板贴图,所有图像都会失真


如果你真的想添加覆盖,如果理论上,你可以将像素解压为调色板图像(我们时代的视频处理工具无法做到这一点),分析水印,为当前调色板调整水印(是的,你必须更改水印,如果你不想更改图像),将水印添加到图像并重新打包图像。这是一项复杂的任务,我不知道它的工具。作为互联网用户,我不支持实践,当有人用不需要的水印标记好的内容时,我更喜欢原件,所以我不喜欢编写这样的软件。

你不能在GIF中添加水印而不损失质量

GIF最多有256色,必须作为像素艺术处理,而不是像视频那样平滑图像。用于视频处理的工具预期视频为平滑图像序列。在这里的某个地方,在清晰像素世界和平滑图像世界之间进行转换,这是不可能没有损失的。GIF也使用了很多技巧,比如说非常自适应的调色板,所以若你们想添加白色徽标,这里可能并没有白色的调色板。这里并没有“阿尔法混合”,任何试图组合颜色的尝试都会显著改变调色板贴图,所有图像都会失真


如果你真的想添加覆盖,如果理论上,你可以将像素解压为调色板图像(我们时代的视频处理工具无法做到这一点),分析水印,为当前调色板调整水印(是的,你必须更改水印,如果你不想更改图像),将水印添加到图像并重新打包图像。这是一项复杂的任务,我不知道它的工具。作为互联网用户,我不支持实践,当有人用不需要的水印标记好的内容时,我更喜欢原件,所以我不喜欢编写这样的软件。

质量仍然很差,GIF上有一些线条,类似于我在另一个线程上发现的这个网站上的示例,即使使用“paletteuse”,我似乎也无法摆脱它们等等,似乎我没有正确地实现它,我修复了它以符合您发布的内容,我的控制台在创建调色板时由于某种原因崩溃。@NeoHerakles尝试取消脚本并在cmd中手动运行它。它还在崩溃吗?如果是,请显示完整的控制台输出。如果您不熟悉从控制台复制,请使用
-report
选项输出过于详细的日志文件(它将出现在当前目录中)。没关系,我尝试了另一种解决方案,非常感谢。质量仍然很差,GIF上有一些线条与我在另一个帖子上找到的这个网站上的示例类似,即使使用“paletteuse”,我似乎也无法摆脱它们等等,似乎我没有正确地实现它,我修复了它以符合您发布的内容,由于某种原因,我的控制台在创建调色板时崩溃。@NeoHerakles尝试取消脚本并在cmd中手动运行它。它还在崩溃吗?如果是,请显示完整的控制台输出。如果您不熟悉从控制台复制,请使用
-report
选项输出过于详细的日志文件(它将显示在当前目录中)。没关系,我尝试了另一种解决方案,非常感谢。非常感谢您的输入,我想我可能不得不接受GIF中的质量损失,我完全同意你的观点,但我的很多内容都被无耻地偷走了,我想在角落里至少放一个小小的水印来阻止他们。不要骗我们,如果真的是你的内容,你可以像很多艺术家一样在制作阶段加上水印。你是另一个网站,它接受别人的作品并在上面塑造你的名字。每一篇文章都是一篇偷来的文章的转载。虽然文章本身的内容不是我的,但对它所做的编辑本身就是内容(至少在我看来),我真的不喜欢在其他页面上看到它,上面有一个黑色条,向其中添加文本。@bukkojot ffmpeg有过滤器来分析GIF,并生成一个自定义全局调色板,包括一个具有自适应透明度的每帧调色板,然后使用这些调色板对GIF进行编码。非常感谢您的输入,我想我可能不得不接受GIF中的质量损失,我完全同意你的看法,但我的很多内容都被无耻地偷走了,我想开始在角落里至少放一个小水印来阻止他们。不要对我们撒谎,如果真的是你的内容,你可以在制作阶段添加一个水印,正如许多艺术家所做的那样。你是另一个网站,它接受别人的作品并在上面塑造你的名字。每一篇文章都是一篇偷来的文章的转载。虽然文章本身的内容不是我的,但对它所做的编辑本身就是内容(至少在我看来),我真的不喜欢在其他页面上看到它的顶部有一个黑色条,向其中添加文本。@bukkojot ffmpeg有过滤器来分析GIF,并生成一个自定义全局调色板,包括一个具有自适应透明度的每帧调色板,然后使用t对GIF进行编码