1

我正在尝试将音频添加到视频剪辑中。我希望根据视频剪辑的持续时间裁剪音频:

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_clipaudio_clip继续,直到渲染的视频结束。

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

4

1 回答 1

0

在第 3 行,您有audio_clip = audio_clip.set_duration(video_clip). 文档状态:

set_duration(t, change_end=True):

返回剪辑的副本,持续时间属性设置为 t,可以用秒 (15.35)、(min, sec)、(hour, min, sec) 或字符串表示:'01:03 :05.35'。还设置返回剪辑的蒙版和音频(如果有)的持续时间。

您正在使用video_clipas 参数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
于 2016-12-24T22:28:55.320 回答