我正在尝试为视频片段添加音频。我希望根据视频片段的持续时间裁剪音频:
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
继续,直到渲染的视频结束。
关于可能导致此错误的任何想法?
答案 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