Я пытаюсь объединить несколько наборов AudioFileClip и ImageClip в один фильм.Но у меня странная ошибка, я потратил много времени и пытался многое сделать, чтобы заставить его работать.
Я пытался:
- Создание одного объединенного аудиоклипа, а затемдобавление его к объединенным клипам изображений вместо добавления набора клипов изображений, к которым уже подключен звук
- Различные способы объединения клипов, например .set_audio, и использование временного аудиофайла при записи клипа в файл
- Тестирование аналогичной ситуации в консоли, которая работала
- Поиск и поиск по документам moviepy и предыдущим вопросам
from moviepy import editor as mp
from gtts import gTTS
from mutagen.mp3 import MP3
class test:
def __init__(self):
self.clips = []
def add_clip(self, text, picture_path, audio_path):
tts = gTTS(text)
tts.save(audio_path)
duration = MP3(audio_path).info.length
image_clip = mp.ImageClip(picture_path, duration=duration)
audio = mp.AudioFileClip(audio_path)
image_clip = image_clip.set_audio(audio)
self.clips.append(image_clip)
audio.close()
image_clip.close()
t = test()
t.add_clip("Hello", 'screenshots/t3_bgykzb/main.png', 'screenshots/t3_bgykzb/main.mp3')
t.add_clip("Hello", 'screenshots/t3_bgykzb/main2.png', 'screenshots/t3_bgykzb/main.mp3')
t.add_clip("Hello", 'screenshots/t3_bgykzb/main3.png', 'screenshots/t3_bgykzb/main.mp3')
main_clip = mp.concatenate_videoclips(t.clips)
main_clip.write_videofile(f'screenshots/movie.mp4', fps=24)
main_clip.close()
Я ожидаю, что это выведет файл mp4, который имеет3 клипа, каждый из которых говорит привет с помощью tts.TTS работает нормально и правильно выводит mp3, работает нормально, когда я закомментирую строку set_audio, но когда я объединяю все клипы в один mp4, возникает ошибка.
AttributeError: 'NoneType' object has no attribute 'get_frame'
Полная ошибка:https://mystb.in/ulusafajan.rb
Ни один из объектов в списке не является None, и я запутался, почему у объединенного клипа нет считывателя
Любая и вся помощь приветствуется!Спасибо!