ffmpeg切割音频

我希望对指定音频切割,按照开始时间,结束时间,切割成新文件,自动保存,非常好用

step1:

from pydub import AudioSegment
import os# 配置FFmpeg路径(确保路径正确)
ffmpeg_path = r"C:\ffmpeg\bin\ffmpeg.exe"
if os.path.exists(ffmpeg_path):AudioSegment.converter = ffmpeg_path
else:print("警告:未找到FFmpeg,将尝试使用系统路径中的FFmpeg")def trim_audio_file(input_path, output_path, start_time=0, end_time=20):"""剪切单个音频文件的指定时间段参数:input_path: 输入文件路径output_path: 输出文件路径start_time: 开始时间(秒),默认为0end_time: 结束时间(秒),默认为20"""try:# 验证输入文件存在if not os.path.exists(input_path):raise FileNotFoundError(f"输入文件不存在: {input_path}")# 获取文件扩展名ext = os.path.splitext(input_path)[1].lower()supported_extensions = ['.mp3', '.wav', '.flac', '.ogg', '.m4a']if ext not in supported_extensions:raise ValueError(f"不支持的音频格式: {ext}")print(f"正在处理: {os.path.basename(input_path)}")# 加载音频文件audio = AudioSegment.from_file(input_path)original_duration = audio.duration_secondsprint(f"原始文件时长: {original_duration:.2f}秒")# 转换为毫秒start_ms = start_time * 1000end_ms = end_time * 1000# 验证时间范围if start_ms < 0:start_ms = 0print(f"警告: 开始时间调整为0秒")if end_ms > len(audio):end_ms = len(audio)print(f"警告: 结束时间调整为文件末尾 ({end_ms / 1000:.2f}秒)")if start_ms >= end_ms:raise ValueError(f"无效的时间范围: {start_time}s-{end_time}s")# 剪切音频trimmed_audio = audio[start_ms:end_ms]# 确保输出目录存在os.makedirs(os.path.dirname(output_path), exist_ok=True)# 导出文件trimmed_audio.export(output_path, format=ext[1:])print(f"成功剪切: {start_time}s - {end_time}s")print(f"输出文件时长: {trimmed_audio.duration_seconds:.2f}秒")print(f"已保存至: {output_path}")return Trueexcept Exception as e:print(f"处理出错: {str(e)}")return Falseif __name__ == "__main__":# 固定文件路径input_path = r"D:\Users\wangrusheng\Downloads\r.mp3"  # TXT文件路径output_path = r"D:\Users\wangrusheng\Downloads\rad.mp3"  # TXT文件路径# 固定时间范围 (0-20秒)start_time = 0end_time = 60print("音频文件剪切工具")print("=" * 40)print(f"输入文件: {input_path}")print(f"输出文件: {output_path}")print(f"剪切范围: {start_time}秒 - {end_time}秒")# 处理文件print("\n开始处理...")success = trim_audio_file(input_path, output_path, start_time, end_time)if success:print("\n处理完成!")else:print("\n处理失败,请检查错误信息")

修改版本

from pydub import AudioSegment
import os
import subprocess# 配置FFmpeg路径(确保路径正确)
ffmpeg_dir = r"C:\Program Files\ffmpeg-8.0-essentials_build\bin"
ffmpeg_path = os.path.join(ffmpeg_dir, "ffmpeg.exe")
ffprobe_path = os.path.join(ffmpeg_dir, "ffprobe.exe")# 检查并设置路径
if os.path.exists(ffmpeg_path) and os.path.exists(ffprobe_path):AudioSegment.converter = ffmpeg_pathAudioSegment.ffprobe = ffprobe_path# 添加环境变量确保子进程能找到FFmpegos.environ["PATH"] = ffmpeg_dir + os.pathsep + os.environ["PATH"]
else:print("警告:未找到FFmpeg或FFprobe,将尝试使用系统路径中的FFmpeg")# 验证系统PATH中是否有FFmpegtry:subprocess.run(["ffmpeg", "-version"], check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)except Exception:print("错误:系统PATH中未找到FFmpeg,请检查安装")exit(1)def trim_audio_file(input_path, output_path, start_time=0, end_time=20):"""剪切单个音频文件的指定时间段"""try:# 验证输入文件存在if not os.path.exists(input_path):raise FileNotFoundError(f"输入文件不存在: {input_path}")# 获取文件扩展名ext = os.path.splitext(input_path)[1].lower()supported_extensions = ['.mp3', '.wav', '.flac', '.ogg', '.m4a']if ext not in supported_extensions:raise ValueError(f"不支持的音频格式: {ext}")print(f"正在处理: {os.path.basename(input_path)}")# 加载音频文件audio = AudioSegment.from_file(input_path)original_duration = audio.duration_secondsprint(f"原始文件时长: {original_duration:.2f}秒")# 转换为毫秒start_ms = start_time * 1000end_ms = end_time * 1000# 验证时间范围if start_ms < 0:start_ms = 0print(f"警告: 开始时间调整为0秒")if end_ms > len(audio):end_ms = len(audio)print(f"警告: 结束时间调整为文件末尾 ({end_ms / 1000:.2f}秒)")if start_ms >= end_ms:raise ValueError(f"无效的时间范围: {start_time}s-{end_time}s")# 剪切音频trimmed_audio = audio[start_ms:end_ms]# 确保输出目录存在os.makedirs(os.path.dirname(output_path), exist_ok=True)# 导出文件trimmed_audio.export(output_path, format=ext[1:])print(f"成功剪切: {start_time}s - {end_time}s")print(f"输出文件时长: {trimmed_audio.duration_seconds:.2f}秒")print(f"已保存至: {output_path}")return Trueexcept Exception as e:print(f"处理出错: {str(e)}")return Falseif __name__ == "__main__":# 固定文件路径input_path = r"D:\Users\wangrusheng\Downloads\r.mp3"output_path = r"D:\Users\wangrusheng\Downloads\rad.mp3"# 固定时间范围 (0-10秒)start_time = 0end_time = 10print("音频文件剪切工具")print("=" * 40)print(f"输入文件: {input_path}")print(f"输出文件: {output_path}")print(f"剪切范围: {start_time}秒 - {end_time}秒")# 处理文件print("\n开始处理...")success = trim_audio_file(input_path, output_path, start_time, end_time)if success:print("\n处理完成!")else:print("\n处理失败,请检查错误信息")

