Python实现将mp3音频格式转换为wav格式
作者:Python集中营 发布时间:2023-09-18 15:50:02
标签:Python,mp3,wav
最近收到一个朋友委托的需求,要将MP3的音频格式转换成wav的音频格式。于是,使用python写了这个小工具便于批量进行转换操作。
首先,下载需要导入的python模块包。这里选用清华大学的镜像站进行模块的下载。
pip install ffmpy -i https://pypi.tuna.tsinghua.edu.cn/simple/
然后,导入需要依赖的python模块。
from ffmpy import FFmpeg as mpy # 音频格式转换对象
import os # 文件系统操作对象
将所有的MP3音频文件都放入到统一的文件夹下面,这样在批量读取的时候只需要读取一个文件夹中的MP3文件,然后进行遍历。
编写函数来读取MP3音频文件所在的文件路径下的所有音频文件。
def read_folder(mp3_folder, wav_folder):
'''
文件夹读取函数
:param mp3_folder:
:param wav_folder:
:return:
'''
# 遍历需要转换的MP3文件夹中的MP3文件
for a in os.listdir(mp3_folder):
# 创建MP3文件的绝对路径
mp3_file = os.path.join(mp3_folder, a)
# 调用格式转换函数
trans_to_wav(mp3_file, wav_folder)
编写trans_to_wav函数,其中用到的主要是FFmpeg音频处理对象以及使用run函数执行转转。其余的主要文件格式的切片处理函数,os模块的函数用的居多。
def trans_to_wav(mp3_file, wav_folder):
'''
格式转换格式
:param mp3_file:
:param wav_folder:
:return:
'''
# 格式化文件
file_fmt = os.path.basename(mp3_file).strip()
# 获取文件格式
file_fmt = file_fmt.split('.')[-1]
# 校验文件格式
if file_fmt.strip() != 'mp3':
raise Exception('改文件不是MP3格式,请检查!')
elif file_fmt.strip() == '':
raise Exception('文件格式出现异常,请检查!')
# 创建wav的文件以供转换完成后输出
wav_file_path = os.path.join(wav_folder)
wav_file_path = os.path.join(wav_file_path, '{}.{}'.format(
os.path.basename(mp3_file).strip().split('.')[0], 'wav'
))
# 创建转换时的命令行参数字符串
cmder = '-f wav -ac 1 -ar 16000'
# 创建转换器对象
mpy_obj = mpy(
inputs={
mp3_file: None
},
outputs={
wav_file_path: cmder
}
)
print('执行CMDER 命令:{}'.format(mpy_obj.cmd))
# 执行转换
mpy_obj.run()
最后,通过main函数调起整个应用执行,再加上一些文件夹存在与否的校验就大功告成了。
if __name__ == '__main__':
'''
主函数入口
'''
# 输入MP3文件夹
mp3_folder = input('输入MP3文件夹路径:\n')
# 校验MP3文件夹是否存在
if mp3_folder.strip() == '':
raise Exception('输入空值,请检查!')
elif mp3_folder.strip() != '':
if os.path.exists(mp3_folder) is False:
raise Exception('文件路径不存在')
# 输入wav文件夹路径
wav_folder = input('输入wav文件夹路径:\n')
# 校验wav文件夹是否存在
if wav_folder.strip() == '':
raise Exception('输入空值,请检查!')
elif wav_folder.strip() != '':
if os.path.exists(wav_folder) is False:
raise Exception('文件路径不存在')
# 调用文件夹读取批量文件
read_folder(mp3_folder, wav_folder)
来源:https://www.cnblogs.com/lwsbc/p/15764240.html
0
投稿
猜你喜欢
- 本文实例讲述了php查找指定目录下指定大小文件的方法。分享给大家供大家参考。具体实现方法如下:php查找文件大小的原理是遍历目录然后再利用f
- 如果在 Access 数据库中删除数据或对象,或者在 Access 项目中删除对象,Access 数据库或 Access 项目可能会产生碎片
- 当一个页面上有一百个表单项,你是怎么获取上面的值勤的?这是一段简单的代码,你试试这段代码,试过后,欢迎留言说一下你的想法?index.asp
- 今天发现百度图片搜索结果的2级页面改版了,在浏览图片的时候很好用:如图:在浏览图片的时候,右侧的缩略图是这样交互的:因此,在整个浏览图片的过
- 对url进行编码在服务器端我们可以使用asp中的server.urlencode,很方便实现。如:<% ss="asp之家欢
- 任何东西只要跟Google有关就总能给我们带来点儿惊喜,2008年9月2日发布的Google Chrome浏览器也不例外。Google Ch
- 如果你能很好的理解我下面的一句话,那这些都不是问题了。asp是服务器端语言,它的作用是动态生成客户端浏览器所能识别的html css jav
- 如何验证日期输入是否正确?我们可以利用ASP 3.0里的On Error Resume Next来完成这项功能:<%Option&nb
- 介绍目前它是Python数值计算中最为重要的基础包,将numpy的数组的对象作为数据交互的通用语,一般我们要充分理解好矩阵计算的原理,这需要
- 首先是三张表, CNo对应的是课程,在这里我就粘贴了。主表人名表按照常规查询SELECT s.SName, c.CName,s2.SCgra
- 最近在用fso,读取txt文本文件的内容时碰到了“输入超出了文件尾 ”的运行错误,当txt中的内容为空的时候就出现这个问题了,查了
- python3字符串操作 x = 'abc' y = 'defgh' print(x + y)
- sql exist的妙用create table b(a varchar(10),b varchar(10),c varchar(10))i
- 代码如下:function HTMLEncode(fString) fString=Replace(fString,&q
- asp ajax json教程首先用ACCESS建json.mdb的库,然后建一个表t_jsontable,字段如下:jt_id,jt_na
- 现在的高手真是越来越多,我刚发现一个版主兄竟然在不支持数据库的ISP免费主页上使用数据库,套用QQ聊天的一句话就是:Faint!明明人家IS
- 使用 Response.Redirect "aspxhome.asp" 转向方法的HTTP Status Code 为3
- CSS3 + HTML5是未来的Web,它们都还没有正式到来,虽然不少浏览器已经开始对它们提供部分支持。本文介绍了5个CSS3技巧,可以帮你
- 作为一名数据库管理员,在进行代码迁移之前,我总是尽力给提交于开发环境的代码一个完整的面貌。但是,不得不承认,我不能保证不发生任何可能破坏开发
- 代码如下:Class template Private c_Char, c_Path, c