如何解决如何在制作 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 举报,一经查实,本站将立刻删除。