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

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

项目概述

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

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

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

pip install pydub

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

编写代码

下面是完整的代码示例:

import os
import wx
from pydub import AudioSegmentclass 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('请先选择源文件夹和目标文件夹!')returnfor 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()
代码解析
  1. 创建窗口:使用 wx.Frame 创建主窗口,并在窗口中添加按钮。
  2. 选择文件夹:通过 wx.DirDialog 允许用户选择源和目标文件夹。
  3. 转换音频:使用 pydub 库的 AudioSegment 类,将 .m4a 文件转换为 .mp3 文件。
  4. 打开目标文件夹:转换完成后,利用 os.startfile() 打开目标文件夹,方便用户查看结果。
运行程序

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

结果

在这里插入图片描述

总结

这个项目不仅展示了如何使用 Python 和 wxPython 创建桌面应用程序,还教会了我们如何处理音频文件。希望这个小工具能帮助你更方便地管理音频文件格式!如果你有任何问题或改进建议,欢迎在评论区留言!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1259.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【Linux】进程状态相关知识详细梳理

0. 预备知识 系统调用和库函数概念 在开发角度,操作系统对外会表现为一个整体,但是会暴露自己的部分接口,供上层开发使用,这部分由操作系统提供的接口,叫做系统调用。 系统调用在使用上,功能比较基础&#…

unity搭建场景学习

unity搭建场景学习 创建场景创建gameobject创建材质,用于给gameobject上色拖拽材质球上色上色原理设置多个材质方式设置贴图的方式 效果设置光滑度一些预览设置菜单渲染模型与碰撞模型网格渲染参数1. materials(材质)2. lighting(光照)3. reflection probes(反射探针…

【Linux】文件系统

目录 1、认识硬件--磁盘 2、文件系统 3、软链接&&硬链接 1、认识硬件--磁盘 唯一的一个机械设备,也是一个外设。 我们可以把磁盘看作是由无数个扇区构成的存储介质。 要把数据存到磁盘,第一个要解决的问题是定位一个扇区:哪一面&…

Linux进阶

认识root用户(超级管理员) root账号:超级管理员账户,在任何地方都有最高权限 其它账户: 是由root权限创建来的.只能在自己的家目录用更大的权限. su和exit(切换/退出) su - 用户名 : 切换到其它用. -加载环境变量 exit 登出当前用户. 可以使用ctrl d 快捷键在前面&#xff…

单臂路由实现不同VLAN之间设备通信

转载请注明出处 本实验为单臂路由配置,目的为让不同VLAN之间的设备能够互相通信。 1.首先,按照要求配置两个pc的ip地址,以pc0为例子: 2在交换机创建vlan10和vlan20 3.划分vlan,pc0为vlan10的设备,pc1为vla…

AR基础知识:SLAM同时定位和构图

在第一部分中,我们了解了算法如何识别相机帧中的关键点。这些是跟踪和识别环境的基础。 对于增强现实,设备必须知道更多信息:它在世界上的 3D 位置。它通过自身与多个关键点之间的空间关系来计算这一点。这个过程称为“同时定位和地图构建”…

【数据结构-邻项消除】力扣2211. 统计道路上的碰撞次数

在一条无限长的公路上有 n 辆汽车正在行驶。汽车按从左到右的顺序按从 0 到 n - 1 编号,每辆车都在一个 独特的 位置。 给你一个下标从 0 开始的字符串 directions ,长度为 n 。directions[i] 可以是 ‘L’、‘R’ 或 ‘S’ 分别表示第 i 辆车是向 左 、…

[实战-11] FlinkSql 设置时区对TIMESTAMP和TIMESTAMP_LTZ的影响

table.local-time-zone table.local-time-zoneDataStream-to-Table Conversion(拓展知识)代码测试flinksql代码执行结果截图1. Asia/Shanghai 结果如下2. UTC结果如下 table.local-time-zone table.local-time-zone可用于设置flinksql的时区。 flink的内…

通过哪些性能指标来评估微调后的大模型实际业务效果?【大模型行业应用落地系列】

ct) 大模型应用场景探讨 ● 通过哪些性能指标来评估微调后的大模型实际业务效果? **【议题说明】**本议题主要探讨评估微调后大模型在实际业务场景中效果的性能指标,确保模型优化与业务目标一致。探讨该议题对用户企业具有多方面的价值,精确…

