干货|使用python进行音频格式转换

Pydub是一个基于ffmpeg的Python音频处理模块,封装了许多ffmpeg底层接口,因此用它来做音乐歌曲文件格式转换会非常方便。

FFmpeg在Linux平台下开发,但它同样也可以在其它操作系统环境中编译运行,包括Windows、Mac OS X等。

1.安装pydub库

安装Pydub前需要先安装ffmpeg:

下载安装ffmpeg,并配置环境变量

下载,解压,安装之后,打开计算机环境变量,在Path路径中添加ffmpeg中的bin目录路径

Mac (打开终端(Terminal), 用 homebrew 安装):

复制代码
brew install ffmpeg --with-libvorbis --with-sdl2 --with-theora

Linux:

复制代码
apt-get install ffmpeg libavcodec-extra

Windows:

  1. 进入 http://ffmpeg.org/download.html

  2. 解压下载好的zip文件到指定目录

  3. 将解压后的文件目录中 bin 目录(包含 ffmpeg.exe )添加进 path 环境变量中

上述ffmpeg安装成功后就可以打开命令提示符(cmd),安装pydub:

复制代码
pip install pydub

1.mp3->wav、ogg、flag等

将单个mp3音频文件转化为wav音频格式:

复制代码
from pydub import AudioSegmentdef trans_mp3_to_wav(filepath):    """    将mp3文件转化为wav格式    Args:        filepath (str): 文件路径    """    song = AudioSegment.from_mp3(filepath)    filename = filepath.split(".")[0]    song.export(f"{filename}.wav", format="wav")

可以继续封装该函数,将单个mp3文件转化为任意其他音乐音频格式:​​​​​​​

复制代码
from pydub import AudioSegmentdef trans_mp3_to_any_audio(filepath, audio_type):    """    将mp3文件转化为任意音频文件格式    Args:        filepath (str): 文件路径        audio_type(str): 文件格式    """    song = AudioSegment.from_mp3(filepath)    filename = filepath.split(".")[0]    song.export(f"{filename}.{audio_type}", format=f"{audio_type}")
如ogg格式:
复制代码
trans_mp3_to_any_audio("Alone.mp3", "ogg")

只要是ffmpeg支持的音乐音频格式,它都可以转换。

2.批量转化音频格式

现在,尝试将一个文件夹下的所有非mp3音频格式的文件转化为mp3音频格式:​​​​​​​

复制代码
def trans_all_file(files_path, target="mp3"):    """    批量转化音频音乐格式    Args:        files_path (str): 文件夹路径        target (str, optional): 目标音乐格式. Defaults to "mp3".    """    for filepath in os.listdir(files_path):        # 路径处理        modpath = os.path.dirname(os.path.abspath(sys.argv[0]))        datapath = os.path.join(modpath, files_path + filepath)        # 分割为文件名字和后缀并载入文件        input_audio = os.path.splitext(datapath)        song = AudioSegment.from_file(datapath, input_audio[-1].split(".")[-1])        # 导出        song.export(f"{input_audio[0]}.{target}", format=target)

只要输入文件夹名称,即可全部转化该文件夹下的音乐文件格式为mp3格式:

复制代码
trans_all_file("F:\\push\\20200607\\music\\")
相关推荐
吴声子夜歌1 小时前
ApacheCommons——commons-pool2(高性能通用对象池框架)
java·开发语言·apache
kruptos6 小时前
分布式系统怎么“选主“?Raft 共识一次讲清
开发语言·分布式·php·共识算法
吴声子夜歌6 小时前
ApacheCommons——commons-cli(命令行参数解析)
java·开发语言·apache
benchmark_cc7 小时前
REST API 和 Python SDK 应该怎么选?量化交易数据接口选型实战
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
王的宝库7 小时前
Go 项目结构:从单文件到标准工程布局
开发语言·后端·golang
Tairitsu_H7 小时前
[C++] 深入理解红黑树:封装set与map
开发语言·c++·set·map·红黑树·模拟实现
泡海椒8 小时前
JQuick-Curl 性能分析:并发场景下的性能表现与调优,第三方接口调用不只要快写也要稳跑
java·开发语言·okhttp
小智老师PMP8 小时前
2026深度解析|PMP第八版与NPDP核心侧重点本质区别(管理类证书怎么选)
开发语言·分布式·算法·职场和发展·产品经理
2601_962382438 小时前
python快乐编程网络爬虫课后答案
python·网络爬虫·学习工具·课后答案·刷题app
鹏哥带你干乡墅9 小时前
优选乡墅赋能培训平台如何帮助提升乡村建设?
大数据·人工智能·python