使用FFMPEG将两个MTS文件连接在一起

问题描述 投票:0回答:4

我有两个 MTS 视频文件,每个文件长 2 分钟。我需要能够将文件连接在一起并将格式转换为 MPEG4。我有一个合适的命令行用于将 MTS 转换为 MP4,但首先不知道如何将文件连接在一起。

网上有些文章建议使用CAT命令,例如:

cat video1.mts video2.mts > whole_video.mts

然而这不起作用,根据 FFMPEG,“whole_video.mts”只有 2 分钟长,而不是 4 分钟。

有人知道如何将文件连接在一起吗? FFMPEG 是执行此操作的最佳程序吗?预先感谢。

join video ffmpeg video-processing
4个回答
23
投票

以下内容对我来说非常有效(即实现无缝连接):

ffmpeg -i "concat:00019.MTS|00020.MTS|00021.MTS|00022.MTS" output.mp4

3
投票

使用猫作品。只是视频播放器在读取生成的 Whole_video.mts 时会被视频长度所欺骗。在文件先前被剪切的位置通常会出现突然的时间戳跳跃。但这没关系。您可以对其进行编码,然后您将获得正确的带时间戳的文件。

使用 ffmpeg 编码然后使用 MP4Box 加入是一个坏主意。如果第二个文件不以关键帧开头(由于 2GB 文件限制而被摄像机剪切时会发生这种情况),您将得到在交叉位置缺少块的丑陋图像。先加入然后编码,而不是相反。


1
投票

没关系,我已经整理好了。使用最新的 SVN 版本的 FFMPEG、x264 和 MP4Box (GPAC),这就是我所做的...

使用 FFMPEG 将 MTS 文件正常转换为 MP4:

ffmpeg -i video1.mts -vcodec libx264 -deinterlace -crf 25 -vpre hq -f mp4 -s hd480 -ab 128k -threads 0 -y 1.mp4
ffmpeg -i video2.mts -vcodec libx264 -deinterlace -crf 25 -vpre hq -f mp4 -s hd480 -ab 128k -threads 0 -y 2.mp4

使用 MP4Box 将 MP4 文件连接在一起:

MP4Box -cat 1.mp4 -cat 2.mp4 output.mp4

这会将文件连接到“output.mp4”中,但是当我使用“ffmpeg -i output.mp4”时,它表示持续时间比应有的要长。为了解决这个问题,我不得不再次使用 FFMPEG:

ffmpeg -i output.mp4 -vcodec copy -y final.mp4

瞧!使用 FFMPEG 查询“final.mp4”文件显示正确的持续时间并且视频播放正常。

希望这可以帮助其他遇到同样问题的人。


0
投票

为了避免重新编码,需要-c copy

ffmpeg -i "concat:00032.MTS|00033.MTS" -c copy out.MTS
© www.soinside.com 2019 - 2024. All rights reserved.