环境

python3.11,pycharm

python对于音频和视频的合并以及自动裁剪,方法(库)很多,下面是常用的几个方法

方法

  • 方法1:使用moviepy库合并视频音频

如果没有安装,可以使用pip安装:

pip install moviepy
使用moviepy合并视频和音频
from moviepy.editor import AudioFileClip, VideoFileClip, CompositeVideoClip


def merge_and_trim_audio_video(video_file, audio_file, output_file):
    # 读取视频和音频文件
    video = VideoFileClip(video_file)
    audio = AudioFileClip(audio_file)

    # 获取视频和音频的时长
    video_duration = video.duration
    audio_duration = audio.duration

    # 如果音频比视频长,裁剪音频
    if audio_duration > video_duration:
        audio = audio.subclip(0, video_duration)
        # 如果视频比音频长,你可能想要重复音频或保持视频静音,这里我们选择裁剪视频
    elif video_duration > audio_duration:
        video = video.subclip(0, audio_duration)

        # 合并音频和视频
    final_clip = video.set_audio(audio)

    # 写入输出文件
    final_clip.write_videofile(output_file, codec='libx264', audio_codec='aac')


# 使用示例
merge_and_trim_audio_video(r'D:\test\video.mp4', r'D:\test\眉飞色舞.mp3', r'D:\test\output.mp4')

python 音频和视频合并自动裁剪_python

期间如果碰到生成临时文件无权限写c盘问题,使用管理员权限重新开启pycharm即可


  • 方法2:使用ffmpeg-python库裁剪视频
import ffmpeg

# 裁剪视频的命令
input_file = r'D:\test\output.mp4'
output_file = r'D:\test\output-2.mp4'
start_time = 10  # 裁剪开始时间(秒)
duration = 20    # 裁剪持续时间(秒)

ffmpeg.input(input_file, ss=start_time).output(output_file, t=duration).run()

这里是生成一个从10秒到20秒的新视频


  • 方法3:使用pydub库裁剪音频
from pydub import AudioSegment

# 加载音频文件
audio = AudioSegment.from_file("r'D:\test\眉飞色舞.mp3'")

# 裁剪音频
start_time = 10  # 开始裁剪的时间(毫秒)
duration = 2000  # 裁剪持续时间(毫秒)

audio = audio[start_time:start_time+duration]

# 导出裁剪后的音频
audio.export("r'D:\test\眉飞色舞-cut.mp3'", format="mp3")