我正在尝试使用 ffmpeg 将多个 mp4 视频合并为一个。网上关于此操作的“操作方法”大体相同:
ffmpeg -f concat -i inputfile.txt -c copy output.mp4
但是当我尝试连接我的文件时,我不断收到如下输出:
[concat @ 0x1f72560] DTS 3815 < 3812809 out of order
[mp4 @ 0x20ad2e0] Non-monotonous DTS in output stream 0:0; previous: 3812809, current: 3815; changing to 3812810. This may result in incorrect timestamps in the output file.
结果是,我得到的文件的第一部分音频和视频都正常,但后续部分只有音频正常。偶尔,我会得到没有音频的视频。
有些用户转而使用 MP4Box,但我也尝试过 MP4Box,结果是一样的。我错过了什么?我看到了这个帖子这说明-c copy
了问题所在,但我不太明白它关于重新编码的说法以及为什么有必要这样做。
命令:
ffmpeg -f concat -i test.txt -c copy test.mp4 &> result.txt
内容test.txt
file '/raw/01 - Introduction.mp4'
file '/raw/02 - Background Material.mp4'
内容result.txt
:http://paste.ubuntu.com/12101801/
答案1
这是一个老话题,但我在遇到两个相似的 mp4 文件无法连接的问题时读到过十几个话题之一。视频本身是通过将音频文件叠加在静态图像上创建的。
几个小时后,通过 ffprobe,我发现我的音频文件有不同的采样率(一些是 48KHz,另一些是 44.1 KHz)。我不得不使用 -ar 属性来重新采样它们。现在视频似乎已正确连接。