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")

微信公众号里代码字体实在是太大了,而且有时候没有高亮提醒,这里多提供一个图片版代码(下同):

Python实战之多种音乐格式批量转换

可以继续封装该函数,将单个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}")

图片版代码:

Python实战之多种音乐格式批量转换

如ogg格式:

trans_mp3_to_any_audio("Alone.mp3", "ogg")

只要是ffmpeg支持的音乐音频格式,它都可以转换,支持的格式长达几十个,下面我简单列一些:

wavavimp4flv
oggflacapemp2
aiffvocau 

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}")

图片版代码:

Python实战之多种音乐格式批量转换

比如将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)

图片版代码:

Python实战之多种音乐格式批量转换

只要输入文件夹名称,即可全部转化该文件夹下的音乐文件格式为mp3格式:

trans_all_file("F:\\push\\20200607\\music\\")

来源:https://mp.weixin.qq.com/s/5IhYzOmCQkPTqEBCg_pw8Q

标签:Python,音乐,格式,转换
0
投稿

猜你喜欢

  • 弄清Pytorch显存的分配机制

    2023-05-22 22:12:44
  • 基于Python编写一个自动关机程序

    2023-07-30 08:19:20
  • php+lottery.js实现九宫格抽奖功能

    2024-04-17 10:34:28
  • Python jieba库用法及实例解析

    2021-04-15 22:11:44
  • Python+matplotlib实现华丽的文本框演示代码

    2021-07-19 08:19:51
  • javascript scrollLeft,scrollWidth,clientWidth,offsetWidth 完全详解

    2024-04-22 22:28:47
  • 扫盲大讲堂:mysql出错的代码解析及解答

    2009-09-05 10:08:00
  • Python 中将二进制转换为整数的多种方法

    2023-01-11 17:30:53
  • Python中的列表知识点汇总

    2021-06-01 05:00:50
  • hover悬停放大的翻页效果

    2008-05-19 12:20:00
  • Python编译为二进制so可执行文件实例

    2023-03-05 06:30:36
  • Linux(Ubuntu)下mysql5.7.17安装配置方法图文教程

    2024-01-25 21:28:32
  • python实现发送带附件的邮件代码分享

    2021-11-24 12:28:30
  • Go语言基础for循环语句的用法及示例详解

    2024-02-07 16:15:34
  • 详解OpenCV图像的概念和基本操作

    2021-07-22 02:05:30
  • Go 实现百万WebSocket连接的方法示例

    2024-02-22 17:05:01
  • Vue + Node.js + MongoDB图片上传组件实现图片预览和删除功能详解

    2024-05-10 14:14:56
  • MySql字符串拆分实现split功能(字段分割转列)

    2024-01-15 03:12:03
  • PyQt5实现简单的计算器

    2022-09-27 07:44:39
  • Linux系统下Mysql使用简单教程(一)

    2024-01-16 20:26:51
  • asp之家 网络编程 m.aspxhome.com