使用set_duration时的TypeError

时间:2016-12-22 03:25:39

标签: python moviepy

我正在尝试为视频片段添加音频。我希望根据视频片段的持续时间裁剪音频:

video_clip = mpy.VideoClip(make_counter, duration=12)
audio_clip = mpy.AudioFileClip("audio/ticking.mp3")
audio_clip = audio_clip.set_duration(video_clip) # <= Set the duration of the audio to the same as the video
video_file = "video_test.mp4"
video_clip = video_clip.set_audio(audio_clip)
video_clip.write_videofile(video_file, fps=24)

但是我收到了这个错误:

TypeError: unsupported operand type(s) for +: 'int' and 'instance'

在没有set_duration调用的情况下运行:呈现的视频在video_clip的最后一帧冻结,audio_clip继续,直到渲染的视频结束。

关于可能导致此错误的任何想法?

1 个答案:

答案 0 :(得分:0)

在第3行,您有audio_clip = audio_clip.set_duration(video_clip)docs州:

  

set_duration(t,change_end = True):

     

返回剪辑的副本,其duration属性设置为t,可以用秒(15.35),(min,sec),in(小时,分钟,秒)或字符串表示: 01:03:05.35' 。还设置返回剪辑的掩码和音频的持续时间(如果有)。

您使用video_clip作为参数t,但您需要使用长度。 Moviepy视频和音频剪辑具有属性持续时间:

  

持续时间:剪辑的持续时间(以秒为单位)。

因此,您可以使用video_clip.duration作为audio_clip.set_duration中时间的参数,它会在第3行给出最终结果:

audio_clip = audio_clip.set_duration(video_clip.duration) # <= Set the duration of the audio to the same as the video