end

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/923564.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/923564.shtml
英文地址,请注明出处:http://en.pswp.cn/news/923564.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python 批量处理:Markdown 与 HTML 格式相互转换

文章目录引言与同类工具的优势对比Python 将 Markdown 转换为 HTMLPython 将 HTML 转换为 Markdown批量转换与自动化处理引言 在多平台内容分发与管理的场景中&#xff0c;文档格式转换已成为内容生态系统中的关键环节。Markdown 作为轻量级标记语言&#xff0c;以其语法简洁、…

御控物联网远程控制水泵启停智能自控解决方案

在农业灌溉、城市排水、工业供水等场景中&#xff0c;水泵作为核心设备&#xff0c;长期面临以下难题&#xff1a;人工依赖度高&#xff1a;需24小时值守&#xff0c;暴雨或干旱时响应滞后&#xff1b; 能耗浪费严重&#xff1a;空转、过载运行导致电费居高不下&#xff1b; …

RedisI/O多路复用:单线程网络模型epoll工作流程

epoll1. 在内核创建eventpoll结构体&#xff0c;返回句柄epfd&#xff08;唯一标识&#xff09;eventpoll包含存放被监听的fd的红黑树&#xff0c;和存放已就绪的fd的链表2. 将要监听的fd加入到epoll红黑树中&#xff0c;并设置callback回调函数callback触发时&#xff0c;就将…

SmartBear API Hub助力MCP开发,无缝、安全的连接AI与外部工具

人工智能&#xff08;AI&#xff09;技术的应用场景日益广泛&#xff0c;如何让不同的AI系统之间实现高效、无缝的交互&#xff0c;成为了业界的重要课题。随着人工智能技术的不断进步&#xff0c;模型上下文协议&#xff08;MCP&#xff09;应运而生。MCP为不同AI系统之间提供…

如何选择高性价比的iOS签名服务?关键因素与价格区间

作为一名摸爬滚打多年的开发者&#xff0c;我来和你聊聊怎么挑一个靠谱又不坑的iOS签名服务。这玩意儿选不好&#xff0c;轻则测试团队干瞪眼&#xff0c;重则App下架&#xff0c;用户投诉&#xff0c;简直是我们开发者的噩梦。别光看价格&#xff01;先想清楚你的核心需求在选…

MoonBit 正式加入 WebAssembly Component Model 官方文档 !

我们非常高兴地宣布&#xff0c;MoonBit 已正式收录在 WebAssembly Component Model 的官方文档中。这不仅是对 MoonBit 技术路线的一次肯定&#xff0c;也让我们有机会和 Rust、Go、C# 等语言一起&#xff0c;出现在开发者查阅组件模型的入口页面中。一、 关于 WebAssembly Co…

Python快速入门专业版(三十二):匿名函数:lambda表达式的简洁用法(结合filter/map)

目录引一、lambda表达式的基本语法&#xff1a;一行代码定义函数示例1&#xff1a;lambda表达式与普通函数的对比二、lambda表达式的应用场景&#xff1a;临时与灵活1. 临时使用&#xff1a;无需定义函数名的简单功能2. 作为参数传递给高阶函数三、结合filter()&#xff1a;筛选…

【LeetCode 每日一题】3025. 人员站位的方案数 I——(解法一)暴力枚举

Problem: 3025. 人员站位的方案数 I 文章目录整体思路完整代码时空复杂度时间复杂度&#xff1a;O(N^3)空间复杂度&#xff1a;O(1)整体思路 这段代码旨在解决一个几何计数问题&#xff1a;给定平面上的 n 个点&#xff0c;计算满足特定条件的“点对” (i, j) 的数量。 根据代…

