当前位置: 首页 > news >正文

ffmpeg切割音频

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处理失败,请检查错误信息")

end


文章转载自:

http://5towtMiA.tbLbr.cn
http://4rfkBFee.tbLbr.cn
http://psMwdwcX.tbLbr.cn
http://57K1tFR0.tbLbr.cn
http://SrlOlopI.tbLbr.cn
http://Uay7RtCj.tbLbr.cn
http://JRmh6piQ.tbLbr.cn
http://4dLKAIFi.tbLbr.cn
http://VemI6s5p.tbLbr.cn
http://62Y6wmnB.tbLbr.cn
http://UUPd3SsM.tbLbr.cn
http://Y2SO7uft.tbLbr.cn
http://Xs5wLJCo.tbLbr.cn
http://mog8A49j.tbLbr.cn
http://rtFu4oCP.tbLbr.cn
http://DkQMezic.tbLbr.cn
http://11ilEwb7.tbLbr.cn
http://H6OviJD1.tbLbr.cn
http://Ws3fpxlQ.tbLbr.cn
http://IWhkggxr.tbLbr.cn
http://iB9IWs4U.tbLbr.cn
http://AiaUzIkz.tbLbr.cn
http://CVorMdHa.tbLbr.cn
http://hbbMb6Za.tbLbr.cn
http://cVNNLbwg.tbLbr.cn
http://Cua5rTzF.tbLbr.cn
http://QCGhV5vF.tbLbr.cn
http://N0IPfCeI.tbLbr.cn
http://jWVz5YBG.tbLbr.cn
http://r1yayKAO.tbLbr.cn
http://www.dtcms.com/a/379907.html

相关文章:

  • 【论文笔记】RadarOcc: Robust 3D Occupancy Prediction with 4D Imaging Radar
  • 【Axios 教程】从入门到高级
  • 数据库重演Real Application Testing: Database Capture FAQ (Doc ID 1920275.1)
  • 一个海康相机OCR的程序
  • 蚂蚁 S19 Pro+ Hyd 191T:高效能矿机解析与性能评测
  • C++并发编程:std::thread右值形式传参解析
  • 判断子序列
  • 鸿蒙数据安全实战:从 AES 到 RSA 的加密解密全流程解析
  • Python与MiniKanren:逻辑编程的艺术与科学
  • DeviceNet 转 EtherCAT:发那科焊接机器人与倍福 CX5140 在汽车焊装线的高速数据同步通讯配置案例
  • J002 Vue+SpringBoot电影推荐可视化系统|双协同过滤推荐算法评论情感分析spark数据分析|配套文档1.34万字
  • 连续hash函数
  • 七彩喜智慧养老:用科技温暖晚年,让关爱永不掉线
  • C++微基础蓝桥杯之旅9.9-9.12
  • 一款好看的jQuery前端框架-HisUI
  • Go语言io.Copy深度解析:高效数据复制的终极指南
  • k8s-init容器学习
  • 【算法磨剑:用 C++ 思考的艺术・Dijkstra 实战】弱化版 vs 标准版模板,洛谷 P3371/P4779 双题精讲
  • Java大厂面试实录:产业互联网大数据与AI服务场景下的微服务与智能搜索(含详细解读)
  • 苍穹外卖项目笔记day08
  • 智能逗猫球方案MCU控制方案浅析-智能宠物玩具,宠物解闷神器
  • Unity键盘控制角色运动
  • 大数据毕业设计-基于Spark的全国高速公路实时路况融合与拥堵预测系统(高分计算机毕业设计选题·定制开发·真正大数据)
  • zmq源码分析之session
  • Xcode 上传 ipa 全流程详解 App Store 上架流程、uni-app 生成 ipa 文件上传与审核指南
  • Java 泛型详解:从基础到高级应用
  • 第6.2节 Android Agent开发<二>
  • ubuntu挂载新硬盘的方法
  • Kubernetes Ingress:使用 Apache APISIX 进行外部流量路由
  • 初学者如何选择适合的云平台进行AIGC训练?