Поскольку я не могу предоставить весь код, надеюсь, что смогу предоставить его достаточно, чтобы вы могли понять мою проблему. Это была моя первая попытка:
Код: Выделить всё
import pysrt
import torch
from moviepy import VideoFileClip
from moviepy.video.tools.subtitles import SubtitlesClip
from moviepy.video.compositing.CompositeVideoClip import CompositeVideoClip
Код: Выделить всё
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'
Код: Выделить всё
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(
Мне это показалось немного странным, потому что библиотеки, в которых отображаются ошибки, не входят в созданный мной 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 (например, другой
параметр шрифта), не вызовут конфликта.
После внесения предложенных изменений ничего не изменилось. Кто-нибудь знает, как решить эту проблему?