MoviePy write_videofile занимает несколько часов

Я пытаюсь объединить каждый клип в каталоге, а также добавить вступление и завершение. В будущем я также буду добавлять функции редактирования, такие как масштабирование и поворот, поэтому я не вызываю ffmpeg напрямую, а вместо этого использую MoviePy.

Все работает гладко, пока final_vid.write_videofile(). Сначала он воспроизводит звук с довольно хорошей скоростью.

chunk:  55%|█████▍    | 8721/15977 [00:14<00:10, 672.54it/s, now=None]

Когда затем он пытается отрендерить видео, скорость значительно снижается до ожидаемого времени рендеринга 72 часов. Это работает на ryzen 2600 с 16 гигабайтами оперативной памяти, поэтому я сомневаюсь, что аппаратное обеспечение является узким местом.

t:   0%|          | 5/43473 [00:28<72:17:35,  5.99s/it, now=None]

Я пробовал это с разными кодеками, настройками fps, выключенным регистратором и несколькими другими настройками. Как мне ускорить это, поскольку это не может быть максимальной скоростью MoviePy?

Полный код ниже:

def edit(game):
intro = VideoFileClip("intro.mp4")
final_vid = intro

game = game.replace(" ", "")
game_treated = game.replace(" ", "%20")

for clip_name in os.listdir("current_vids"):
    new_clip = VideoFileClip(os.path.join("current_vids", clip_name), target_resolution=(1920, 1080))

    final_vid = concatenate_videoclips(clips=[final_vid, new_clip], method="compose")

outro = VideoFileClip("outro.mp4")
final_vid = concatenate_videoclips(clips=(final_vid, outro), method="compose")

final_vid.write_videofile(game + datetime.today().strftime("%Y-%m-%d") + ".mp4")

for clip_name in os.listdir("current_vids"):
    os.remove(os.path.join("current_vids", clip_name))

return game_treated + datetime.today().strftime("%Y-%m-%d") + ".mp4"

person Terty55    schedule 01.01.2021    source источник
comment
Чтобы добавить к этому, все файлы, которые я использую, имеют разрешение 1920x1080 60 кадров в секунду.   -  person Terty55    schedule 01.01.2021
comment
Используйте method='chain' вместо 'compose'   -  person Tom Burrows    schedule 01.01.2021
comment
@TomBurrows Большое спасибо, время сократилось до чуть более 20 минут.   -  person Terty55    schedule 01.01.2021