【问题标题】:FFMPEG - Overlay multipe videos over video at specified interval of timeFFMPEG - 以特定的时间间隔在视频上叠加多个视频
【发布时间】:2018-08-28 00:26:18
【问题描述】:

我想以指定的时间间隔在一个视频上叠加多个视频。

尝试了不同的解决方案,但它不会像我一样工作

我使用下面的命令在视频上叠加视频

String[] cmdWorking3 = new String[]{"-i",yourRealPath,"-i",gifVideoFile1,"-i",gifVideoFile2,"-i",gifVideoFile3,
                "-filter_complex",
                "[0][1]overlay=100:100:enable='between(t,0,2)'[v1];" +
                        "[v1][2]overlay=130:130:enable='between(t,0,2)'[v2];" +
                        "[v2][3]overlay=150:150:enable='between(t,5,6)'[v3];",
                "-map","[v3]","-map" ,"0:a",
                "-preset", "ultrafast", filePath};

通过使用上述命令,前两个视频完全可以正常工作,但最后一个将无法启用

编辑:

//完美运行

 String[] cmdWorking11 = new String[]
                {"-i",
                        yourRealPath,
                        "-i",
                        gifVideoFile1,
                        "-i",
                        gifVideoFile2,
                        "-i",
                        gifVideoFile3,
                        "-i",
                        gifVideoFile4,

                        "-filter_complex",

                        "[1]setpts=PTS+3/TB[1d];" +
                        "[2]setpts=PTS+7/TB[2d];" +
                        "[3]setpts=PTS+10/TB[3d];" +

                        "[0][1]overlay=100:100:enable='between(t,0,2)'[v1];" +
                        "[v1][1d]overlay=130:130:enable='between(t,3,6)'[v2];" +
                        "[v2][2d]overlay=130:130:enable='between(t,7,9)'[v3];" +
                        "[v3][3d]overlay=150:150:enable='between(t,10,13)'[v4];" +

                        "[1]asetpts=PTS+3/TB[1ad];" +
                        "[2]asetpts=PTS+7/TB[2ad];" +
                        "[3]asetpts=PTS+10/TB[3ad];" +
                        "[0:a][1ad][2ad][3ad]amix=4[a]",

                        "-map", "[v4]", "-map", "[a]", "-ac", "5",

                        "-preset",
                        "ultrafast",

                        filePath};

上述命令完全可以正常工作,但重叠视频中的音频消失了,请您帮我解决这个问题。

主视频时长约为00:15秒,所有叠加视频约为3秒

很高兴能帮助解决这个问题,在此先感谢。

【问题讨论】:

    标签: ffmpeg android-ffmpeg


    【解决方案1】:

    您需要延迟第三个叠加视频在叠加时开始。

    String[] cmdWorking3 = new String[]{"-i",yourRealPath,"-i",gifVideoFile1,"-i",gifVideoFile2,"-i",gifVideoFile3,
                    "-filter_complex",
                    "[3]setpts=PTS+5/TB[3d];" + 
                    "[0][1]overlay=100:100:enable='between(t,0,2)'[v1];" +
                            "[v1][2]overlay=130:130:enable='between(t,0,2)'[v2];" +
                            "[v2][3d]overlay=150:150:enable='between(t,5,6)'[v3]",
                    "-map","[v3]","-map" ,"0:a",
                    "-preset", "ultrafast", filePath};
    

    要保留音频,请包含在 filter_complex 中

              [1]adelay=3000|3000[1ad];
              [2]adelay=7000|7000[2ad];
              [3]adelay=10000|10000[3ad];
              [0:a][1ad][2ad][3ad]amix=5[a]
    

    -map 0:a 替换为-map '[a]' -ac 2

    【讨论】:

    • 它会崩溃 日志:初始化复杂过滤器时出错。无效参数
    • [AVFilterGraph @ 0xf26d4740] 没有这样的过滤器:''初始化复杂过滤器时出错。无效参数
    • 我需要做的是在单个视频上叠加多个视频,输入可能包含超过 3 个
    • 我不明白同一个兄弟的概念
    • 为什么要延迟最后添加的视频?
    【解决方案2】:
    ffmpeg -i test.mp4  -i test1.mp4 -itsoffset 2 -i test2.mp4  -i test3.mp4 -filter_complex "overlay=0:0,overlay=0:0:enable='between(t,2,15)',overlay=0:0" output.mp4 
    

    其中 -itsoffset 2 表示 test3.mp4 2s 开始播放, enable='between(t,start_time,end_time)' 表示此视频显示时长

    【讨论】:

      猜你喜欢
      • 2017-08-14
      • 2019-05-30
      • 2017-07-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-21
      • 2016-05-18
      • 2019-07-25
      • 1970-01-01
      相关资源
      最近更新 更多