MoviePy write_videofile работает очень медленноPython

Программы на Python
Ответить
Anonymous
 MoviePy write_videofile работает очень медленно

Сообщение Anonymous »

Поэтому я использую функцию concatenate_videoclips MoviePy, чтобы объединить два видеоклипа, на каждый из которых наложено изображение и некоторый текст. Когда я пишу видеофайл, на его создание уходит ЦЕЛЫХ 2 минуты. Когда я увеличил его примерно до 100 клипов с одинаковой информацией (изображение и наложенный текст), на 15-минутное видео ушло около 4 часов. Мне интересно, есть ли способ смягчить это время. MoviePy не подходит для чего-то подобного?
Мой пример работает со скоростью около 4 бит/с, причем оба видео имеют разрешение 1920x1080 и продолжительность обоих 10 секунд:

Код: Выделить всё

from moviepy.editor import *
from moviepy.config import change_settings

change_settings({"IMAGEMAGICK_BINARY": "D:\\ImageMagick-7.1.1-Q16-HDRI\\magick.exe"})

def create(vid_path: str) -> CompositeVideoClip:
vid: VideoFileClip = VideoFileClip(vid_path)
vid = vid.crossfadein(0.8)
vid = vid.crossfadeout(0.8)

name_square: ImageClip = ImageClip(".\\square.png")
name_square = name_square.set_position(('center', 856))
name_square = name_square.set_duration(vid.duration)
name_square = name_square.crossfadein(1)
name_square = name_square.crossfadeout(1)

name_text: TextClip = TextClip(txt="Hello", fontsize=90, color="gray", font="MomCake")
name_text = name_text.set_position(("center", 870))
name_text = name_text.set_duration(vid.duration)
name_text = name_text.crossfadein(1)
name_text = name_text.crossfadeout(1)

comp_clip: CompositeVideoClip = CompositeVideoClip([vid, name_text])
return comp_clip

final: VideoFileClip = concatenate_videoclips([create("vid1.mp4"), create("vid2.mp4")])
final.write_videofile(f"final_vid.mp4", threads=12, preset="ultrafast", ffmpeg_params=['-b:v','10000k'])
Характеристики моего компьютера:

Код: Выделить всё

Intel i7-9700K

Код: Выделить всё

32GB of memory

Код: Выделить всё

NVIDIA GeForce RTX 2060
Кажется, их должно быть более чем достаточно для такой работы. Также кажется, что MoviePy не использует мой графический процессор и перекладывает все кодирование видео на центральный процессор.
Я использую как можно больше функций ffmpeg MoviePy, чтобы ускорить работу, кроме функции write_videofile. все еще очень медленно. Я перепробовал все оптимизации, которые смог найти, но ни одна из них не изменила ситуацию. С некоторыми из них я могу значительно увеличить количество итераций в секунду, но после нескольких секунд обработки это число резко падает и возвращается к 3-5 итерациям в секунду. Некоторые из оптимизаций, которые я пробовал:

Код: Выделить всё

threads=12

Код: Выделить всё

preset="ultrafast"

Код: Выделить всё

audio=False

Код: Выделить всё

logger=False

Код: Выделить всё

ffmpeg_params=['-b:v','10000k']


Подробнее здесь: https://stackoverflow.com/questions/793 ... emely-slow
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»