当前位置: 首页 > 后端技术 > Python

小工具批量将mp3音频格式转为wav格式

时间:2023-03-25 23:55:06 Python

最近收到朋友的请求,希望将MP3音频格式转为wav音频格式。因此,我用python写了这个小工具,方便批量转换操作。[阅读全文]首先,下载需要导入的python模块包。这里我们选择清华大学的镜像站来下载模块。pipinstallffmpy-ihttps://pypi.tuna.tsinghua.edu.cn/simple/然后导入需要依赖的python模块。fromffmpyimportFFmpegasmpy#音频格式转换对象importos#文件系统操作对象将所有的MP3音频文件放到一个统一的文件夹中,这样批量读取MP3文件时只需要读取一个文件夹,然后遍历即可。写一个函数,读取MP3音频文件所在文件路径下的所有音频文件。defread_folder(mp3_folder,wav_folder):'''文件夹读取函数:parammp3_folder::paramwav_folder::return:'''#遍历要转换的MP3文件夹中的MP3文件inos.listdir(mp3_folder):#创建MP3文件的绝对路径mp3_file=os.path.join(mp3_folder,a)#调用格式转换函数trans_to_wav(mp3_file,wav_folder)编写trans_to_wav函数,主要使用FFmpeg音频处理对象,使用runfunction执行旋转。对于其他主流文件格式的切片处理函数,多使用os模块的函数。deftrans_to_wav(mp3_file,wav_folder):'''格式转换format:parammp3_file::paramwav_folder::return:'''#格式化文件file_fmt=os.path.basename(mp3_file).strip()#获取文件格式file_fmt=file_fmt.split('.')[-1]#验证文件格式iffile_fmt.strip()!='mp3':raiseException('文件不是MP3格式,请检查!')eliffile_fmt.strip()=='':raiseException('文件格式异常,请检查!')#创建一个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='-fwav-ac1-ar16000'#创建转换器对象mpy_obj=mpy(inputs={mp3_file:None},outputs={wav_file_path:cmder})print('ExecuteCMDERcommand:{}'.format(mpy_obj.cmd))#执行转换mpy_obj.run()最后通过main函数调用整个应用程序执行,添加一些存在性检查的文件夹,你就完成了。if__name__=='__main__':'''Mainfunctionentry'''#InputMP3foldermp3_folder=input('EnterMP3folderpath:\n')#检查MP3文件夹是否存在ifmp3_folder.strip()=='':raiseException('Enteranullvalue,pleasecheck!')elifmp3_folder.strip()!='':ifos.path.exists(mp3_folder)isFalse:raiseException('文件路径不存在')#输入wav文件夹路径wav_folder=input('输入wav文件夹路径:\n')#检查wav文件夹是否存在ifwav_folder.strip()=='':raiseException('Enter一个空值,请检查!')elifwav_folder.strip()!='':ifos.path.exists(wav_folder)isFalse:raiseException('Thefilepathdoesnotexist')#Callfoldertoreadbatchfilesread_folder(mp3_folder,wav_folder)这就是我的实现方式。不知道有没有更好的办法处理。欢迎大家在评论区提出建议或意见。【优秀往期】不使用H5,直接使用pywebio模块实现网页的python回调函数,可以做什么?解决pyinstaller打包过程中无法加载外部资源的问题...pyqt5做了一个二维码生成器,已经打包成exe可执行程序...如何在控制台实现一个数据管理系统(包括MYSQL数据库的增删改查)