12-Docker发布微服务

12-Docker发布微服务 Docker发布微服务 搭建SpringBoot项目 新建一个SpringBoot项目 选择依赖项Spring Web和Spring Boot Actuator 在com.qi.docker_boot下创建controller目录,并在该目录下创建OrderController的java类 OrderControllerjava类的内容如下&#xf…

【大语言模型】ACL2024论文-06 探索思维链COT在多模态隐喻检测中的应用

【大语言模型】ACL2024论文-06 探索思维链COT在多模态隐喻检测中的应用 目录 文章目录 【大语言模型】ACL2024论文-06 探索思维链COT在多模态隐喻检测中的应用目录摘要研究背景问题与挑战如何解决创新点算法模型1. 知识总结模块(Knowledge Summarization Module&…

HTML CSS

目录 1. 什么是HTML 2. 什么是CSS ? 3. 基础标签 & 样式 3.1 新浪新闻-标题实现 3.1.1 标题排版 3.1.1.1 分析 3.1.1.2 标签 3.1.1.3 实现 3.1.2 标题样式 3.1.2.1 CSS引入方式 3.1.2.2 颜色表示 3.1.2.3 标题字体颜色 3.1.2.4 CSS选择器 3.1.2.5 发布时间字…

应用在汽车控制系统安全气囊的爱普生可编程晶振SG-8018CG

在汽车安全领域,安全气囊是保护驾乘人员生命安全的关键防线。而作为安全气囊控制系统的关键元件 —— 爱普生可编程晶振 SG - 8018CG,以其卓越的性能成为汽车安全的坚实守护者。 一、高精度频率输出:安全气囊触发的精准之选 在汽车安全气囊控…

第112届全国糖酒会(3月成都)正式官宣!

作为食品饮料行业内备受瞩目的年度盛事,全国糖酒商品交易会(简称“糖酒会”)一直是各大厂商与经销商展现企业风采、寻觅合作伙伴及签署订单的关键舞台。2024年10月31日,第111届全国糖酒商品交易会(秋糖)在深…

【Javaee】网络原理-http协议(二)

前言 上一篇博客初步介绍了抓包工具的安装及使用,介绍了http请求报文与响应报文的格式。​​​​​​【Javaee】网络原理—http协议(一)-CSDN博客 本篇将详细介绍http的方法和http报文中请求头内部键值对的含义与作用,以及常见状…

Python实现摇号系统:详细指南与案例解析

目录 一、摇号系统的基本概念与原理 二、摇号系统的准备工作 三、摇号系统的详细实现步骤 1. 数据读取 2. 随机摇号 3. 结果存储 4. 结果查询 5. 主函数 四、案例解析 五、常见问题与解答 如何确保摇号过程的公平性? 如何处理大量用户数据? …

python将数据集中所有文件名升序制作txt文件(医学影像)

import os import re # 设定图像文件所在的路径 img_path ./2d/images/ #需修改路径 # 获取该路径下的所有文件名 img_list os.listdir(img_path) # 过滤出以.nii结尾的文件名 nii_list [f for f in img_list if f.endswith(.nii)] # 使用正则表达式从文件名中提…

Stable diffusion 3.5本地运行环境配置记录

1.环境配置 创建虚环境 conda create -n sd3.5 python3.10Pytorch(>2.0) conda install pytorch2.2.2 torchvision0.17.2 torchaudio2.2.2 pytorch-cuda12.1 -c pytorch -c nvidiaJupyter能使用Anaconda虚环境 conda install ipykernel python -m ipykernel install --user …

2001-2023年A股上市公司数字化转型数据(MDA报告词频统计)(三种方法)

2001-2023年A股上市公司数字化转型数据(MD&A报告词频统计)(三种方法) 1、时间:2001-2023年 2、来源:上市公司MD&A报告 3、指标:年份、股票代码、股票简称、行业名称、行业代码、MD&a…

【力扣专题栏】字母异词分组,如何利用强大的容器(unordered_map)解决该问题?

题解目录 1、题目描述解释2、算法原理解析3、代码编写 1、题目描述解释 2、算法原理解析 3、代码编写 class Solution { public:vector<vector<string>> groupAnagrams(vector<string>& strs) {//创建哈希表unordered_map<string,vector<string&g…