Ошибки Moviepy при использовании TextClipPython

Программы на Python
Anonymous
Ошибки Moviepy при использовании TextClip

Сообщение Anonymous »

У меня возникли проблемы с использованием библиотеки Moviepy, особенно при использовании SubtitlesClip().
Поскольку я не могу предоставить весь код, надеюсь, что смогу предоставить его достаточно, чтобы вы могли понять мою проблему. Это была моя первая попытка:

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

import pysrt
import torch
from moviepy import VideoFileClip
from moviepy.video.tools.subtitles import SubtitlesClip
from moviepy.video.compositing.CompositeVideoClip import CompositeVideoClip
из moviepy.video.VideoClip импортируйте TextClip

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

generator = lambda txt: TextClip(txt, font='Arial', fontsize=24, color='white', bg_color='black')
subtitles = SubtitlesClip(f"sub_{lang}.srt", make_textclip=generator)
Это привело к первой ошибке, которую я получил:

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

File "C:\Users\...\my_venv\Lib\site-packages\moviepy\video\VideoClip.py", line 1683, in __init__
raise ValueError(
ValueError: Invalid font , pillow failed to use it with error 'function' object has no attribute 'read'
После поиска на разных форумах я нашел это обсуждение здесь, на Stackoverflow. Это привело к созданию нового сценария:

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

subtitles = SubtitlesClip(f"sub_{lang}.srt", make_textclip=generator)
Это не сработало и привело к следующей ошибке:

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

File "C:\Users\...\my_venv\Lib\site-packages\decorator.py", line 231, in fun
args, kw = fix(args, kw, sig)
^^^^^^^^^^^^^^^^^^
File "C:\Users\...\my_venv\Lib\site-packages\decorator.py", line 203, in fix
ba = sig.bind(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\Python311\Lib\inspect.py", line 3195, in bind
return self._bind(args, kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\Python311\Lib\inspect.py", line 3134, in _bind
raise TypeError(
TypeError: несколько значений для аргумента «шрифт»
Мне это показалось немного странным, потому что библиотеки, в которых отображаются ошибки, не входят в созданный мной venv. В любом случае... Позже я попытался найти проблему с помощью LLM. Вот что рекомендует ChatGPT:

Ошибка возникает из-за того, что функции генератора субтитров
передаются дополнительные аргументы ключевых слов (в том числе один для шрифта) функцией
SubtitlesClip. В вашей лямбде вы также явно указываете
font='Arial', что приводит к конфликту.
Чтобы исправить это, измените функцию-генератор так, чтобы она принимала любые
дополнительные аргументы ключевых слов и игнорировала их. Например, измените
лямбду с:
generator = лямбда txt: TextClip(
txt, Font='Arial', Fontsize=24, color='white', bg_color='black' )
на:
generator = Lambda txt, **kwargs: TextClip(
txt, font='Arial', fontsize=24, color='white', bg_color='black' )
Таким образом, любые дополнительные аргументы, передаваемые SubtitlesClip (например, другой
параметр шрифта), не вызовут конфликта.

После внесения предложенных изменений ничего не изменилось. Кто-нибудь знает, как решить эту проблему?

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