0

I'd like to make video file from image and audio. However I can't export video. I got this error. ValueError: Attribute 'duration' not set. I set duration on image clip. like this.

    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)

This is the result. audio_clip has duration. However image_clip can not set duration.

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

If you have any idea, please help me!

Nori
  • 2,340
  • 1
  • 18
  • 41

1 Answers1

1

.set_duration() and .set_audio() were need set on image_clip.

    image_clip = image_clip.set_duration(audio_clip.duration)
    image_clip = image_clip.set_audio(audio_clip)
Nori
  • 2,340
  • 1
  • 18
  • 41