【问题标题】:Superimpose video if different duration如果持续时间不同,则叠加视频
【发布时间】:2019-08-19 11:57:42
【问题描述】:

我有 2 个视频。我用这段代码将一个视频覆盖在另一个视频上:

-stream_loop {LoopCount} -i 1.mp4 -c 复制 -y 2.mp4 -i 2.mp4 -i preresult.mp4 -filter_complex "[0:v][1:v]overlay=shortest=1[out]" -map "[out]" -y result.mp4

{LoopCount} - 这是一个变量,用于存储叠加视频比原始视频长多少倍的值。

请告诉我如何在 filter_complex 中组合这两个命令,以便 ffmpeg 可以多次循环覆盖视频,以匹配 preresult.mp4 的持续时间?

谢谢大家!

【问题讨论】:

    标签: video ffmpeg


    【解决方案1】:

    -stream_loop -1 -i 1.mp4 -i preresult.mp4 -filter_complex "[0:v][1:v]overlay=shortest=1[out]" -map "[out]" -y result.mp4

    -1 将 stream_loop 设置为无限循环,使叠加过滤器中的 preresult 视频更短。

    【讨论】:

    • 是的,我试过这个选项。但我需要最终视频与 preresult.mp4 一样长。例如,叠加视频持续 3 秒,预结果持续 15 秒。输出应该是一个持续时间为 15 秒的视频,在这 15 秒内,覆盖视频应该循环播放。现在最终视频将是 3 秒长,因为参数指定为 shortest=1。
    • 将 ffmpeg 至少升级到 4.1。直到几个月前,stream_loop 还是有问题的。
    • 谢谢,升级到 nightly build 有帮助。
    猜你喜欢
    • 1970-01-01
    • 2020-09-30
    • 1970-01-01
    • 1970-01-01
    • 2015-06-14
    • 1970-01-01
    • 2016-12-17
    • 2020-12-11
    • 2016-06-08
    相关资源
    最近更新 更多