我要完成一个相当复杂(对我来说)的视频处理:
- 获取源视频
- 裁剪
- 翻转
- 图像叠加:3 秒关闭,80 秒开启
我已经完成了第一步:
ffmpeg.exe -i source.flv -vf "movie=overlay.jpg [logo];
[in] crop=854:430:0:50 [crop]; [crop] hflip [flipped];
[flipped][logo] overlay=0:0 [out]"
-c:v h264 -c:a copy output.mp4
但我真的不知道从哪里开始让覆盖层在视频过程中多次出现和消失......
我看了看覆盖过滤器手册看到这个示例
overlay=x='if(gte(t,2), -w+(t-2)*20, NAN)':y=0
也许我可以使用类似的公式来达到我的目的:如果 remainder(t/83) <=2 则为 NAN,否则为 0:0...但我如何计算余数?在 C# 中我可以使用 t%83,但 ffmpeg 呢?
还有其他方法吗?
答案1
我终于找到了一个解决方案,通过样本和阅读表达式求值页面:
ffmpeg.exe -i source.flv -vf "movie=overlay.jpg [logo];
[in] crop=854:430:0:50 [crop];
[crop] hflip [flipped];
[flipped][logo] overlay=x='if(lt(mod(t,83),3),NAN,0)':y=0 [out]"
-c:v h264 -c:a copy output.mp4
这个想法是找到 t/83 的余数:如果它小于 3,则不能显示覆盖,否则可以。
希望这能有所帮助...