裁剪/调整视频的性能比命令行版本慢得多

作者: listix创建于 2026年8月23日更新于 2026年8月23日

我使用的 Python 代码是:

stream
stream = ffmpeg.trim(stream, start=start_time, duration=duration)
stream = ffmpeg.filter(stream, "framerate", 23.976)
stream = ffmpeg.filter(stream, "scale", width=720, height=540, flags="lanczos")
video_output = "output_python.mp4"
stream = ffmpeg.output(stream, video_output)
stream = ffmpeg.overwrite_output(stream)
print(stream.get_args())

结果为:

['-an', '-i', 'video.mkv', '-filter_complex', '[0]trim=duration=1.0:start=12\\\\:12[s0];[s0]framerate=23.976[s1];[s1]scale=flags=lanczos:height=540:width=720[s2]', '-map', '[s2]', 'output_python.mp4', '-y']

但是,这要花更长的时间。如果我使用这些参数并自己运行它:

time ffmpeg -an -i video.mkv -filter_complex "[0]trim=duration=1.0:start=12\\\\:12[s0];[s0]framerate=23.976[s1];[s1]scale=flags=lanczos:height=540:width=720[s2]" -map [s2] output_code.mp4 -y
________________________________________________________
Executed in  12.88 secs    fish           external
  usr time  169.18 secs  788.00 micros  169.18 secs
  sys time    2.05 secs    0.00 micros    2.05 secs

速度差距大约是 50 倍。此外,两个文件的 sha1 也不同。我是否在做一些明显错误的事情并注意到这一点呢?

内容来源: kkroening/ffmpeg-python