pydub是一个基于ffmpeg的python音频处理模块,封装了许多ffmpeg底层接口,因此用它来做音乐歌曲文件格式转换会非常方便。
如果你阅读过我们之前的文章:《剪辑音乐要很久?3行语句python瞬间搞定》,你就知道 pydub 有多么强大了。
今天给大家介绍它的音乐文件格式转换功能,几乎支持所有音乐音频格式,非常牛逼。
1.安装
安装pydub前需要先安装 ffmpeg :
**(可选一) mac ** (打开终端(terminal), 用 homebrew 安装):
brew install ffmpeg --with-libvorbis --with-sdl2 --with-theora(可选二) linux:
apt-get install ffmpeg libavcodec-extra(可选三) windows:
进入 http://ffmpeg.org/download.html#build-windows,点击 windows 对应的图标,进入下载界面点击 download 下载按钮。解压下载好的zip文件到指定目录。将解压后的文件目录中 bin 目录(包含 ffmpeg.exe )添加进 path 环境变量中。**(必须) **按照上述ffmpeg安装步骤成功后就可以打开命令提示符(cmd)或终端(terminal),安装pydub:
pip install pydub2.mp3转wav或其他格式
将单个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支持的音乐音频格式,它都可以转换,支持的格式长达几十个,下面我简单列一些:
wavavimp4flv
ogg flac ape mp2
aiff voc au
3.更加通用的转换函数
刚刚是mp3转任意音频格式,我希望把它写成任意音频格式转任意音频格式:
from pydub import audiosegmentdef trans_any_audio_types(filepath, input_audio_type, output_audio_type): 将任意音频文件格式转化为任意音频文件格式 args: filepath (str): 文件路径 input_audio_type(str): 输入音频文件格式 output_audio_type(str): 输出音频文件格式 song = audiosegment.from_file(filepath, input_audio_type) filename = filepath.split(.)[0] song.export(f{filename}.{output_audio_type}, format=f{output_audio_type})比如将ogg音乐音频格式转化为flv音乐音频格式:
trans_any_audio_types(alone.ogg, ogg, flv)或者mp4格式,总之,一般你需要的格式它都能满足。
trans_any_audio_types(alone.ogg, ogg, mp4)4.批量转化音频格式
现在,尝试将一个文件夹下的所有非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:push20200607music)看了我们今天的教程,学会这招后,你再也不用担心格式之间的转化问题,通过使用** pydub**模块你能轻易地解决这些问题。
如何为多路复用器应用选择合适的Δ-Σ转换器产品
小米6、荣耀9对比评测:涨价成风下,麒麟对骁龙,谁输谁赢?看华为荣耀9的杀手锏
智能网联汽车信息安全实训平台-IVI的WiFi攻击实验
虚拟现实+医疗不断融合,中国虚拟现实市场潜力十足
魅族Flyme8系统截图曝光 有望在今年第四季度正式发布
Pydub音乐文件格式转换功能介绍
如何通过精益可视化工业电子看板实现信息化管理
温度记录仪在家用烤箱自动生产线测试中的应用
《中国移动2016年终端质量报告》 权威披露透露什么?
大数据怎样提高工作的质量和效率
铝带拉力测试机的原理和应用
索尼大投半导体图像传感器产业
自恢复保险丝PTC的过流保护原理解析
使用隔离放大器实现高成本效益的充分IGBT保护方案
又一家大型PCB公司入选2018国家技术创新示范企业名单
单元串联型变频器的特点
ARM Cortex-M学习笔记:初识Systick定时器
PCB寄生电容的影响、计算公式和消除措施
4路光栅尺磁栅尺编码器5MHz高速差分信号转RS485/232/WiFi模块 WJ167
mate40系列或将成为华为史上的绝代产品