问题:
我经常需要用 ffmpeg 干净地连接两个 .MKV 文件。大约 10-20% 的时间,第一个视频片段的最后 3-5 帧在各种视频播放器(用于测试的 VLC 和 PotPlayer)中会出现问题。典型的效果是,在播放视频时,连接的第一个片段的第三到倒数第五帧将冻结并在接下来的几帧中停留在屏幕上,直到连接的第二段的开始。音频仍然可以在图像后面正常播放。奇怪的是,如果我使用 VLC 中的“e”控件逐帧浏览序列,所有帧似乎都在那里。两个片段都取自同一源并具有相同的属性。源片段确实不是本身就有这个问题。源片段在制作时会自行编码,因此它们不应该有任何关键帧问题。
我尝试过的:
- 发出连接命令时仅对视频进行编码(复制音频和字幕)
- 发出连接命令(复制字幕)时对视频和音频进行编码
- 按照警告建议增加分析持续时间和探测大小的值
- 仅输出视频仍然会产生问题(无音频、无字幕)
- 我见过类似问题的帖子,但我似乎找不到灵丹妙药
我正在做的事情产生了这个问题:
我发出的命令是
ffmpeg.exe -f concat -safe 0 -i "C:\Users\test\Downloads\ConcatListTEMP00000.txt" -c copy -map 0 "C:\Users\test\Downloads\TEST JOIN COPY.mkv"
连接文件的内容是
file 'C:\Users\test\Downloads\CutSegmentTEMP0001.mkv'
file 'C:\Users\test\Downloads\CutSegmentTEMP0002.mkv'
这是运行上述命令时控制台输出的 pastebin 链接: https://pastebin.com/mpBS6TZY
答案1
在滤镜图中使用 trim、atrim 和 concat 滤镜似乎解决了这个问题。我将单独处理字幕。