在过去的几个月里,我一直在玩 ffmpeg 并且无法摆脱在添加 GIF 文件作为叠加层时遇到的问题。
基本上我想要实现的是添加一个透明的 GIF 动画作为 MP4 视频的叠加层。
请在下面找到我正在使用的示例命令:
ffmpeg \
-i 0689a8a9-43b5-45d2-b0e8-acbea6905ce1.mp4 \
-ignore_loop 0 \
-i 02a6e696-969b-4a90-9444-e4b0b4d6f6da.gif \
-t 10.000000 \
-filter_complex "[0:v][1:v]overlay=enable='between(t, 1, 3)'[overlay]" \
-map '[overlay]' \
-pix_fmt yuv420p \
output.mp4
Run Code Online (Sandbox Code Playgroud)
为了更好地理解,请注意:
-ignore_loop 0 只要启用覆盖,我就可以循环播放动画-t 让我的视频持续 10 秒overlay=enable='between(t, 1.0, 3.0)' 设置它可见的时间间隔但是,当我运行此命令时,在 GIF 消失前的几毫秒(3 秒时),它开始闪烁。如果我逐帧查看它,它实际上会从视频中消失,然后又回来,并最终按预期消失。
请在此链接中找到一个带有黑色背景和来自 giphy 的随机 GIF 的示例。资产可以在这里找到。
我可能在这里遗漏了一些东西。你有什么提示吗?
我跑ffmpeg在4.3.1。
先感谢您
我可以用任意 gif 来复制这个。我怀疑覆盖过滤器中存在错误。请随意将其呈现给https://trac.ffmpeg.org。
一旦设置了时间过滤(过滤器被列为具有时间线支持),就会发生这种情况,并且还会根据时间边界而变化。后者不应该是这种情况。
微量元素
ffmpeg \
-t 10 -s qcif -f rawvideo -pix_fmt rgb24 -r 25 -i /dev/zero \
-ignore_loop 0 -i 'https://media.tenor.com/images/c50ca435dffdb837914e7cb32c1e7edf/tenor.gif' \
-filter_complex "overlay=enable='between(t,3,7)'" \
-f flv - | ffplay -
Run Code Online (Sandbox Code Playgroud)
作为解决方法,您可以尝试将 gif 转换为 mp4 ( ffmpeg -re -i <gif> [...]) 并将白色区域设置为透明。
| 归档时间: |
|
| 查看次数: |
211 次 |
| 最近记录: |