首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在gif到GIF之前覆盖帧

如何在gif到GIF之前覆盖帧
EN

Stack Overflow用户
提问于 2021-02-08 16:10:50
回答 1查看 110关注 0票数 0

我正在用windows批处理来做一些工作

基本上我需要做的是

将每个X帧(本例中为10帧、1、11、21等)添加到gif.的webm源代码中。

只要我保持当前调色板/过滤器/抖动使用的质量,如何使用就不重要了。

我找到了解决方案:我为png制作了一个视频,用批处理for循环覆盖png,并制作了一个gif

我遇到的问题: Gif不适用于覆盖的pngs

代码语言:javascript
复制
rem EXTRACTING
ffmpeg !time_range! -i "input.webm" -vsync 0 -vf "fps=20,scale=!size!" "output_%%03d.png" 

2 %%是因为您需要批量转义它,所以ffmpeg看到"%03d“。

代码语言:javascript
复制
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时

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

它只是给了我一个错误“错误标记过滤器已完成”,什么也不做。

代码语言:javascript
复制
ffmpeg -y -framerate 20 -i "output_%%03d.png" -i "!palette!" "overlayedgif.gif"

它使得没有黑色框架的gif (跳过它们)也是可怕的质量。

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

重要注意如果我删除覆盖/重命名块,我的脚本将产生奇迹!

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

EN

回答 1

Stack Overflow用户

发布于 2021-02-10 17:41:58

代码语言:javascript
复制
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与覆盖和调色板,我会编辑,如果我发现。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66105221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档