【问题标题】:How to merge two videos using ffmpeg Android如何使用 ffmpeg Android 合并两个视频
【发布时间】:2021-10-15 16:48:39
【问题描述】:

我有两个要合并的视频。两者具有相同的分辨率。第二个视频没有任何音频

ffmpeg -i test.mp4 -i picture.mp4 -filter_complex "[0:v] [0:a] [1:v] [1:a] concat=n=1:v=2:a=1 [v] [a]" -map "[vv]" -map "[aa]" 合并视频.mp4

这是我正在使用的命令,但出现以下错误 过滤图描述中的流说明符 ':a' [0:v] [0:a] [1:v] [1:a] concat=n=2:v=2:a=1 [v] [a] 不匹配流。

我对 ffmpeg 命令不是很熟悉,但我想我给出了一些错误的过滤器复杂值

【问题讨论】:

    标签: java video ffmpeg command-line android-ffmpeg


    【解决方案1】:

    您正在尝试 ffmpeg 的“concat video filter”方法。 我建议尝试“concat demuxer”。 创建一个名为 inputlist.txt 的文件(或任何你喜欢的文件),内容如下:

    file 'test.mp4'
    file 'picture.mp4'
    

    然后运行ffmpeg如下:

    ffmpeg -f concat -safe 0 -i inputlist.txt -c copy mergedVideo.mp4
    

    【讨论】:

    • 我确实尝试过这种方法,但我想在我的 android 应用程序中使用这个命令,并且每次都必须将两个视频的路径写入 txt 文件。我想要一个命令,我可以将它们与它们的路径连接起来
    • 如文档中所述:link“所有段必须具有相同数量的每种类型的流,这也是输出流的数量。”您的第一个视频同时具有视频和音频流,但第二个视频只有视频流。所以,流数是不一样的。这是您遇到错误的原因。 concat 视频过滤器可能不适合您的情况
    • 有没有办法将图像文件与视频合并而不是两个视频?
    【解决方案2】:

    缺少音频

    • picture.mp4 没有音频。
    • 您不能将带音频的输入与不带音频的输入连接起来。
    • 解决方案是使用anullsrc filter 添加静音/虚拟/填充音频。或添加音频文件。

    示例

    ffmpeg -i test.mp4 -i picture.mp4 -t 0.1 -f lavfi -i anullsrc -filter_complex "[0:v] [0:a] [1:v] [2:a] concat=n=2:v=1:a=1 [v] [a]" -map "[v]" -map "[a]" mergedVideo.mp4
    

    其他问题

    • 在您的第一个命令中,您告诉 concat 过滤器您有 1 组段 (n=1) 而不是 2 组 (n=2)。请参阅concat filter documentation
    • 您告诉 concat 过滤器您有 2 个视频输出 (v=2) 而不是 1 个 (v=1)。请参阅concat filter documentation
    • 您的-map 标签指的是不存在的标签。见FFmpeg Wiki: Map
    • 可能还有其他问题需要解决,但您没有包含完整的日志。

    【讨论】:

      猜你喜欢
      • 2018-04-23
      • 2019-03-01
      • 2018-12-27
      • 1970-01-01
      • 1970-01-01
      • 2018-12-22
      • 1970-01-01
      • 2017-08-09
      • 1970-01-01
      相关资源
      最近更新 更多