如何避免在 movipy 中出现太多打开文件的问题?



我正在尝试通过使用moviepy连接一些视频剪辑来创建mp4。但是,根据剪辑的数量,我收到错误:too many open files。在下面的代码中使用了两个列表,其中jpegs包含所有嵌入的图片及其在 mp3 列表中具有 100 多个剪辑的相应 mp3

image_main = []
d = 0
for i in range(0,len(jpegs)):
audio = AudioFileClip(mp3s[i])
image = (ImageClip(jpegs[i])
.set_duration(audio.duration)
.set_audio(audio))
d  = d + (image.duration / 60.0)
print(jpegs[i])
print('TOTAL DURATION: ', d)
image_main.append(image)
#del audio.reader
#del audio 

如上面的代码片段所示,我试图在附加后添加删除音频(注释掉的行(。但是,这在下面的代码中引起了另一个问题,因此我无法创建视频文件。

concat_clip = concatenate_videoclips(image_main, method="compose", transition=transition)
clip_resized = concat_clip.resize(width=1920)
clip_resized.write_videofile("REDDIT/stupid_TRIAL.mp4", fps=24, threads = 4)

现在,我已经通过使用几个视频而不是许多视频解决了这个问题。

我该如何解决这个问题?

我认为处理这个问题的最好方法是将其分解为更小的步骤。导入大量音频/图像文件后,将它们连接并写入临时视频文件。然后用audio.close()关闭每个音频文件(这将自动关闭audio.reader

重复此过程,直到完成所有文件,然后读取临时视频文件并将这些文件连接在一起。

最新更新