Создание видео из клипов на moviepy с отображением только последнего изображения

Я пытаюсь сделать видео из списка изображений, используя moviepy. У меня проблемы с использованием moviepy.editor, так как он не любит замораживания с помощью PyInstaller, поэтому я использую moviepy.video.VideoClip.ImageClip для изображений и moviepy.video.compositing.CompositeVideoClip.CompositeVideoClip для клипа. У меня есть список .jpg изображений в списке под названием images:

from moviepy.video.VideoClip import ImageClip
from moviepy.video.compositing.CompositeVideoClip import CompositeVideoClip

clips = [ImageClip(m).set_duration(1) for m in images]
concat_clip = CompositeVideoClip(clips))
concat_clip.write_videofile('VIDEO.mp4', fps=1)

Он успешно делает .mp4, но видео длится всего одну секунду и является последним изображением в списке изображений. Я могу проверить clips, там есть ~30 изображений, которые должны быть в видео. Я могу сделать это, используя методы из moviepy.editor после этот вопрос и ответ SO, но похоже, что в CompositeVideoClip нет аналогичного параметра для method='compose', в чем я думаю проблема.


person TheStrangeQuark    schedule 22.11.2017    source источник
comment
set_duration установлено на 1? а почему у тебя fps1? Если вы просто работаете с изображениями, ffmpeg работает намного лучше и быстрее: изображения">stackoverflow.com/questions/24961127/   -  person user1767754    schedule 22.11.2017
comment
Я знаю, что ffmpeg был бы лучше, но я не могу использовать его в своей работе. У меня set_duration и fps установлены на 1, потому что каждое изображение должно отображаться в течение 1 секунды, а видео будет со скоростью 1 кадр в секунду, чтобы сделать размер файла как можно меньше.   -  person TheStrangeQuark    schedule 22.11.2017


Ответы (1)


использование concatenate_videoclips может помочь. Я использую приведенный ниже код, и он отлично работает.

clips = [ImageClip(m).set_duration(1/25)
         for m in file_list_sorted]
concat_clip = concatenate_videoclips(clips, method="compose")
concat_clip.write_videofile("test.mp4", fps=25)
person Yusra Shahid    schedule 30.07.2018