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

时间:2010-08-24 08:43:47

标签: video join ffmpeg video-processing mts

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

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

cat video1.mts video2.mts > whole_video.mts

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

有谁知道如何一起加入这些文件? FFMPEG是最好的程序吗?提前谢谢。

3 个答案:

答案 0 :(得分:15)

以下对我来说非常有效(即导致无缝连接):

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

答案 1 :(得分:3)

使用cat作品。只是视频播放器会在阅读生成的whole_video.mts时对视频长度感到愚蠢。通常会有一个突然的时间戳跳转,其中文件先前已被剪切。但这没关系。您可以对其进行编码,然后您将获得一个正确的带时间戳的文件。

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

答案 2 :(得分:1)

没关系,我已经对它进行了分类。使用最新的SVMP版本的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”文件显示正确的持续时间,视频播放正常。

希望这有助于其他遇到同样问题的人。