12

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

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

cat video1.mts video2.mts > whole_video.mts

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

有谁知道如何将文件连接在一起?FFMPEG 是用于执行此操作的最佳程序吗?提前致谢。

4

3 回答 3

23

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

ffmpeg -i "concat:00019.MTS|00020.MTS|00021.MTS|00022.MTS" output.mp4
于 2015-08-05T15:55:17.350 回答
3

使用 cat 有效。只是视频播放器在阅读生成的 whole_video.mts 时会被视频长度所迷惑。通常会在文件先前被剪切的地方突然出现时间戳跳跃。但这没关系。您可以对其进行编码,然后您将获得正确的时间戳文件。

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

于 2012-01-29T12:05:24.703 回答
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”文件显示正确的持续时间并且视频播放正常。

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

于 2010-08-24T10:42:07.820 回答