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_clipまでaudio_clip続きます。

このエラーの原因について何か考えはありますか?

4

1 に答える 1

0

3 行目に、 がありますaudio_clip = audio_clip.set_duration(video_clip)ドキュメントの状態:

set_duration(t, change_end=True):

秒 (15.35)、(分、秒)、(時、分、秒)、または文字列 '01:03 で表すことができる、duration 属性が t に設定されたクリップのコピーを返します。 :05.35分。また、返されたクリップのマスクとオーディオ (存在する場合) のデュレーションも設定します。

video_clipパラメータとしてを使用してtいますが、長さを使用する必要があります。Moviepy のビデオおよびオーディオ クリップには、duration 属性があります。

duration: クリップの長さ (秒単位)。

したがって、video_clip.duration時間のパラメーターとして使用して、audio_clip.set_duration3 行目の最終結果を得ることができます。

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 に答える