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

Join 使用FFMPEG将两个MTS文件连接在一起,join,video,ffmpeg,video-processing,Join,Video,Ffmpeg,Video Processing,我有两个MTS视频文件,每个2分钟长。我需要能够将文件连接在一起,并将格式转换为MPEG4。我有一个合适的命令行来将MTS转换为MP4,但我不知道如何首先将文件连接在一起 网络上的一些文章建议使用CAT命令,如: cat video1.mts video2.mts > whole_video.mts 然而,这是行不通的,根据FFMPEG,“whole_video.mts”只有2分钟长,而不是4分钟 有人知道如何将文件连接在一起吗?FFMPEG是实现这一点的最佳程序吗?提前谢谢。没关系,我

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

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

cat video1.mts video2.mts > whole_video.mts
然而,这是行不通的,根据FFMPEG,“whole_video.mts”只有2分钟长,而不是4分钟


有人知道如何将文件连接在一起吗?FFMPEG是实现这一点的最佳程序吗?提前谢谢。

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

正常情况下,使用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”文件可以显示正确的持续时间,并且视频播放良好


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

使用cat works。只是视频播放器在读取整个_video.mts时会被视频长度所愚弄。在文件先前被剪切的地方,通常会出现突然的时间戳跳转。但这没关系。你可以对它进行编码,然后你会得到一个正确的时间戳文件


用ffmpeg编码然后加入MP4Box是个坏主意。如果第二个文件不是以关键帧开始的(由于2GB文件限制,被摄像机剪切时会出现这种情况),则在交叉位置会出现缺少块的丑陋图像。请先进行连接,然后进行编码,而不是相反。

以下操作对我来说非常有效(即产生无缝连接):


当我尝试上面的第一个命令:“未找到预设'hq'的文件”时,会出现此错误。请查看ffmpeg文档。“hq”不久前被替换。您的第一步确实会重新编码文件并降低质量。只是作为新手添加这个:我必须
cd
到源文件夹并从那里运行命令(我甚至复制了文件夹中的ffmpeg bineries,但这可能不是必需的)。首先,我尝试在toffmpeg文件夹中运行命令并使用绝对路径连接文件。那不管用,对我很管用。有没有一种不用重新编码就可以实现的方法?我尝试了“output.MTS”,但它似乎仍然希望一帧一帧地运行(虽然速度更快)。在MacOS上,该命令运行良好。这对处理MTS文件有很大帮助。
ffmpeg -i "concat:00019.MTS|00020.MTS|00021.MTS|00022.MTS" output.mp4