python+ffmpeg给音频添加背景音乐
说明:
我希望用python,将name.mp3这段录音文件,添加背景音乐,bg.mp3,然后生成新的文件
step1: 添加依赖
pip install pydub
step2:下载ffmpeg
1.打开windows powershell ,管理员运行
2.winget install ffmpeg
3.大约160M,等待下载成功
4.关闭windows powershell
5.重新打开windows powershell
6.验证
7.where ffmpeg
8.where ffprobe
9.ffmpeg --version
10.ffprobe --version
如果没报错,说明安装成功
step3:在这里创建文件C:\Users\wangrusheng> python hello.py
from pydub import AudioSegment
import osAudioSegment.converter = r"C:\Users\wangrusheng\AppData\Local\Microsoft\WinGet\Links\ffmpeg.exe"# 输入文件路径
name_path = r"C:\Users\wangrusheng\Documents\name.mp3"
bg_path = r"C:\Users\wangrusheng\Documents\bg.mp3"
output_path = r"C:\Users\wangrusheng\Documents\combineds.mp3"# 加载音频文件
name_audio = AudioSegment.from_mp3(name_path)
bg_audio = AudioSegment.from_mp3(bg_path)# 计算主音频长度
duration = len(name_audio)# 延长背景音乐至与主音频同长(循环)
bg_repeated = bg_audio
while len(bg_repeated) < duration:bg_repeated += bg_audio # 循环叠加
bg_repeated = bg_repeated[:duration] # 截取相同长度# 降低背景音量(可选,示例降低7分贝)
bg_repeated = bg_repeated - 7# 混合音频(保留主音频,叠加背景)
combined = name_audio.overlay(bg_repeated)# 导出文件
combined.export(output_path, format="mp3")print(f"合并完成,文件已保存至:{output_path}")
step4:重新打开windows powershell ,管理员运行
PS C:\WINDOWS\system32> pwdPath
----
C:\WINDOWS\system32PS C:\WINDOWS\system32> cd ..
PS C:\WINDOWS> cd ..
PS C:\> cd C:\Users\wangrusheng
PS C:\Users\wangrusheng> python --version
Python 3.12.9
PS C:\Users\wangrusheng> python hello.py
合并完成,文件已保存至:C:\Users\wangrusheng\Documents\combined.mp3
PS C:\Users\wangrusheng>
step5:去这个目录,C:\Users\wangrusheng\Documents\combined.mp3,打开文件,播放音频
///分割线
step1:fastapi
from fastapi import FastAPI
from pydub import AudioSegment
import osapp = FastAPI()# 固定路径配置
AudioSegment.converter = r"C:\Users\wangrusheng\AppData\Local\Microsoft\WinGet\Links\ffmpeg.exe"
NAME_PATH = r"C:\Users\wangrusheng\Documents\name.mp3"
BG_PATH = r"C:\Users\wangrusheng\Documents\bg.mp3"
OUTPUT_PATH = r"C:\Users\wangrusheng\Documents\combineds.mp3"@app.get("/combine-audio")
def combine_audio():try:# 加载音频文件name_audio = AudioSegment.from_mp3(NAME_PATH)bg_audio = AudioSegment.from_mp3(BG_PATH)# 计算并循环背景音乐duration = len(name_audio)bg_repeated = bg_audiowhile len(bg_repeated) < duration:bg_repeated += bg_audiobg_repeated = bg_repeated[:duration]# 调整音量并混合bg_repeated = bg_repeated - 7combined = name_audio.overlay(bg_repeated)# 导出文件combined.export(OUTPUT_PATH, format="mp3")return {"status": "success", "output_path": OUTPUT_PATH}except Exception as e:return {"status": "error", "message": str(e)}@app.get("/")
def health_check():return {"status": "ready"}
step2:在windows power shell里面 ,安装fastapi
PS C:\Users\wangrusheng> pip install fastapi uvicorn
step3:运行
PS C:\Users\wangrusheng> uvicorn hello:app --reload
[32mINFO[0m: Will watch for changes in these directories: ['C:\\Users\\wangrusheng']
[32mINFO[0m: Uvicorn running on [1mhttp://127.0.0.1:8000[0m (Press CTRL+C to quit)
[32mINFO[0m: Started reloader process [[36m[1m41936[0m] using [36m[1mStatReload[0m
[32mINFO[0m: Started server process [[36m39540[0m]
[32mINFO[0m: Waiting for application startup.
[32mINFO[0m: Application startup complete.
[32mINFO[0m: 127.0.0.1:55553 - "[1mGET /combine-audio HTTP/1.1[0m" [32m200 OK[0m
step4:在postman里面
get : http://localhost:8000/combine-audio{"status": "success","output_path": "C:\\Users\\wangrusheng\\Documents\\combineds.mp3"
}
step5:去本地路径打开,新生成的mp3文件
end
相关文章:
python+ffmpeg给音频添加背景音乐
说明: 我希望用python,将name.mp3这段录音文件,添加背景音乐,bg.mp3,然后生成新的文件 step1: 添加依赖 pip install pydubstep2:下载ffmpeg 1.打开windows powershell ,管理员运行 2.winget install ff…...
bootstrap 表格插件bootstrap table 的使用经验谈!
最近在开发一个物业管理软件,其中用到bootstrap 的模态框。同时需要获取表格数据。用传统的方法,本人不想用,考虑到bootstrap应该有获取表格数据的方法,结果发现要想实现获取表格数据功能,需要通过bootstrap的插件实现…...
Spring Boot框架识别
1. 通过icon图标进行识别 2、如果 web 应用开发者没有修改 SpringBoot Web 应用的默认 4xx、5xx 报错页面,那么当 web 应用程序出现 4xx、5xx 错误时,会报错如下图: 其他页面 工具一把梭哈...
【MySQL】【已解决】Windows安装MySQL8.0时的报错解决方案
一、引言 先说一些没用的话,据说安装MySQL是无数数据库初学者的噩梦,我在安装的时候也是查了很多资料,看了很多博客,但是很多毕竟每个人的电脑有各自不同的情况,大家的报错也不尽相同,所以也是很长时间之后…...
基于linux平台的C语言入门教程(7)类型转换
文章目录 1. 什么是类型转换?2. 隐式类型转换隐式类型转换的规则: 3. 显式类型转换显式类型转换的语法: 4. 示例代码代码解析:输出结果: 5. 常见问题问题 1:隐式类型转换会导致数据丢失吗?问题 …...
MES汽车零部件制造生产监控看板大屏
废话不多说,直接上效果 预览效果请在大的显示器查看,笔记本可能有点变形 MES汽车零部件制造生产监控看板大屏 纯html写的项目结构如下 主要代码分享 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UT…...
晶鑫股份迈向敏捷BI之路,永洪科技助力启程
数据驱动的时代,每一次技术的创新和突破都在为企业的发展注入新的动力。而敏捷性也不再是选择,是企业生存与发展的必要条件。作为连续5年获得中国敏捷BI第一名的永洪科技,通过不断地在数据技术领域深耕细作,再次迎来了行业内的关注…...
Browser Use Web UI 本地部署完全指南:从入门到精通
文章目录 引言一、项目概述1.1 核心功能1.2 技术特点 二、环境准备2.1 系统要求2.2 必要工具 三、详细部署步骤3.1 获取项目代码3.2 配置 Python 环境3.3 安装项目依赖3.4 环境配置3.5 启动应用 四、DeepSeek-V1 模型配置4.1 基础配置 五、执行Browser Use六、故障排查指南6.1 …...
Java单例模式、懒汉模式、饿汉模式和懒加载
好的!我们来详细讲解单例模式、懒汉模式、饿汉模式和懒加载,争取让你看完就懂! 🟦 一、单例模式(Singleton Pattern) 定义:确保一个类只有一个实例,并提供一个全局访问点。 应用场…...
Linux 内核源码阅读——ipv4
Linux 内核源码阅读——ipv4 综述 在 Linux 内核中,IPv4 协议的实现主要分布在 net/ipv4/ 目录下。以下是一些关键的源文件及其作用: 1. 协议栈核心 net/ipv4/ip_input.c:处理接收到的 IPv4 数据包(输入路径)。net…...
nginx5天时间从0到熟练掌握学习计划
要在 5 天内熟练地在项目中使用 Nginx,需要制定一个高效的学习计划,重点学习 Nginx 的核心功能和实际应用。以下是一个详细的学习计划,帮助你从零开始掌握 Nginx。 学习目标 掌握 Nginx 的基本概念和安装方法。能够配置 Nginx 托管静态文件、…...
宝塔平替!轻量级开源 Linux 管理面板 mdserver-web
本文首发于只抄博客,欢迎点击原文链接了解更多内容。 前言 想必很多人刚接触 Linux 云服务器的时候都听过或者用过宝塔面板,对于小白来说,使用面板大大降低了服务器运维的难度,一键安装 LNMP 环境就可以建站了,像是 N…...
蓝桥杯 劲舞团
问题描述 小蓝最近迷上了一款名为 “劲舞团” 的游戏。 在游戏中,只要按照给出的键位提示依次按出对应的键位,游戏人物便可以跟随节奏跳舞。 对于连续的 K 次正确敲击,如果任意连续两次敲击之间的时间间隔都小于等于 1 秒(即 1…...
基于springboot+vue的网络海鲜市场
开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…...
QT开发(6)--信号和槽
这里写目录标题 1. 信号和槽概述信号的本质槽的本质 2. 信号和槽的使用2.1 连接信号和槽2.2 文档查询 3.自定义信号和槽3.1 自定义槽3.2 自定义信号3.3 带参数的信号和槽 4. 信号和槽的断开 1. 信号和槽概述 在Qt中,⽤⼾和控件的每次交互过程称为⼀个事件。⽐如&quo…...
Linux部署DHCP服务脚本
#!/bin/bash #部署DHCP服务 #userli 20250319#检查是否为root用户 if[ "$USER" ! "root" ] thenecho "错误:非root用户,权限不足!"exit 0 fi#配置网络环境 read -ep "请给本机配置一个IP地址(不…...
Dervy数据库
Derby 和 Sqlite 数据库都是无需安装的数据库 Derby 和 Sqlite 数据库的配置与使用_derby sqlite-CSDN博客 Derby数据库简明教程_原味吐司-腾讯云---开发者社区 下载 对于jdk1.8及以上 Apache Derby 10.14.2.0 Release 进入bin 找到 启动服务端 进入bin目录 实际上是启…...
Pythonic编程设计风格解析
Python 作为一种“优雅”、“简洁”、“明确”的编程语言,自诞生以来便以其极强的可读性和简洁的语法风靡全球。然而,真正掌握 Python 并不仅仅是会写 Python 代码,更在于是否写出了Pythonic 风格的代码。什么是 Pythonic?Guido v…...
优化 SQL 语句方向和提升性能技巧
优化 SQL 语句是提升 MySQL 性能的关键步骤之一。通过优化 SQL 语句,可以减少查询时间、降低服务器负载、提高系统吞吐量。以下是优化 SQL 语句的方法、策略和技巧: 一、优化 SQL 语句的方法 1. 使用 EXPLAIN 分析查询 作用:查看 SQL 语句的执行计划,了解查询是如何执行的…...
Json的应用实例——cad 二次开发c#
以下是一个使用AutoCAD C#.NET API实现你需求的示例代码,代码实现了提示用户选择一个实体,将一些字符串变量及其对应的值组成JSON格式数据存储到实体的扩展数据(XData)中,并在弹出窗口中显示该实体的所有扩展数据信息。…...
[AI速读]CHISEL vs. SystemVerilog:用RISC-V核心对比两种硬件设计语言
在硬件设计领域,选择合适的语言对开发效率、维护成本和最终性能都至关重要。最近,一项研究对比了两种硬件描述语言——CHISEL(基于Scala的嵌入式语言)和传统的SystemVerilog,它们分别实现了同一款RISC-V核心(SweRV-EL2)。以下是关键发现和结论。 为什么选择CHISEL? CHI…...
颠覆者的困局:解构周鸿祎商业哲学中的“永恒战争”
引言:被误解的破坏者 在北京海淀区知春路银谷大厦的某间会议室里,周鸿祎用马克笔在白板上画出一个巨大的爆炸图案——这是2010年360与腾讯开战前夜的战术推演场景。这个充满硝烟味的瞬间,恰是《颠覆者》精神内核的完美隐喻:在中国…...
免费送源码:Java+springboot+MySQL 房屋租赁系统小程序的设计与实现 计算机毕业设计原创定制
目 录 摘要 1 1 绪论 1 1.1选题意义 1 1.2开发现状 1 1.3springboot框架介绍 1 1.4论文结构与章节安排 1 2 房屋租赁系统小程序系统分析 3 2.1 可行性分析 3 2.1.1 技术可行性分析 3 2.1.2 经济可行性分析 3 2.1.3 法律可行性分析 3 2.2 系统功能分析 3 2.2.1 功…...
【计算机网络原理】选择题+简答题
文章目录 选择题网络基础IP网络拓扑 OSI七层模型协议HDLCTCP/IP 交换技术网络安全数字签名 算法与策略 简答题UDPTCP 选择题 网络基础 下列域名中,属于国际顶级域名的是() A. us B. tom C. edu D. int 下列关于光纤传输介质的叙述中错误的是…...
个人学习编程(3-22) leetcode刷题
连续子数组:(难) 示例 1: 输入: nums [0,1] 输出: 2 说明: [0, 1] 是具有相同数量 0 和 1 的最长连续子数组。 示例 2: 输入: nums [0,1,0] 输出: 2 说明: [0, 1] (或 [1, 0]) 是具有相同数量0和1的最长连续子数组。 需要理解的知识&a…...
基于python+django的酒店预定网站-酒店管理系统源码+运行步骤+课程学习
该系统是基于pythondjango开发的酒店预定管理系统。适用场景:大学生、课程作业、毕业设计。学习过程中,如遇问题可在github给作者留言。共同学习技术 演示地址 前台地址: http://hotel.gitapp.cn 后台地址: http://hotel.gitapp…...
Spring 6: 3容器-Ioc
3、容器:IoC IoC 是 Inversion of Control 的简写,译为“控制反转”,它不是一门技术,而是一种设计思想,是一个重要的面向对象编程法则,能够指导我们如何设计出松耦合、更优良的程序。 Spring 通过 IoC 容…...
【漫话机器学习系列】154.岭回归(Ridge Regression)
岭回归(Ridge Regression)详解 1. 引言 岭回归(Ridge Regression)是一种改进的线性回归方法,它通过引入正则化项来解决普通最小二乘法(OLS, Ordinary Least Squares)可能遇到的多重共线性问题…...
wsl2配置xv6全解(包括22.04Jammy)
文章目录 获取xv6源代码Ubuntu20.04 Version安装指令成功测试参考MIT2021年官方文档 24.04 Version安装指令成功测试参考MIT2024年官方文档 Ubuntu 22.04没有官方文档? 配置大体流程1. 卸载原本qemu(如果之前安装了)2. clone qemu官方源代码&…...
并查集——108. 冗余连接
108. 冗余连接 题目描述 有一个图,它是一棵树,他是拥有 n 个节点(节点编号1到n)和 n - 1 条边的连通无环无向图(其实就是一个线形图),如图: 现在在这棵树上的基础上,添加一条边(依然是n个节点,但有n条边),使这个图变成了有环图,如图: 先请你找出冗余边,删除后…...
