ffmpeg - 如何在制作 gif FFMPEG WEBM TO GIF 之前覆盖帧

标签 ffmpeg command-line png gif webm

我正在使用 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 来说非常新,这对我来说开始变得非常复杂,所以可能有一些我忽略或不完全理解的代码
重要提示如果我删除覆盖/重命名 block 我的脚本作品奇迹!!!
编辑:编辑了我在脚本中使用的令人困惑的变量

最佳答案

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,10),0)+eq(n,0)'根据您的喜好,但这正是 Q 的意义所在。
你可以在这里阅读更多关于 FFMPEG 的算术和表达式的信息 https://ffmpeg.org/ffmpeg-utils.html#Expression-Evaluation
我不确定您是否可以使用叠加层和调色板一次性完成 webm-to-gif,如果我发现我会编辑

关于ffmpeg - 如何在制作 gif FFMPEG WEBM TO GIF 之前覆盖帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66105221/

相关文章:

ffmpeg 使用调色板将 mp4 转换为 gif 会导致视频被截断

ffmpeg - 如何使用 ffmpeg 的函数裁剪 AvFrame

在 Android 中使用 FFmpeg 时出现 Android NDK 错误?

svg - 将SVG转换为PNG并保持CSS完整性

javascript - 将数据 URI 合并到 APNG 中?

audio - 有没有办法加快 FFMPEG 中的音频处理(amix 和 adelay)?

python - 一个参数有两个值的 Argparse

ruby - 可以在不调用 thor 的情况下调用可执行的 Thor-powered 脚本吗?

command-line - 无法绑定(bind)成功连接

encoding - 试图理解 PNG 文件中的 zlib/deflate