ffmpeg - ffmpeg 动画 gif 叠加,动画在指定的“之间”之前开始
问题描述
我正在使用这样的命令将动画 gif 作为覆盖添加到视频中:
ffmpeg -y -i video.mp4 -i overlay.gif -filter_complex "[0:v][1:v] overlay=38:11:enable='between(t,1.35,15.042000)'" -pix_fmt yuv420p -c:a copy -safe 0 output.mp4
在该命令中,我要求它显示从 1.35 到 15 的 gif,并且只要覆盖仅在这些时间之间显示,就可以工作,但就好像动画在达到 1.35 之前开始,因为之前的动画位那一点永远不会出现在屏幕上。最终视频中缺少动画的开头。
在 ffmpeg-20180925-a7429d8 和 ffmpeg-N-100581-ga454a0c14f 中尝试过
解决方案
通常,我在发布后找到答案:
https://dev.to/oskarahl/ffmpeg-overlay-a-video-on-a-video-after-x-seconds-4fc9
Solution:
Use the setpts filter to delay the overlay video (gif.mp4) start with x seconds.
ffmpeg -i main_video.mp4 -i gif.mp4 -filter_complex
“[1:v]setpts=PTS-STARTPTS+1/TB[delayedGif];
[0:v][delayedGif]overlay=enable='between(t,1,3)'[out]”
-map [out] complete.mp4
The setpts filter evaluates its expression and assigns the value as the timestamp for the current frame it is processing.
推荐阅读
- reactjs - 在 LocalStorage 上设置日期值
- python - 当 mitmproxy 模式为 Socks5 时如何忽略 Socks4
- c# - 即使 JsonSerializer 工作,改装响应为空
- api - 在 OpenAPI 中为请求示例添加注释
- python - 如何使用指定的浏览器获取 url?
- matlab - Matlab 矩阵乘法返回它不应该返回的值
- php - Laravel URL 门面临时签名路由到外部 url
- python - Pandas 数据框将长字符串列动态操作为 2 列
- python - 在python中从头开始计算macd
- java - java - 如何从java中的json对象循环读取信息?