ffmpeg concat 解复用持续时间和输入点

ffmpeg concat 解复用持续时间和输入点

我有许多 h265 剪辑,长度均为 6 秒。现在我想用 ffmpeg 将它们串在一起(最好不要重新编码),但只使用每个剪辑的第 2 秒到第 4 秒的部分。我使用 concat 解复用器执行此操作,但只要我指定入点和持续时间,结果就会变得非常随机。它不会抛出任何错误并生成新剪辑,但长度和入点完全不对。
由于我的剪辑是 h265 并且相当短,我的第一个怀疑是它根本没有可以编辑的关键帧,所以我尝试对 Quicktime Prores 剪辑(帧内编码)进行相同操作 - 但结果同样奇怪。所以我想知道问题是否可能出在其他地方?

这是我的代码(从 Python 调用):

subprocess.call(['ffmpeg', '-f', 'concat', '-safe', '0', '-i', 'concatlist.txt', '-c', 'copy', '-hide_banner', '-loglevel', 'error', output])

这是我的(自动生成的)文本文件的示例:

file videos_squares/vt_5Hn8lze0G8A.mp4
inpoint 2.0
duration 2.0
file videos_squares/vt_J8DuC93hLq0.mp4
inpoint 2.0
duration 2.0
file videos_squares/vt_u8twUOpagZs_seg3.mp4
inpoint 2.0
duration 2.0

答案1

要使用 concat 解复用器限制持续时间,请设置outpoint(使用 inpoint 值 + 预期持续时间)。

这个duration关键字的名字很糟糕,它基本上设置了下一个剪辑的起始时间戳相对于当前剪辑的起始时间戳的偏移量。但它并不限制当前剪辑的输出。

相关内容