Roo Code 诊断集成功能:智能识别与修复代码问题

这里是引用在日常编程中&#xff0c;遇到代码错误或警告是再常见不过的事。但如何高效定位并解决这些问题&#xff0c;往往考验开发者的经验和工具链的支持。 Roo Code 中有一项非常实用的功能——诊断集成&#xff08;Diagnostics Integration&#xff09;。它能够与 VSCode 的…

Redis 与微服务架构结合:高并发场景下的架构艺术

&#x1f50c; Redis 与微服务架构结合&#xff1a;高并发场景下的架构艺术 文章目录&#x1f50c; Redis 与微服务架构结合&#xff1a;高并发场景下的架构艺术&#x1f9e9; 一、微服务架构下的挑战⚠️ 典型痛点分析&#x1f4ca; 性能瓶颈对比⚙️ 二、Redis作为配置中心&a…

鸿蒙应用冷启动优化:本地 KV 缓存预热实战指南

在鸿蒙&#xff08;HarmonyOS&#xff09;应用开发中&#xff0c;冷启动速度直接影响用户的初始体验。许多应用在启动后需要加载大量常用配置&#xff08;如用户偏好设置、主题配置&#xff09;或基础数据&#xff08;如上次登录信息、常用功能参数&#xff09;&#xff0c;若每…

Java, Rust, C ++开发智能农业APP

# 智能化农业APP开发方案 - Java、Rust、C技术整合我将为您设计一个使用Java、Rust和C开发的智能化农业APP方案&#xff0c;专注于现代农业的数字化转型和智能化升级。## 系统架构设计 --------------------- | 移动客户端 (Android/iOS) | // Java/Kotlin (Android), Swift…

PHP在线客服系统 支持独立部署 双语言切换 离线消息推送

内容目录一、详细介绍二、效果展示1.部分代码2.效果图展示三、学习资料下载一、详细介绍 该在线客服系统是一款基于&#xff1a;Php MySql Swoole Vue3开发的独立部署的双语在线客服系统。 支持pch5网站、小程序、app各个用户端使用 【为什么要开发这款在线客服系统】 原…

小程序获取视频第一帧

最近我在做一个小程序项目,需要在单个页面里展示大量的视频列表,但有个头疼的限制:小程序官方规定,同一个页面上最多只能放5个 video 组件,超出这个数量,视频就会加载失败,根本无法播放。 这个需求可把我难住了。页面上足足有几十个视频,如果真放几十个 video 标签,不…

MATLAB 常用函数汇总大全和高级应用总结

基础应用 1. 基本数学运算函数函数功能示例abs(x)绝对值abs(-3) → 3sqrt(x)平方根sqrt(16) → 4exp(x)指数函数 exe^xexexp(1) → 2.7183log(x)自然对数log(exp(3)) → 3log10(x)常用对数&#xff08;以 10 为底&#xff09;log10(100) → 2sin(x), cos(x), tan(x)三角函数&am…

vue el-cascader级联选择器-地区三级选择问题记录

1.表单编辑回显问题处理-添加leaf叶子节点<el-form-item label"所在地区" prop"addressCode" required><el-cascader ref"cascader" v-model"form.addressCode" :props"props" change"addressChange" :c…

动态主机配置协议(DHCP)详解

一、 概述DHCP协议Dynamic Host Configuration Protocol &#xff0c;动态主机配置协议作用&#xff1a;动态的进行IP地址分配服务端的监听端口 67/udp客户端监听端口 68/udp网络架构 C/S&#xff1a;client/serverDHCP的优势提高配置效率减少配置错误DHCP的分配方式手动分配&a…

单变量单步时序预测 | TCN-LSTM时间卷积结合长短期记忆神经网络(MATLAB)

✅ 一、主要功能 该代码实现了一个结合时序卷积网络(TCN)和长短期记忆网络(LSTM)的混合深度学习模型,用于时间序列预测。具体任务是:利用前24个时间步的数据(输入特征维度为24),来预测下一个时间步的值(输出维度为1),属于单变量时间序列滚动预测。 ✅ 二、算法步骤…

【智能体】rStar2-Agent

rStar2-Agent 是一篇在大模型推理领域极具洞察力和工程实力的工作&#xff0c;它没有追求参数规模的堆砌&#xff0c;而是通过精巧的算法设计和系统优化&#xff0c;在一个14B的小模型上实现了媲美671B大模型的数学推理能力。 核心思想非常明确&#xff1a;让模型“想得更聪明”…

Coze源码分析-资源库-创建知识库-后端源码-核心技术与总结

11. 核心技术特点 11.1 知识库创建的分层架构设计 清晰的职责分离&#xff1a; API层&#xff08;knowledge_service.go&#xff09;&#xff1a;负责知识库创建请求处理、参数验证、响应格式化应用层&#xff08;knowledge.go&#xff09;&#xff1a;负责知识库创建业务逻辑编…