【环球时快讯】Python 多种音乐格式批量转换实战教程
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:
1. 进入 http://ffmpeg.org/download.html#build-windows,点击 windows 对应的图标,进入下载界面点击 download 下载按钮。
2. 解压下载好的zip文件到指定目录。
3. 将解压后的文件目录中 bin 目录(包含 ffmpeg.exe )添加进 path 环境变量中。
(必须)按照上述ffmpeg安装步骤成功后就可以打开命令提示符(cmd)或终端(Terminal),安装pydub:
pip install pydub
2.mp3转wav或其他格式
将单个mp3音频文件转化为wav音频格式:
frompydub importAudioSegmentdeftrans_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文件转化为任意其他音乐音频格式:
frompydub importAudioSegmentdeftrans_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支持的音乐音频格式,它都可以转换,支持的格式长达几十个,下面我简单列一些:
wav | avi | mp4 | flv |
ogg | flac | ape | mp2 |
aiff | voc | au |
3.更加通用的转换函数
刚刚是mp3转任意音频格式,我希望把它写成任意音频格式转任意音频格式:
frompydub importAudioSegmentdeftrans_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音频格式:
deftrans_all_file(files_path, target="mp3"):"""批量转化音频音乐格式Args:files_path (str): 文件夹路径target (str, optional): 目标音乐格式. Defaults to "mp3"."""forfilepath inos.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\\")
看了我们今天的教程,学会这招后,你再也不用担心格式之间的转化问题,通过使用pydub模块你能轻易地解决这些问题。如果本篇文章对你有帮助,请在文末点个在看支持一下哦。
我们的文章到此就结束啦,如果你喜欢今天的Python 实战教程,请持续关注Python实用宝典。
有任何问题,可以在公众号后台回复:加群,回答相应红字验证信息,进入互助群询问。
原创不易,希望你能在下面点个赞和在看支持我继续创作,谢谢!
点击下方阅读原文可获得更好的阅读体验
Python实用宝典(pythondict.com)不只是一个宝典欢迎关注公众号:Python实用宝典
相关阅读
-
世界热推荐:今晚7:00直播丨下一个突破...
今晚19:00,Cocos视频号直播马上点击【预约】啦↓↓↓在运营了三年... -
NFT周刊|Magic Eden宣布支持Polygon网...
Block-986在NFT这样的市场,每周都会有相当多项目起起伏伏。在过去... -
环球今亮点!头条观察 | DeFi的兴衰与...
在比特币得到机构关注之后,许多财务专家预测世界将因为加密货币的... -
重新审视合作,体育Crypto的可靠关系才能双赢
Block-987即使在体育Crypto领域,人们的目光仍然集中在FTX上。随着... -
简讯:前端单元测试,更进一步
前端测试@2022如果从2014年Jest的第一个版本发布开始计算,前端开发... -
焦点热讯:刘强东这波操作秀
近日,刘强东发布京东全员信,信中提到:自2023年1月1日起,逐步为...