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

ffmpeg 切割音频文件,各种格式(wav, flac, mp3, m4a等)

动机

想要用pydub切割音频来制作数据集,结果发现ffmpeg不支持m4a格式的数据输出。

from pydub import AudioSegment
path = r"D:\data\upload"
save_path = r"D:\data\train\upload"

files = os.listdir(path)

for file in files:
    audio = AudioSegment.from_file(path+'\\'+file, "flac")

    size = 2000  # 切割的毫秒数 60s=60000
    chunks = make_chunks(audio, size)
    for i, chunk in enumerate(chunks):
        chunk_name = file.split('.')[0] + f"_{i}.flac"
        print(chunk_name)
        chunk.export(save_path+'\\'+chunk_name, format="flac")

报错信息:
Input #0, wav, from 'C:\Users\AAA\AppData\Local\Temp\tmp_g6wtefp':

Duration: 00:00:02.00, bitrate: 512 kb/s

Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 32000 Hz, 1 channels, s16, 512 kb/s [AVFormatContext @ 0000027c7f0bb680] Requested output format 'm4a' is not known.

解决办法

参考了大佬的使用 ffmpeg 来对音频文件(mp3、m4a 等)进行分割 方法,但是一条一条输命令太麻烦了,所以用python的os.system来试着自动化。这里记录一下方便以后使用。

files = os.listdir(path)

for file in files:
    # audio = AudioSegment.from_file(path+'\\'+file, "m4a")
    cmd = f"ffmpeg -i {path}\{file} -f segment -segment_time 2 -write_xing 0 -c copy {save_path}\{file.split('.')[0]}_%d.m4a"
    os.system(cmd)

ffmpeg -i file.m4a -f segment -segment_time 900 -write_xing 0 -c copy out%03d.m4a

  • -i:输入文件;
  • -f:强制格式,即目标格式,这里指定为 segment,即分割;
  • -segment_time:每段的时长,单位为秒,示例是按每 5 分钟来切割;
  • -c:指定编码名称(codec),这里我们不打算重新编码,于是用 copy,非常快;
  • write_xing 0:参数指示禁用Xing头部信息的写入

http://www.kler.cn/a/272211.html

相关文章:

  • 【深度学习项目】语义分割-DeepLab网络(DeepLabV3介绍、基于Pytorch实现DeepLabV3网络)
  • 可视化-numpy实现线性回归和梯度下降法
  • 【Pandas】pandas Series groupby
  • 如何使用CRM数据分析优化销售和客户关系?
  • 【Java】阿里环球Antom支付对接
  • 【大模型】ChatGPT 高效处理图片技巧使用详解
  • lua gc垃圾回收知识记录
  • 如何在MATLAB中处理图像和视频?
  • AJAX-XMLHttpRequest
  • Pytorch NLP入门3:用嵌入表示单词
  • 接口测试及接口测试工具【Postman】相关的面试题
  • 微信小程序Skyline模式自定义tab组件胶囊与原生胶囊平齐,安卓和ios均自适应
  • 类似web版Navicat mysql客户端==phpMyAdmin源码启动
  • 使用Python构建RESTful API的最佳实践【第137篇—RESTful API】
  • llama笔记:官方示例解析 example_chat_completion.py
  • Mysql数据库的多实例部署
  • (十七)【Jmeter】取样器(Sampler)之JSR223取样器
  • 基于STM32的智能衣柜系统设计
  • 访问者模式(Visitor Pattern)
  • Apache-Doris基础概念
  • 什么数据需要存在Redis里?缓存的缺点?怎样进行数据同步?
  • 基于Python的股票市场分析:趋势预测与策略制定
  • Qt文件以及文件夹相关类(QDir、QFile、QFileInfo)的使用
  • 安卓国产百度网盘与国外云盘软件onedrive对比
  • docker快速安装和详细安装-保姆教程
  • 蓝桥杯day2刷题日记