Python使用pydub实现M4A转MP3转换器

 更新时间:2024年11月01日 11:16:14   作者:winfredzhang  
这篇文章主要介绍了如何使用 wxPython 创建一个图形用户界面(GUI)应用程序,能够将 .m4a 文件转换为 .mp3 文件,感兴趣的可以了解下

在现代数字生活中,我们常常需要处理不同格式的音频文件。今天,我将与大家分享一个简单的 Python 项目,它使用 wxPython 创建一个图形用户界面(GUI)应用程序,能够将 .m4a 文件转换为 .mp3 文件。这个项目还将教你如何使用 pydub 库进行音频处理。

C:\pythoncode\new\m4atomp3.py

项目概述

我们的应用程序具备以下功能:

  • 选择源文件夹,包含需要转换的 .m4a 文件。
  • 选择目标文件夹,保存转换后的 .mp3 文件。
  • 点击按钮进行文件转换。
  • 转换完成后,打开目标文件夹以查看结果。

准备工作

在开始编码之前,请确保你已安装以下库:

pip install pydub

此外,还需要安装 ffmpeg,这是 pydub 进行音频转换所必需的。你可以从 FFmpeg 官方网站 下载并安装。

编写代码

下面是完整的代码示例:

import os
import wx
from pydub import AudioSegment

class AudioConverter(wx.Frame):
    def __init__(self):
        super().__init__(parent=None, title='M4A to MP3 Converter')
        panel = wx.Panel(self)

        self.source_dir = ''
        self.target_dir = ''

        # 布局
        self.source_button = wx.Button(panel, label='选择源文件夹')
        self.target_button = wx.Button(panel, label='选择目标文件夹')
        self.convert_button = wx.Button(panel, label='转换')
        self.open_button = wx.Button(panel, label='打开目标文件夹')

        self.source_button.Bind(wx.EVT_BUTTON, self.on_select_source)
        self.target_button.Bind(wx.EVT_BUTTON, self.on_select_target)
        self.convert_button.Bind(wx.EVT_BUTTON, self.on_convert)
        self.open_button.Bind(wx.EVT_BUTTON, self.on_open)

        vbox = wx.BoxSizer(wx.VERTICAL)
        vbox.Add(self.source_button, flag=wx.EXPAND|wx.ALL, border=5)
        vbox.Add(self.target_button, flag=wx.EXPAND|wx.ALL, border=5)
        vbox.Add(self.convert_button, flag=wx.EXPAND|wx.ALL, border=5)
        vbox.Add(self.open_button, flag=wx.EXPAND|wx.ALL, border=5)

        panel.SetSizer(vbox)
        self.Show()

    def on_select_source(self, event):
        with wx.DirDialog(self, "选择源文件夹") as dialog:
            if dialog.ShowModal() == wx.ID_OK:
                self.source_dir = dialog.GetPath()
                wx.MessageBox(f'选择的源文件夹: {self.source_dir}')

    def on_select_target(self, event):
        with wx.DirDialog(self, "选择目标文件夹") as dialog:
            if dialog.ShowModal() == wx.ID_OK:
                self.target_dir = dialog.GetPath()
                wx.MessageBox(f'选择的目标文件夹: {self.target_dir}')

    def on_convert(self, event):
        if not self.source_dir or not self.target_dir:
            wx.MessageBox('请先选择源文件夹和目标文件夹!')
            return

        for filename in os.listdir(self.source_dir):
            if filename.endswith('.m4a'):
                m4a_path = os.path.join(self.source_dir, filename)
                mp3_path = os.path.join(self.target_dir, f"{os.path.splitext(filename)[0]}.mp3")
                audio = AudioSegment.from_file(m4a_path, format='m4a')
                audio.export(mp3_path, format='mp3')

        wx.MessageBox('转换完成!')

    def on_open(self, event):
        if self.target_dir:
            os.startfile(self.target_dir)  # Windows
            # For Linux, use: subprocess.call(['xdg-open', self.target_dir])
            # For Mac, use: subprocess.call(['open', self.target_dir])
        else:
            wx.MessageBox('请先选择目标文件夹!')

if __name__ == '__main__':
    app = wx.App(False)
    frame = AudioConverter()
    app.MainLoop()

代码解析

创建窗口:使用 wx.Frame 创建主窗口,并在窗口中添加按钮。

选择文件夹:通过 wx.DirDialog 允许用户选择源和目标文件夹。

转换音频:使用 pydub 库的 AudioSegment 类,将 .m4a 文件转换为 .mp3 文件。

打开目标文件夹:转换完成后,利用 os.startfile() 打开目标文件夹,方便用户查看结果。

运行程序

确保你已经安装了所需的库和工具,运行代码后,你将看到一个简单易用的图形界面。按照提示选择文件夹,点击转换按钮,即可完成音频格式的转换。

结果

到此这篇关于Python使用pydub实现M4A转MP3转换器的文章就介绍到这了,更多相关Python pydub M4A转MP3内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python scatter函数用法实例详解

    python scatter函数用法实例详解

    这篇文章主要介绍了python scatter函数用法实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • numpy.random.seed()的使用实例解析

    numpy.random.seed()的使用实例解析

    这篇文章主要介绍了numpy.random.seed()的使用实例解析,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2018-02-02
  • 使用sklearn对多分类的每个类别进行指标评价操作

    使用sklearn对多分类的每个类别进行指标评价操作

    这篇文章主要介绍了使用sklearn对多分类的每个类别进行指标评价操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • Python OpenCV实现基本图形绘制

    Python OpenCV实现基本图形绘制

    这篇文章主要介绍了Python OpenCV实现基本图形绘制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • python 爬取B站原视频的实例代码

    python 爬取B站原视频的实例代码

    这篇文章主要介绍了python 爬取B站原视频的实例代码,帮助大家更好的理解和使用python 爬虫,感兴趣的朋友可以了解下
    2020-09-09
  • 使用actor-critic方法来控制CartPole-V0 游戏详解

    使用actor-critic方法来控制CartPole-V0 游戏详解

    这篇文章主要为大家介绍了使用actor-critic方法来控制CartPole-V0 游戏详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • 跟老齐学Python之用while来循环

    跟老齐学Python之用while来循环

    while,翻译成中文是“当...的时候”,这个单词在英语中,常常用来做为时间状语,while ... someone do somthing,这种类型的说法是有的。
    2014-10-10
  • Pycharm如何自动生成头文件注释

    Pycharm如何自动生成头文件注释

    这篇文章主要介绍了Pycharm如何自动生成头文件注释,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • 使用python-docx生成的Word文档打开时弹出“无法读取内容“警告的解决方案

    使用python-docx生成的Word文档打开时弹出“无法读取内容“警告的解决方案

    这篇文章主要介绍了使用python-docx基于WPS模板生成.docx报告文件时,用Microsoft Word打开会弹出“无法读取内容”警告的问题及其解决方案,需要的朋友可以参考下
    2026-05-05
  • python 非线性规划方式(scipy.optimize.minimize)

    python 非线性规划方式(scipy.optimize.minimize)

    今天小编就为大家分享一篇python 非线性规划方式(scipy.optimize.minimize),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02

最新评论