from moviepy.editor import VideoFileClip, AudioFileClip, vfx

def add_music_to_video(video_path, audio_path, fadein_duration=1, fadeout_duration=1, output_path='output_video.mp4'):
    """
    将音频添加到视频中，去除原视频音频，并设置音频的淡入淡出效果。

    Args:
        video_path (str): 原视频文件路径
        audio_path (str): 音频文件路径
        fadein_duration (int): 音频淡入时长（秒）
        fadeout_duration (int): 音频淡出时长（秒）
        output_path (str): 保存添加了音乐的视频文件路径
    """
    # 加载视频和音频
    video = VideoFileClip(video_path)
    audio = AudioFileClip(audio_path)
    
    # 输出视频时长
    duration = min(video.duration, audio.duration)

    # 视频倍速
    # video= video.fx(vfx.speedx, video.duration/5.0)

    # 设置音频的淡入淡出效果
    audio = audio.audio_fadein(fadein_duration).audio_fadeout(fadeout_duration)
    audio.set_duration(duration)

    # 将视频的音频替换为新的音频
    video = video.set_duration(duration)
    video = video.set_audio(audio)

    # 保存处理后的视频
    video.write_videofile(output_path, codec='libx264', audio_codec='aac', threads=4, preset="ultrafast")

    # 关闭视频和音频对象
    video.close()
    audio.close()

# 使用示例
if __name__ == "__main__":
    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')