Python实战之多种音乐格式批量转换
作者:Ckend 发布时间:2023-07-12 20:24:42
Pydub是一个基于ffmpeg的Python音频处理模块,封装了许多ffmpeg底层接口,因此用它来做音乐歌曲文件格式转换会非常方便,如果你阅读过我们之前的文章:3行Python代码实现剪辑音乐 你就知道它有多么强大了。
今天给大家介绍它的音乐文件格式转换功能,几乎支持所有音乐音频格式,非常强大。
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),安装pydub:
pip install pydub
2.mp3转wav或其他格式
将单个mp3音频文件转化为wav音频格式:
from pydub import AudioSegment
def 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 AudioSegment
def 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支持的音乐音频格式,它都可以转换,支持的格式长达几十个,下面我简单列一些:
wav | avi | mp4 | flv |
ogg | flac | ape | mp2 |
aiff | voc | au |
3.更加通用的转换函数
刚刚是mp3转任意音频格式,我希望把它写成任意音频格式转任意音频格式:
from pydub import AudioSegment
def 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:\\push\\20200607\\music\\")
来源:https://mp.weixin.qq.com/s/5IhYzOmCQkPTqEBCg_pw8Q
猜你喜欢
- 1.cv2.threshold()参数说明cv2.threshold(src, thresh, maxval, type[, dst]) &
- 所谓“评论”不是必须得有文本框,用户录入提交数据才算,广义上的评论包括用户的任何“表态”,典型如打分。我接触电子商务时间并不长,最早应该是0
- 如下所示:python 设置值import pandas as pdimport numpy as npdates = pd.date_ra
- 对str类型数据进行split操作如下:>>> s = 'abc\ndef'>>> s.
- 很多网站现在都有使用QQ作为在线客服工具,我们点击它可以很方便的和网站人员联系,本站为你整理了在网站上使用QQ在线客服的代码,共13种风格,
- 在处理数据的时候,经常会碰到CSV类型的文件,下面将介绍如何读取当前目录下的CSV文件,步骤如下1、获取当前目录所有的CSV文件名称:#创建
- 有很多对于PHP的抱怨,甚至这些抱怨也出自很多聪明的人。当Jeff Atwood写下对于PHP的另一篇抱怨文章之后,我思考了下PHP的好的方
- 写一个类似linux head的小工具,在window下用。head.py # -*- coding: UTF-8 -*-#!/u
- 在Python2中datetime对象没有timestamp方法,不能很方便的生成epoch,现有方法没有处理很容易导致错误。关于Epoch
- 我写的这个程序import tensorflow as tfsess=tf.InteractiveSession()x=tf.Variabl
- 1. 定义生成树# -*- coding: utf-8 -*-#生成树的函数from numpy import * import numpy
- python与C的区别如下:1、语言类型不同。Python是一种动态类型语言,又是强类型语言。它们确定一个变量的类型是在您第一次给它赋值的时
- 用python的matplotlib画图时,往往需要加图例说明。如果不设置任何参数,默认是加到图像的内侧的最佳位置。import matpl
- Python3进制之间的转换在Python里面实现进制之间的转换是非常方便的,有专门的函数来进行这个操作:下面直接上代码:# 进制之间的转换
- 今天遇到一个需要用javascript将url中的某些参数替换的需求,想起了不久前从网上淘到了一个parseUrl函数,正好可以借此实现,代
- 本文实例讲述了Python读取文件内容的三种常用方式。分享给大家供大家参考,具体如下:本次实验的文件是一个60M的文件,共计392660行内
- 主要采用的技术点Python + Numpy + PIL在正文代码开始前,大家先看看最初原图和转换手绘风图片前后对比。当然了,我先查了手绘的
- 目录Python协程及asyncio基础知识定义协程函数及执行方法的演变创建协程任务的演变获取协程任务执行结果通过asyncio.gathe
- 废话不多说了直接给大家介绍canvas实现手机端用来上传用户头像的代码,具体代码如下所示:<!DOCTYPE html><
- 在php中使用Xajax能够即时与数据库发生交互带给用户更好的体验主要的应用有网页的即时、不刷新的登录系统也可以利用于注册系统中即时验证用户