Python 中处理视频添加 / 替换音频

在 Python 中处理视频添加 / 替换音频,最常用的库是 moviepy(简单易用)和 ffmpeg-python(基于 FFmpeg,功能更底层)。以下是两种方案的详细实现,涵盖音频拼接、替换、音量调整、多音频混合等常见场景。

前置准备

安装依赖

核心库(moviepy封装了ffmpeg,推荐先装)

复制代码
pip install moviepy# 可选:直接调用ffmpeg的python封装(需先安装FFmpeg)
pip install ffmpeg-python# 安装FFmpeg(moviepy依赖,Windows需手动下载配置环境变量,Mac/Linux用brew/apt)
# Windows:https://ffmpeg.org/download.html,解压后将bin目录加入系统PATH
# Mac:brew install ffmpeg
# Ubuntu:sudo apt install ffmpeg

moviepy(简单高效,适合快速开发)

给视频替换 / 添加音频(覆盖原有音频)

复制代码
from moviepy.editor import VideoFileClip, AudioFileClip, CompositeAudioClip
def add_audio_to_video(video_path, audio_path, output_path, audio_volume=1.0):
    """
    给视频添加音频(替换原有音频)
    :param video_path: 原视频路径
    :param audio_path: 音频文件路径(mp3/wav等)
    :param output_path: 输出视频路径
    :param audio_volume: 音频音量(1.0为原音量,0.5为一半)
    """
    # 加载视频和音频
    video_clip = VideoFileClip(video_path)
    audio_clip = AudioFileClip(audio_path)
    
    # 调整音频音量
    audio_clip = audio_clip.volumex(audio_volume)
    
    # 匹配音频时长到视频时长(音频长则截断,短则循环/静音)
    if audio_clip.duration > video_clip.duration:
        audio_clip = audio_clip.subclip(0, video_clip.duration)
    else:
        # 音频较短时,循环音频(也可改为静音填充:audio_clip = audio_clip.audio_loop(duration=video_clip.duration))
        audio_clip = audio_clip.audio_loop(duration=video_clip.duration)
    
    # 给视频设置新音频
    video_clip = video_clip.set_audio(audio_clip)
    
    # 导出视频(编码可选,默认libx264,音频aac)
    video_clip.write_videofile(
        output_path,
        codec="libx264",  # 视频编码
        audio_codec="aac",  # 音频编码
        fps=video_clip.fps,  # 保持原帧率
        threads=4  # 多线程加速
    )
    
    # 释放资源
    video_clip.close()
    audio_clip.close()
# 调用示例if __name__ == "__main__":
    add_audio_to_video(
        video_path="input_video.mp4",
        audio_path="background_music.mp3",
        output_path="output_video.mp4",
        audio_volume=0.6   # 音频音量60%
    )

保留原视频音频,叠加背景音乐(混合双音频)

复制代码
from moviepy.editor import VideoFileClip, AudioFileClip, CompositeAudioClip
def mix_audio_with_video(video_path, bgm_path, output_path, bgm_volume=0.3, original_volume=1.0):
    """
    保留原视频音频,叠加背景音乐
    :param bgm_volume: 背景音乐音量
    :param original_volume: 原视频音频音量
    """
    # 加载视频(含原音频)和背景音乐
    video_clip = VideoFileClip(video_path)
    original_audio = video_clip.audio.volumex(original_volume)
    bgm_clip = AudioFileClip(bgm_path).volumex(bgm_volume)
    
    # 匹配背景音乐时长
    bgm_clip = bgm_clip.subclip(0, video_clip.duration) if bgm_clip.duration > video_clip.duration else bgm_clip.audio_loop(duration=video_clip.duration)
    
    # 混合音频
    mixed_audio = CompositeAudioClip([original_audio, bgm_clip])
    
    # 设置混合音频并导出
    video_clip = video_clip.set_audio(mixed_audio)
    video_clip.write_videofile(
        output_path,
        codec="libx264",
        audio_codec="aac",
        threads=4
    )
    
    # 释放资源
    video_clip.close()
    bgm_clip.close()
# 调用示例
mix_audio_with_video("input_video.mp4", "bgm.mp3", "output_with_bgm.mp4", bgm_volume=0.2)

编译



报错

复制代码
from moviepy.editor import VideoFileClip, AudioFileClip; print('moviepy安装成功!') ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ModuleNotFoundError: No module named 'moviepy.editor'
现在的核心问题是:即使尝试了换源安装,Python 依然找不到 moviepy 的 editor 模块,这说明安装过程存在「表面成功但实际文件缺失」或「环境完全不匹配」的问题。以下是终极排查 + 修复步骤,覆盖所有可能的根因:
检查 moviepy 的安装目录和文件完整性
执行以下命令,找到 moviepy 的安装位置,并检查关键文件是否存在:
# 1. 查看moviepy的安装路径(复制Location字段)
python -m pip show moviepy
# 2. 进入该路径,检查editor.py是否存在(以Windows为例,Mac/Linux替换路径)# 示例:假设Location是 F:\tools\python\Lib\site-packages\moviepy  # 查看是否有 editor.py 文件(Mac/Linux用 ls 命令)

不存在

网址下载:moviepy · PyPI

进入桌面目录

cd F:\tools

本地安装wheel包

python -m pip install moviepy-2.0.0-py3-none-any.whl


相关推荐
做萤石二次开发的哈哈2 小时前
连锁门店、园区、交通枢纽的视频如何统一汇集?应用模板的接入与分权管理详解
人工智能·物联网·音视频·二次开发·视频监控·蓝海aiot一站式工作台·萤石云开放平台
高级程序源2 小时前
django校园寻物通失物招领平台32261-计算机课程设计、毕业设计
vue.js·python·mysql·小程序·django·flask·课程设计
david_tym3 小时前
语音降噪模型GTCRN学习笔记(一)
音视频
WeiXin_DZbishe3 小时前
基于springboot宠物领养系统-计算机毕设 附源码【课程设计】94217
vue.js·spring boot·python·django·php·课程设计
kimnoic3 小时前
Python数据库学习心得:SQLite、MySQL、PostgreSQL优缺点
开发语言·python
snhna3 小时前
向量数据库深度实战:从 HNSW 到 pgvector、Milvus 选型与 RAG 落地
数据库·人工智能·python·postgresql·milvus
必须得开心呀4 小时前
python编写带界面的软件,需要安装哪些插件
开发语言·python
Wx-bishekaifayuan4 小时前
express皖美特色农产品网售系统53118-计算机课程设计、毕业设计
人工智能·spring boot·后端·python·课程设计·express·旅游
青少儿编程课堂4 小时前
迪杰斯特拉(Dijkstra)算法:单源最短路与赛场路线规划
c++·python·算法·bfs·信息学竞赛
计算机编程指导师5 小时前
【计算机毕设推荐】基于Hadoop+Spark的公共交通运营数据分析与可视化系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·hadoop·python·计算机·数据分析·spark·交通