结合来自ffmpeg的两个视频

Ast*_*tha 10 video ffmpeg centos video-encoding

我想结合两个mp4视频,使用ffmpeg形成一个mp4视频.

到目前为止我尝试过的是

ffmpeg -i input1.mp4 -i input2.mp4 output.mp4
Run Code Online (Sandbox Code Playgroud)

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

mpe*_*kov 7

有关加入文件的信息,请阅读FFMPEG 常见问题解答.

不幸的是,由于你正在使用MP4文件,简单的连接将不适合你,因为MP4格式包含一个"标题"(虽然它不一定必须在文件的开头)部分描述和包含偏移进入媒体数据.您需要将两个文件转码为可以连接的格式,然后从该格式生成MP4文件(这将生成适当的标题部分).


Mar*_*pel 6

您可以使用 来做到这一点ffmpeg,但还有一个名为MP4BoxGPAC 的一部分)的小工具,可以连接多个 MP4 文件。

在你的情况下,语法是

MP4Box -cat input1.mp4 -cat input2.mp4 output.mp4
Run Code Online (Sandbox Code Playgroud)

  • 您可以使用 [concat demuxer](https://trac.ffmpeg.org/wiki/Concatenate#demuxer) 使用 `ffmpeg` 执行此操作(如果您的输入格式相同等,并且您想要 [流复制](http://ffmpeg.org/ffmpeg.html#Stream-copy)) 或 [concat filter](http://ffmpeg.org/ffmpeg-filters.html#concat)(如果您想重新编码,请使用,和/或如果您的输入没有相同的格式、时基等)。 (3认同)

use*_*546 6

如前面的答案所示,您需要先转换为中间格式.如果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
Run Code Online (Sandbox Code Playgroud)

您可以在此处找到更详细的答案.


Mur*_*ime 5

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


llo*_*gan 5

concat 解复用器:快速并保持质量

如果所有输入具有相同的属性、格式和视频/音频流数量,那么您可以使用concat demuxer。这可以让您无需重新编码即可连接,因此速度很快并且可以保持质量。

  1. 制作input.txt包含以下内容:

    file 'input1.mp4'
    file 'input2.mp4'
    
    Run Code Online (Sandbox Code Playgroud)
  2. 连接

    ffmpeg -f concat -i input.txt -c copy output.mp4
    
    Run Code Online (Sandbox Code Playgroud)

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

如果您的输入不匹配

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