0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Pydub:一个基于ffmpeg的Python音频处理模块

科技绿洲 来源:Python实用宝典 作者:Python实用宝典 2023-10-21 10:40 次阅读

Pydub是一个基于ffmpeg的Python音频处理模块,封装了许多ffmpeg底层接口,因此用它来做音乐歌曲文件格式转换会非常方便。

如果你阅读过我们之前的文章:《剪辑音乐要很久?3行语句Python瞬间搞定》,你就知道 Pydub 有多么强大了。

今天给大家介绍它的音乐文件格式转换功能,几乎支持所有音乐音频格式,非常牛逼。

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)或终端(Terminal),安装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:push20200607music")

看了我们今天的教程,学会这招后,你再也不用担心格式之间的转化问题,通过使用** pydub**模块你能轻易地解决这些问题。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 终端
    +关注

    关注

    1

    文章

    998

    浏览量

    29597
  • 音频处理
    +关注

    关注

    0

    文章

    67

    浏览量

    17619
  • python
    +关注

    关注

    51

    文章

    4675

    浏览量

    83466
  • ffmpeg
    +关注

    关注

    0

    文章

    45

    浏览量

    7290
收藏 人收藏

    评论

    相关推荐

    【书籍评测活动NO.25】深入理解FFmpeg,带你FFmpeg从入门到精通

    ,是学习FFmpeg的不二之选。 —— 宋利,上海交通大学教授,“媒矿工厂”负责人 当进入新领域时,我会阅读对该领域有深刻理解的人所写的书籍,这是因为他们作品内容的准确性更高,能够帮助我更高效地进入
    发表于 11-15 14:26

    《深入理解FFmpeg阅读体验》ffmpeg安装

    书中讲了如何编译安装,我看了下比较复杂,所以下载安装包进行安装,下载网址:Download FFmpeg 下载完后解压出来在bin目录下面有三文件: 复制这个目录: C:\\\\Users
    发表于 01-25 21:35

    【Longan Pi 3H 开发板试用连载体验】给ChatGPT装上眼睛,并且还可以语音对话:5,音频采集

    python播放或录制音频,我们需要使用到ffmpeg。先从官方GitHub下载编译好的weindows build压缩包,shared和非shared都可以,这两版本的区别就是非
    发表于 04-16 11:12

    SIP网络音频模块 矿井求助对讲音频模块sv-2201vp

    音频模块
    a181231365
    发布于 :2023年02月16日 09:02:38

    Python常用时间处理操作汇总

    (localtime)#获取格式化时间time.sleep(3600)#定时1小时2.datetime模块datetime模块Python时间
    发表于 04-19 14:51

    Linux下的FFmpeg安装编译过程

    FFmpeg开源免费跨平台的视频和音频流方案,属于自由软件,采用LGPL或GPL许可证(依据你选择的组件)。
    发表于 07-23 08:38

    如何将ffmpeg移植到ARM平台

    [td]FFmpeg(Fast Forward Mpeg)是种可以用来记录、转换数字音频、视频,并能将其转化为流的多媒体视频处理工具,拥有视频采集功能、视频格式转换、视频抓图等功能。
    发表于 12-28 06:24

    K510能做哪些音频处理?支持了什么python音频处理库?

    麻烦问下,K510 能做哪些音频处理?支持了什么python 音频处理库?我们想用K510来做
    发表于 09-14 07:32

    关于FFmpeg深度学习相关内容的技术分享

    首先,为什么需要FFmpeg深度学习模块FFmpeg对输入的码流,首先进行解码,解码后得到一个个的视频帧,以及相应的音频数据等。经过一系列的Filter之后,最后可以进行重新编码或者
    的头像 发表于 09-04 10:52 1664次阅读
    关于<b class='flag-5'>FFmpeg</b>深度学习相关内容的技术分享

    在QT上构建ffmpeg环境实现音频的解码

    在QT上构建ffmpeg环境,实现音频的解码
    发表于 06-09 09:05 904次阅读
    在QT上构建<b class='flag-5'>ffmpeg</b>环境实现<b class='flag-5'>音频</b>的解码

    Hello FFmpeg

    ffmpeg是一个跨平台的音视频录制、转换、编解码的库。使用C语言编写而成,可在主流移动与PC平台上使用。ffmpeg不仅提供可嵌入到App中的库,还提供了可以直接使用的工具。
    的头像 发表于 03-03 09:52 383次阅读
    Hello <b class='flag-5'>FFmpeg</b>

    优化指南-FFmpeg构建和优化

    FFmpeg 是一个免费开源的完整跨平台解决方案,用于记录、转换和流传输音频和视频。
    的头像 发表于 06-15 09:04 883次阅读

    发烧友实测 | 用飞凌OKA40i-C开发板玩转FFmpeg

    FFmpeg的安装FFmpeg是用来记录、转换数字音频、视频的开源软件,它支持文件和网络流操作。
    的头像 发表于 12-16 15:52 519次阅读
    发烧友实测 | 用飞凌OKA40i-C开发板玩转<b class='flag-5'>FFmpeg</b>

    Pydub音乐文件格式转换功能介绍

    Pydub是一个基于ffmpegPython音频处理模块,封装了许多
    的头像 发表于 10-31 14:51 358次阅读

    python如何导入模块

    Python是一种强大的编程语言,它支持模块化编程,使得开发者可以将代码分解为可重用且独立的模块模块是一个包含函数、类和变量等定义的文件,我们可以使用import语句将这些
    的头像 发表于 11-22 14:46 532次阅读