Я столкнулся с этим вопросом, но, к сожалению, нет хороших ответов онлайн, поэтому я хочу выложить окончательные решения здесь.
Вот оно:
Вы никогда не должны отдавать слишком много видеофайлов (.mp4) в moviepy одновременно.
Но вы можете дать ему parent video
Затем разделить его на тысячи subclips
в памяти
На самом деле, в настоящее время они не являются реальными clips
(я имею в виду файл .mp4)
На данный момент в вашей памяти хранится только одно видео, parent video
и информация о subclips
(где начинается, где заканчивается)
Таким образом, вы передаете список клипов в функцию сцепления, это больше не вызовет переполнения памяти
Вот демонстрационные коды:
parent_clip = VideoFileClip("./parent_video.mp4")
clip_list = []
for part in time_parts:
time_start = part[0]
time_end = part[1]
clip_list.append(
parent_clip.subclip(time_start, time_end)
)
concat_clip = concatenate_videoclips(clip_list)