Вы пытались просто закрыть клипы?
for clip in clips:
clip.close()
Из источника здесь .
Или, если вы хотите сделать это чисто в случае ошибок, используйте контекст with
:
import contextlib
with contextlib.ExitStack() as stack:
clips = []
for name in clip_names:
clip = VideoFileClip(name)
stack.enter_context(contextlib.closing(clip))
clips.append(clip.resize(width=DEFAULT_WIDTH,height=DEFAULT_HEIGHT))
final_clip = concatenate_videoclips(clips)
final_clip.write_videofile("video.mp4")
# exiting the `with` block released the clips
for name in clip_names:
os.remove(name)
В этом подходе для отслеживания клипов используется ExitStack
.Когда программа выходит из блока with
, все контексты, переданные в enter_context
, закрываются, освобождая все клипы.