微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在制作 gif FFMPEG WEBM TO GIF 之前叠加帧

如何解决如何在制作 gif FFMPEG WEBM TO GIF 之前叠加帧

我正在使用 Windows 批处理来做一些 ffmpeg 工作

基本上我需要做的是这个

每 X 帧(在本例中为 10,1、11、21 等)添加一个叠加到 webm 源到 gif。

只要我保持当前调色板/过滤器/抖动使用的质量

我发现的解决方案:我制作了一个视频到 png,用批处理覆盖 png 并制作一个 gif

我遇到的问题:Gif 不适用于叠加的 png

rem EXTRACTING
ffmpeg !time_range! -i "input.webm" -vsync 0 -vf "fps=20,scale=!size!" "output_%%03d.png" 

两个%%是因为你需要批量转义所以ffmpeg看到"%03d"

REM OVERLAYING
for %%i in (_*1.png) do (
ffmpeg -y -v error -i %%i -i %tmp_blank_frame% -filter_complex "overlay"  overlayed_%%~nxi
del %%i
)
REM REPLACING
rename "overlayed_*" "//////////*"

无论如何它都不是很漂亮,但它确实有效......有点。

它会正确地覆盖和重命名,但是当我将帧重新编译为 gif 时

ffmpeg -y -framerate 20 -i "output_%%03d.png" -i "!palette!" -filter_complex "!filters! [v]; [v][1:v] paletteuse=dither=!dither!" "overlayedgif.gif"

它只是给我一个错误错误将过滤器标记为完成”并且什么都不做。

ffmpeg -y -framerate 20 -i "output_%%03d.png" -i "!palette!" "overlayedgif.gif"

它使没有黑框的 gif(跳过它们)质量也很差

我愿意接受任何建议。对整个 ffmpeg 来说还很陌生,这对我来说开始变得非常复杂,所以可能有一些我忽略或不完全理解的代码

重要说明如果我删除覆盖/重命名块我的脚本作品奇迹!!!

编辑:编辑了我在脚本中使用的混淆变量

解决方法

ffmpeg 
-i OG.mp4 
-i frame.png 
-y -filter_complex "overlay=enable='eq(mod(n,10),0)+eq(n,0)'" 
overlayed.mp4

根据自己的喜好更改 'eq(mod(n,0)',但这正是 Q 的意义所在。

您可以在此处阅读有关 FFMPEG 算术和表达式的更多信息 https://ffmpeg.org/ffmpeg-utils.html#Expression-Evaluation

我不确定您是否可以通过叠加层和调色板一次性完成 webm-to-gif,如果我发现,我会编辑

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。