【问题标题】:Combine multiple videos with specific duration结合具有特定持续时间的多个视频
【发布时间】:2020-11-30 18:02:33
【问题描述】:

我将连接多个视频,以便我可以使用 FFmpeg 获得一个视频文件。

我找到了几种方法来实现这一点,但我发现的所有方法都不能与每个视频的特定持续时间相结合。

这意味着他们只连接整个视频。

没错,我想要的是在特定时间将 video1 插入到 video2 中。在搜索与此相关的几篇文章时,我查看了许多文章说“使用 ffmpeg 是不可能的”。

所以我试图将 video2 拆分为两个视频(如 video2-1、video2-2)和 concat video1、video2-1、video2-2。

【问题讨论】:

    标签: ffmpeg


    【解决方案1】:

    您可以做的是在过滤器复合体中使用 trim 和 atrim。

    例子

    ffmpeg -i vid1.mp4 -i vid2.mp4 -filter_complex "[0:v]trim=0:2,setpts=PTS-STARTPTS[v1];[1:v]trim=3:6,setpts=PTS-STARTPTS[v2];[0:a]atrim=0:2,asetpts=PTS-STARTPTS[a1];[1:a]atrim=3:6,asetpts=PTS-STARTPTS[a2];[v1][a1][v2][a2]concat=n=2:v=1:a=1" out.mp4
    

    这会将 vid1 从 0 剪切到 2 并将 vid2 从 3 剪切到 6 并将它们组合在一起。

    【讨论】:

    • 感谢您的回复。我运行此命令,但出现此错误。 "过滤器图描述中的无效文件索引 0 [0:v]trim=0:2[v1];[1:v]trim=3:6[v2];[0:a]atrim=0:2[a1]; [1:a]atrim=3:6[a2];[v1][a2][v2][a2]concat=n=2:v=1:a=1."
    • 我刚刚修改了它。 concat 的小错字。应该是 [v1][a1][v2][a2] 而不是 [v1][a2][v2][a2]
    • 我写的是“-i”而不是“-i”。删除“-”和“i”之间的空格
    • 重置时间也不错。如此完整的命令:ffmpeg -i vid1.mp4 -i vid2.mp4 -filter_complex "[0:v]trim=0:2,setpts=PTS-STARTPTS[v1];[1:v]trim=3:6,setpts=PTS-STARTPTS[v2];[0:a]atrim=0:2,asetpts=PTS-STARTPTS[a1];[1:a]atrim=3:6,asetpts=PTS-STARTPTS[a2];[v1][a1][v2][a2]concat=n=2:v=1:a=1" out.mp4
    • 不错。它工作得很好。非常感谢 Dirk V!你能再帮我一次吗?我想用这种方式连接三个视频。如何设置过滤器参数?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-01
    • 1970-01-01
    • 2019-03-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多