结合来自ffmpeg的两个视频

时间:2011-09-27 10:34:31

标签: video ffmpeg centos video-encoding

我想使用ffmpeg将两个mp4视频组合成一个mp4视频。

我到目前为止尝试的是

ffmpeg -i input1.mp4 -i input2.mp4 output.mp4

但是,每次我使用第一个输入的视频编解码器获得视频而不是另一个。我该如何结合它们?对此的任何想法都将受到高度赞赏。

5 个答案:

答案 0 :(得分:6)

请阅读FFMPEG FAQ,了解有关加入文件的信息。

不幸的是,由于您使用的是MP4文件,因此简单连接对您不起作用,因为MP4格式包含一个“标题”(尽管它不一定必须位于文件的开头)部分并包含媒体数据的偏移量。您需要将两个文件转码为可以连接的格式,然后从该格式生成MP4文件(这将生成适当的标题部分)。

答案 1 :(得分:5)

您无法连接.mp4文件,但可以连接.mpg文件。首先尝试使用ffmpeg将两个视频转换为.mpg。然后,在两个.mpg文件上运行一个简单的linux cat命令来创建一个组合的.mpg文件。之后,使用ffmpeg将连接的.mpg文件转换为.mp4。这是一种迂回的方法,但它有效。您可以使用“命名管道”来减少命令数量,但结果是相同的。

答案 2 :(得分:5)

如前所述,您需要先转换为中间格式。如果mp4包含h264比特流,您可以使用:

ffmpeg -i input1.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts input1.ts
ffmpeg -i input2.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts input2.ts
ffmpeg -i "concat:input1.ts|input2.ts" -c copy output.mp4

您可以找到更详细的答案here

答案 3 :(得分:4)

您可以使用ffmpeg执行此操作,但也有一个小工具,称为MP4BoxGPAC的一部分),可以连接多个MP4文件。

在您的情况下,语法是

MP4Box -cat input1.mp4 -cat input2.mp4 output.mp4

答案 4 :(得分:2)

concat demuxer:快速并保持质量

如果所有输入都具有 same attributes、格式和视频/音频流的数量,那么您可以使用 concat demuxer。这可以让您在不需要重新编码的情况下进行连接,因此速度快并保持质量。

  1. 使 input.txt 包含以下内容:

    file 'input1.mp4'
    file 'input2.mp4'
    
  2. 连接

    ffmpeg -f concat -i input.txt -c copy output.mp4
    

    如果出现错误 Unsafe file name,请添加 -safe 0 concat demuxer 输入选项(在 -i 之前)。

如果您的输入不匹配

如果您的输入不同或随意,则: