Python实现轻松切割MP3文件

 更新时间:2023年06月04日 08:44:40   作者:winfredzhang  
有时我们需要将大型MP3文件切割成较小的部分以便上传或发送,所以本文为大家整理了可以轻松切割MP3文件的Python脚本,希望对大家有所帮助

应用场景

1.需要将大型MP3文件切割成较小的部分以便上传或发送。

2.需要从MP3文件中提取特定的音频片段,以便用于其他目的。

3.需要快速制作铃声或音乐片段,以用于手机等设备。

源代码

import subprocess
import wx
 
class MyFrame(wx.Frame):
    def __init__(self, parent, title):
        super(MyFrame, self).__init__(parent, title=title, size=(400, 600))
        panel = wx.Panel(self)
 
        vbox = wx.BoxSizer(wx.VERTICAL)
 
        hbox1 = wx.BoxSizer(wx.HORIZONTAL)
        start_label = wx.StaticText(panel, label='开始时间(秒):')
        hbox1.Add(start_label, flag=wx.ALIGN_CENTER_VERTICAL | wx.ALL, border=5)
        self.start_input = wx.TextCtrl(panel)
        hbox1.Add(self.start_input, flag=wx.ALL, border=5)
        vbox.Add(hbox1, flag=wx.EXPAND | wx.ALL, border=10)
 
        hbox2 = wx.BoxSizer(wx.HORIZONTAL)
        end_label = wx.StaticText(panel, label='结束时间(秒):')
        hbox2.Add(end_label, flag=wx.ALIGN_CENTER_VERTICAL | wx.ALL, border=5)
        self.end_input = wx.TextCtrl(panel)
        hbox2.Add(self.end_input, flag=wx.ALL, border=5)
        vbox.Add(hbox2, flag=wx.EXPAND | wx.ALL, border=10)
 
        hbox3 = wx.BoxSizer(wx.HORIZONTAL)
        btn_browse = wx.Button(panel, label='选择文件', size=(100, 30))
        btn_browse.Bind(wx.EVT_BUTTON, self.on_browse)
        hbox3.Add(btn_browse, flag=wx.ALL, border=5)
        vbox.Add(hbox3, flag=wx.ALIGN_CENTER | wx.ALL, border=10)
 
        hbox4 = wx.BoxSizer(wx.HORIZONTAL)
        name_label = wx.StaticText(panel, label='歌名:')
        hbox4.Add(name_label, flag=wx.ALIGN_CENTER_VERTICAL | wx.ALL, border=5)
        self.name_input = wx.TextCtrl(panel)
        hbox4.Add(self.name_input, flag=wx.ALL, border=5)
        vbox.Add(hbox4, flag=wx.EXPAND | wx.ALL, border=10)
 
        hbox5 = wx.BoxSizer(wx.HORIZONTAL)
        btn_cut = wx.Button(panel, label='切割', size=(100, 30))
        btn_cut.Bind(wx.EVT_BUTTON, self.on_cut)
        hbox5.Add(btn_cut, flag=wx.ALL, border=5)
        vbox.Add(hbox5, flag=wx.ALIGN_CENTER | wx.ALL, border=10)
 
        panel.SetSizer(vbox)
        self.Show()
 
    def on_browse(self, event):
        dlg = wx.FileDialog(self, "选择MP3文件", wildcard="MP3文件 (*.mp3)|*.mp3", style=wx.FD_OPEN | wx.FD_FILE_MUST_EXIST)
        if dlg.ShowModal() == wx.ID_OK:
            selected_file = dlg.GetPath()
            self.input_file = selected_file
        dlg.Destroy()
 
    def on_cut(self, event):
        start_time = self.start_input.GetValue()
        end_time = self.end_input.GetValue()
        name = self.name_input.GetValue()
 
        if not start_time or not end_time or not name or not hasattr(self, 'input_file'):
            wx.MessageBox('请输入有效的开始时间、结束时间、歌名,并选择要切割的MP3文件!', '错误', wx.OK | wx.ICON_ERROR)
            return
        output_file = f'{name}.mp3'
 
        # 使用FFmpeg切割音频文件
        cmd = f'D://ffmpeg//bin//ffmpeg -i {self.input_file} -ss {start_time} -to {end_time} -c copy {output_file}'
        print(cmd)
        try:
            subprocess.call(cmd, shell=True)
            wx.MessageBox('切割成功!', '提示', wx.OK | wx.ICON_INFORMATION)
        except subprocess.CalledProcessError:
            wx.MessageBox('切割失败,请检查输入的时间是否正确!', '错误', wx.OK | wx.ICON_ERROR)
 
app = wx.App()
MyFrame(None, title='MP3切割工具')
app.MainLoop()
 

源代码解释

这个工具的核心逻辑是使用FFmpeg库进行音频处理,以及使用wxPython库构建GUI。具体来说,FFmpeg库提供了强大的音频处理功能,可以轻松地从音频文件中提取、剪辑或转码音频,而wxPython库则提供了易于使用的GUI元素和布局管理器,帮助用户创建美观和易于使用的GUI。

需要注意的是,这个小工具使用了FFmpeg库,因此在使用之前需要确保已经安装了FFmpeg库,并且已经将其添加到系统的环境变量中。同时,这个小工具也只支持切割MP3文件,如果需要处理其他类型的音频文件,则需要进行相应的修改。

效果如下

用户可以按照以下步骤使用这个小工具:

运行代码并打开GUI界面。

通过点击"选择文件"按钮选择要切割的MP3文件。

输入起始时间和结束时间,以及要输出文件的名称。

点击"切割"按钮,等待程序完成处理。

在输出文件夹中找到切割后的MP3文件。

到此这篇关于Python实现轻松切割MP3文件的文章就介绍到这了,更多相关Python切割MP3文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python接口自动化之request请求封装源码分析

    Python接口自动化之request请求封装源码分析

    这篇文章主要介绍了Python接口自动化之request请求封装源码分析,文章围绕主题的相关资料展开详细的内容介绍,具有一定的参考价值,感兴趣的小伙伴可以参考一下
    2022-06-06
  • Python实现打包成库供别的模块调用

    Python实现打包成库供别的模块调用

    这篇文章主要介绍了Python实现打包成库供别的模块调用,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • 浅谈对python中if、elif、else的误解

    浅谈对python中if、elif、else的误解

    这篇文章主要介绍了浅谈对python中if、elif、else的误解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • Python对称的二叉树多种思路实现方法

    Python对称的二叉树多种思路实现方法

    这篇文章主要介绍了Python对称的二叉树多种思路实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • Python3 + Appium + 安卓模拟器实现APP自动化测试并生成测试报告

    Python3 + Appium + 安卓模拟器实现APP自动化测试并生成测试报告

    这篇文章主要介绍了Python3 + Appium + 安卓模拟器实现APP自动化测试并生成测试报告,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • OpenCV+python实现实时目标检测功能

    OpenCV+python实现实时目标检测功能

    这篇文章主要介绍了OpenCV+python实现实时目标检测功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • Linux下通过python访问MySQL、Oracle、SQL Server数据库的方法

    Linux下通过python访问MySQL、Oracle、SQL Server数据库的方法

    这篇文章主要介绍了Linux下通过python访问MySQL、Oracle、SQL Server数据库的方法,需要的朋友可以参考下
    2016-04-04
  • python之os路径被转义的问题

    python之os路径被转义的问题

    这篇文章主要介绍了python之os路径被转义的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • 使用python-pptx包批量修改ppt格式的实现

    使用python-pptx包批量修改ppt格式的实现

    今天小编就为大家分享一篇使用python-pptx包批量修改ppt格式的实现,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • python中用cantools和can工具包解析blf文件的方法

    python中用cantools和can工具包解析blf文件的方法

    这篇文章主要给大家介绍了关于python中用cantools和can工具包解析blf文件的相关资料,blf数据不像mf4那样自带信号数据库,因为它是记日志用的,一般情况下要尽可能的小,需要的朋友可以参考下
    2023-09-09

最新评论