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:
-
解压下载好的zip文件到指定目录
-
将解压后的文件目录中 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\\")