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

 更新时间:2022年06月27日 16:22:45   作者:Ckend  
Pydub是一个基于ffmpeg的Python音频处理模块,封装了许多ffmpeg底层接口,因此用它来做音乐歌曲文件格式转换会非常方便。今天给大家介绍它的音乐文件格式转换功能,几乎支持所有音乐音频格式,需要的可以参考一下

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支持的音乐音频格式,它都可以转换,支持的格式长达几十个,下面我简单列一些:

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

图片版代码:

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

到此这篇关于Python实战之多种音乐格式批量转换的文章就介绍到这了,更多相关Python音乐格式转换内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python与字符编码问题

    python与字符编码问题

    这篇文章主要介绍了python与字符编码问题,下面对编码问题做个简单的总结,感兴趣的朋友跟随小编一起看看吧
    2019-05-05
  • OpenCV+MediaPipe实现手部关键点识别

    OpenCV+MediaPipe实现手部关键点识别

    这篇文章主要介绍了如何通过OpenCV MediaPipe实现手部关键点识别,文中的示例代码讲解详细,对我们学习或工作有一定的价值,需要的可以参考一下
    2022-01-01
  • python批量修改图片大小的方法

    python批量修改图片大小的方法

    这篇文章主要为大家详细介绍了python批量修改图片大小的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07
  • Python3自定义http/https请求拦截mitmproxy脚本实例

    Python3自定义http/https请求拦截mitmproxy脚本实例

    这篇文章主要介绍了Python3自定义http/https请求拦截mitmproxy脚本实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05
  • 解决python报错:AttributeError: 'ImageDraw' object has no attribute 'textbbox'

    解决python报错:AttributeError: 'ImageDraw' object h

    这篇文章主要给大家介绍了关于解决python报错:AttributeError: 'ImageDraw' object has no attribute 'textbbox'的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2024-01-01
  • Pytorch运行过程中解决出现内存不足的问题

    Pytorch运行过程中解决出现内存不足的问题

    内存不足是很多人感到头疼的问题,本文主要介绍了Pytorch运行过程中解决出现内存不足的问题,具有一定的参考价值,感兴趣的可以了解一下
    2024-02-02
  • Python实现基于C/S架构的聊天室功能详解

    Python实现基于C/S架构的聊天室功能详解

    这篇文章主要介绍了Python实现基于C/S架构的聊天室功能,结合实例形式详细分析了Python实现聊天室功能的客户端与服务器端相关实现技巧与操作注意事项,需要的朋友可以参考下
    2018-07-07
  • YOLOv5车牌识别实战教程(四)模型优化与部署

    YOLOv5车牌识别实战教程(四)模型优化与部署

    这篇文章主要介绍了YOLOv5车牌识别实战教程(四)模型优化与部署,在这个教程中,我们将一步步教你如何使用YOLOv5进行车牌识别,帮助你快速掌握YOLOv5车牌识别技能,需要的朋友可以参考下
    2023-04-04
  • python 转换 Javascript %u 字符串为python unicode的代码

    python 转换 Javascript %u 字符串为python unicode的代码

    这篇文章主要介绍了python 转换 Javascript %u 字符串为python unicode的代码,需要的朋友可以参考下
    2016-09-09
  • tensorflow-gpu2.3版本安装步骤

    tensorflow-gpu2.3版本安装步骤

    这篇文章主要介绍了tensorflow-gpu2.3版本安装步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04

最新评论