使用 Python MoviePY 连接视频太慢

Mat*_*ics 3 python video ffmpeg moviepy

我正在使用 MoviePY 加入 50 秒或更多 1、2、3 分钟的视频,但它给了我 20 小时,即使我有 64 GB 的内存、i7 和 GTX 670,但不是顶级但合理。无论如何我可以加快这个过程吗?

padding = 10 # padding option
video_clips = [VideoFileClip(video_dir + video) for video in os.listdir(video_dir)]
video_fx_list = [video_clips[0]]

idx = video_clips[0].duration - padding
for video in video_clips[1:]:
video_fx_list.append(video.set_start(idx).crossfadein(padding))
idx += video.duration - padding

final_video = CompositeVideoClip(video_fx_list)
final_video.write_videofile(video_dir + 'myoutfile.mp4', fps=24)
Run Code Online (Sandbox Code Playgroud)

我不需要这些剪辑的原始音频,删除它会加快速度吗?虽然不知道如何删除音频/

在此处输入图片说明

Sci*_*iPy 6

您可以指定多个threadsin write_videofile 。通过使用机器的所有内核,它将显着加快导出速度。

final_video.write_videofile(video_dir + 'myoutfile.mp4', threads = 8, fps=24)
Run Code Online (Sandbox Code Playgroud)

附加说明:

  • 您可以将resize所有视频都设置为较低的分辨率(例如 720p)

  • 减少fps也有很大的不同,但 24 fps 已经很好地优化了

  • Moviepy 仅使用 CPU 来渲染视频。考虑升级您的 CPU 或在云服务(例如 Amazon AWS、Google Cloud、MS Azure..)上运行您的程序以获得更好的性能


Cuk*_*c0d 5

Python 在视频编辑方面效率不高。

如果您使用的是 MoviePY,请查看 https://zulko.github.io/moviepy/ref/ffmpeg.html (也许使用更稳定的 github dev 版本)

您有一些直接调用 ffmpeg 的函数:https : //github.com/Zulko/moviepy/blob/master/moviepy/video/io/ffmpeg_tools.py 因此对于像您这样的简单任务非常有效