Я столкнулся с этим вопросом, но, к сожалению, в Интернете нет хороших ответов, поэтому я хочу разместить здесь окончательные решения.
Вот оно:
Вы никогда не должны передавать слишком много видеофайлов (.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)