add_music.py 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. from moviepy.editor import VideoFileClip, AudioFileClip, vfx
  2. def add_music_to_video(video_path, audio_path, fadein_duration=1, fadeout_duration=1, output_path='output_video.mp4'):
  3. """
  4. 将音频添加到视频中,去除原视频音频,并设置音频的淡入淡出效果。
  5. Args:
  6. video_path (str): 原视频文件路径
  7. audio_path (str): 音频文件路径
  8. fadein_duration (int): 音频淡入时长(秒)
  9. fadeout_duration (int): 音频淡出时长(秒)
  10. output_path (str): 保存添加了音乐的视频文件路径
  11. """
  12. # 加载视频和音频
  13. video = VideoFileClip(video_path)
  14. audio = AudioFileClip(audio_path)
  15. # 输出视频时长
  16. duration = min(video.duration, audio.duration)
  17. # 视频倍速
  18. # video= video.fx(vfx.speedx, video.duration/5.0)
  19. # 设置音频的淡入淡出效果
  20. audio = audio.audio_fadein(fadein_duration).audio_fadeout(fadeout_duration)
  21. audio.set_duration(duration)
  22. # 将视频的音频替换为新的音频
  23. video = video.set_duration(duration)
  24. video = video.set_audio(audio)
  25. # 保存处理后的视频
  26. video.write_videofile(output_path, codec='libx264', audio_codec='aac', threads=4, preset="ultrafast")
  27. # 关闭视频和音频对象
  28. video.close()
  29. audio.close()
  30. # 使用示例
  31. if __name__ == "__main__":
  32. add_music_to_video('output/video_clips/show-clip.mp4', 'data/music_file/music.mp3', fadein_duration=3, fadeout_duration=3, output_path='music_video.mp4')