ImageClip.set_duration() 在 moviepy 中不起作用

ImageClip.set_duration() does not works in moviepy

我想从图像和音频制作视频文件。但是我无法导出视频。我收到了这个错误。 ValueError: Attribute 'duration' not set。我在图像剪辑上设置了持续时间。像这样。

    image_path = 'img/opening.png'
    audio_path = 'audio/opening.mp3'
    video_path = 'mov/opening.mp4'

    image_clip = ImageClip(image_path)
    audio_clip = AudioFileClip(audio_path)
    logging.info(f'audio_duration: {audio_clip.duration}')

    image_clip.set_duration(audio_clip.duration)
    image_clip.set_audio(audio_clip)
    logging.info(f'image_clip duration: {image_clip.duration}')
    
    image_clip.write_videofile(video_path)

这是结果。 audio_clip 有持续时间。但是image_clip不能设置持续时间。

INFO:root:audio_duration: 1.7
INFO:root:image_clip duration: None
Traceback (most recent call last):
  File "/Users/main/Library/Application Support/JetBrains/Toolbox/apps/PyCharm-P/ch-0/211.7142.13/PyCharm.app/Contents/plugins/python/helpers/pydev/pydevd.py", line 1483, in _exec
    pydev_imports.execfile(file, globals, locals)  # execute the script
  File "/Users/main/Library/Application Support/JetBrains/Toolbox/apps/PyCharm-P/ch-0/211.7142.13/PyCharm.app/Contents/plugins/python/helpers/pydev/_pydev_imps/_pydev_execfile.py", line 18, in execfile
    exec(compile(contents+"\n", file, 'exec'), glob, loc)
  File "/Users/main/project/video_maker/word_movie_maker.py", line 165, in <module>
    movie_maker.create_opening()
  File "/Users/main/project/video_maker/word_movie_maker.py", line 149, in create_opening
    image_clip.write_videofile(video_path)
  File "<decorator-gen-55>", line 2, in write_videofile
  File "/Users/main/project/video_maker/venv/lib/python3.9/site-packages/moviepy/decorators.py", line 52, in requires_duration
    raise ValueError("Attribute 'duration' not set")
ValueError: Attribute 'duration' not set

如果你有什么想法,请帮助我!

.set_duration().set_audio() 需要在 image_clip 上设置。

    image_clip = image_clip.set_duration(audio_clip.duration)
    image_clip = image_clip.set_audio(audio_clip)