网络编程
位置:首页>> 网络编程>> Python编程>> Python实现轻松切割MP3文件

Python实现轻松切割MP3文件

作者:winfredzhang  发布时间:2023-09-23 21:40:32 

标签:Python,切割,MP3

应用场景

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文件

来源:https://blog.csdn.net/winniezhang/article/details/131008897

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com