微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 ffmpeg-python 将视频剪切到一定长度并添加介绍视频?

如何解决如何使用 ffmpeg-python 将视频剪切到一定长度并添加介绍视频?

如何使用 ffmpeg-python 将视频剪切到一定长度并添加介绍视频?

我正在做的是:

        intro = ffmpeg.input(intro)
        mainvid = ffmpeg.input(mainvid)

        v1 = intro.video
        a1 = intro.audio
        v2 = mainvid.video
        a2 = mainvid.audio

        joined = ffmpeg.concat(v1,a1,v2,a2,v=1,a=1).node
        v3 = joined[0]
        a3 = joined[1]

        (
            ffmpeg
            .output(
                v3,a3,'out.mkv',vcodec='libx265',)
            .run()
        )

但我不知道如何在加入前将 mainvid 剪切到特定长度,例如 10 分钟,我知道 ss 会有所帮助,但不知道如何仅将其用于 mainvid。

解决方法

您可以使用 trimatrim 过滤器来修剪视频和音频。
建议的解决方案基于以下answer

  • FFmpeg 支持 3 types 的串联:“Concat demuxer”、“Concat protocol”和“Concat filter”。
    方法 ffmpeg.concat 适用于 Concat filter
    由于使用了“Concat 过滤器”,一个实用的解决方案是通过“链接”trimatrim 过滤器来修剪视频和音频。
  • setptsasetpts 过滤器是修复时间戳所必需的。

v2 = mainvid.videoa2 = mainvid.audio 替换为:

v2 = mainvid.video.filter('trim',start=0,end=600).filter('setpts','PTS-STARTPTS')
a2 = mainvid.audio.filter('atrim',end=600).filter('asetpts','PTS-STARTPTS')
,

我设法做到了:

        intro = ffmpeg.input(intro)
        mainvid = ffmpeg.input(mainvid,ss='00:00:00',t='00:10:00') 

        v1 = intro.video
        a1 = intro.audio
        v2 = mainvid.video
        a2 = mainvid.audio

        joined = ffmpeg.concat(v1,a1,v2,a2,v=1,a=1).node
        v3 = joined[0]
        a3 = joined[1]

        (
            ffmpeg
            .output(
                v3,a3,'out.mkv',vcodec='libx265',)
            .run()
        )

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。