我正在用windows批处理来做一些工作
基本上我需要做的是
将每个X帧(本例中为10帧、1、11、21等)添加到gif.的webm源代码中。
只要我保持当前调色板/过滤器/抖动使用的质量,如何使用就不重要了。
我找到了解决方案:我为png制作了一个视频,用批处理for循环覆盖png,并制作了一个gif
我遇到的问题: Gif不适用于覆盖的pngs
rem EXTRACTING
ffmpeg !time_range! -i "input.webm" -vsync 0 -vf "fps=20,scale=!size!" "output_%%03d.png" 2 %%是因为您需要批量转义它,所以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来说,这是非常新的,对我来说,这开始变得非常复杂,所以可能有一些代码我忽略了,或者不完全理解。
重要注意如果我删除覆盖/重命名块,我的脚本将产生奇迹!
编辑:在我的脚本中使用编辑的混淆变量im
发布于 2021-02-10 17:41:58
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到gif与覆盖和调色板,我会编辑,如果我发现。
https://stackoverflow.com/questions/66105221
复制相似问题