我有很多 h265 剪辑,全部都是 6 秒长。现在我想将这些与 ffmpeg 串在一起(最好不重新编码),但只使用每个剪辑的第二个 2 到 4 的部分。我使用 concat demuxer 执行此操作,但是一旦我指定了入点和持续时间,我的结果就会变得非常随机。它不会抛出任何错误并产生新的剪辑,但长度和入点完全关闭。
由于我的剪辑是 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
要使用 concat demuxer 限制持续时间,请设置
outpoint
(使用值 inpoint + 预期持续时间)。关键字命名错误,
duration
它基本上设置了下一个剪辑的起始时间戳相对于当前剪辑的起始时间戳的偏移量。但它不限制当前剪辑的输出。