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

发布于 2024-09-16 01:59:08 字数 317 浏览 9 评论 0原文

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

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

cat video1.mts video2.mts > whole_video.mts

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

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

I have two MTS video files, each one 2 minutes long. I need to be able to join the files together and convert the format to MPEG4. I have a suitable command line for converting MTS to MP4 but don't know how to join the files together in the first place.

Some articles on the web suggest using the CAT command, like:

cat video1.mts video2.mts > whole_video.mts

However this doesn't work and according to FFMPEG, "whole_video.mts" is only 2 minutes long, not 4 minutes.

Does anyone know how to join the files together? Is FFMPEG the best program to use to do this? Thanks in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

烟─花易冷 2024-09-23 01:59:08

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

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

The following worked perfectly for me (i.e. resulting in seamless joins):

ffmpeg -i "concat:00019.MTS|00020.MTS|00021.MTS|00022.MTS" output.mp4
千秋岁 2024-09-23 01:59:08

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

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

Using cat works. Its just that video players will be kind of fooled about the video length while reading the resulting whole_video.mts. There will be typically a sudden timestamp jump where the file were previously cut. But this is okay. You can encode it and then you'll get a right timestamped file.

Encoding with ffmpeg and then joining with MP4Box is a bad idea. You'll get ugly images with missing blocks at the crossing position if the second file doesn't start with a keyframe (which happens when it has been cut by a camcorder because of the 2GB file limitation). Do join and then encode, not the opposite.

浪菊怪哟 2024-09-23 01:59:08

没关系,我已经整理好了。使用最新的 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”文件显示正确的持续时间并且视频播放正常。

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

It's OK, I've sorted it. Using the latest SVN versions of FFMPEG, x264 and MP4Box (GPAC), here's what I did...

Use FFMPEG to convert the MTS files to MP4 as normal:

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

Use MP4Box to join the MP4 files together:

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

This joins the files together into "output.mp4", however when I use "ffmpeg -i output.mp4" it says the duration is longer that it should be. To fix this, I had to use FFMPEG again:

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

And voila! Querying the "final.mp4" file using FFMPEG shows the correct duration and the video plays fine.

Hope this helps anyone else experiencing the same problem.

青芜 2024-09-23 01:59:08

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

ffmpeg -i "concat:00032.MTS|00033.MTS" -c copy out.MTS

To avoid re-encoding, -c copy is needed

ffmpeg -i "concat:00032.MTS|00033.MTS" -c copy out.MTS
女中豪杰 2024-09-23 01:59:08

遗憾的是,使用此处列出的解决方案或网络上其他任何地方的解决方案对我来说效果不佳 - 输出文件中缺少音频或编码未正确发生,这意味着文件无法流畅播放和/或缺少零件。我不确定这是因为它是一个蹩脚的 AVCHED 编译问题还是一个过时的编解码器,但没有任何效果。

我终于找到了适用于这种 .MTS 文件格式的程序工作流程。

合并视频
程序 MKVToolNix 是唯一能够成功组合文件而不会弄乱输出文件或卡顿的程序。音频丢失,或重新编码。

ffmpeg、其他使用 ffmpeg、shutterencoder 的程序以及其他工具对我来说失败了。

转换为 MP4
将 .MTS 直接转换为 MP4 也会导致音频丢失。
我必须转换 .MTS -> .MKV使用MKVToolNix,然后转换.MKV -> .MP4 使用 Handbrake

使用上述工具的组合,如果其他任何方法失败,应该能够处理 .mts 文件

Using the solutions listed here or anywhere else on the web didn't work well for me sadly - either the audio was missing from the output file or the encoding didn't happen properly which meant the file wouldn't play smoothly and/or was missing parts. I'm not sure if it was because it was a crappy AVCHED compiling issue or an outdated codec, but nothing worked.

I finally found a workflow of programs that worked for this .MTS file format.

Combining Videos
The program MKVToolNix is the only thing that successfully combined the files without messing up the output file, or stutter & loss of audio, or re-encoding it.

ffmpeg, other programs that used ffmpeg, shutterencoder, & other tools failed for me.

Converting to MP4
Converting .MTS directly to MP4 resulted in a loss of Audio as well.
I had to convert .MTS -> .MKV using MKVToolNix, and then convert the .MKV -> .MP4 using Handbrake

Using the combination of above tools one should be able to work with .mts files if anything else fails

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文