Python 3.x 为什么我在moviepy中创建电影的实现如此低效?

Python 3.x 为什么我在moviepy中创建电影的实现如此低效?,python-3.x,performance,video,video-processing,moviepy,Python 3.x,Performance,Video,Video Processing,Moviepy,我正在使用moviepy,一个用于创建电影的python模块,来创建mike的一张照片的电影,然后是emily的一张照片,每两张照片有一首不同的歌曲。我通过以下方式实现了这一点: clips = [] for i in range(n): audio = AudioFileClip(audiofiles[i]).set_duration(10) video1 = ImageClip(images_mike[i]).set_duration(5) video2 = Imag

我正在使用moviepy,一个用于创建电影的python模块,来创建mike的一张照片的电影,然后是emily的一张照片,每两张照片有一首不同的歌曲。我通过以下方式实现了这一点:

clips = []
for i in range(n):
    audio = AudioFileClip(audiofiles[i]).set_duration(10)
    video1 = ImageClip(images_mike[i]).set_duration(5)
    video2 = ImageClip(images_emily[i]).set_duration(5)
    video = concatenate([video1,video2],method='compose')
    movie.set_audio(audio)
    clips.append(movie)
video = concatenate(clips,method='compose')
video.write_videofile('my_movie.mp4')
audiofiles,是音频文件名的列表。images\u mike和images\u emily都是图像文件名的列表

但是这个方法真的很慢。video.write\u videofile('my\u movie.mp4')可能需要一个小时来编译一个4分钟的剪辑。此外,当我试图制作一个10分钟的剪辑时,我遇到了内存分配错误。这种实现有什么问题?这肯定不对


我不知道这是否相关,但我在笔记本电脑上,有16gb内存和i7处理器

如果是
写入视频文件
速度慢,则会有一个
预设
参数告诉FFMPEG优化压缩所需的时间。默认值为“中等”。如果您不在乎视频文件有多大,请尝试使用
preset='ultrafast'
。根据文档,无论您选择哪个选项,质量都不会改变,但如果设置更快,文件可能会变得更大

video.write_videofile('my_movie.mp4', preset='ultrafast')
选项有:超快、超快、极快、快、中、慢、慢、极速、安慰剂。

您还可以使用
threads
参数,该参数默认为
None
…尝试将其设置为2或3,看看是否有帮助

尝试在连接中使用“method='chain'”。它将我的速度从4 It/s提高到20 It/s。从视觉上看,我在输出上没有任何差异,但是,这取决于你的代码和你正在制作的视频