Python實(shí)現(xiàn)輕松切割MP3文件
應(yīng)用場景
1.需要將大型MP3文件切割成較小的部分以便上傳或發(fā)送。
2.需要從MP3文件中提取特定的音頻片段,以便用于其他目的。
3.需要快速制作鈴聲或音樂片段,以用于手機(jī)等設(shè)備。
源代碼
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='結(jié)束時間(秒):')
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('請輸入有效的開始時間、結(jié)束時間、歌名,并選擇要切割的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庫進(jìn)行音頻處理,以及使用wxPython庫構(gòu)建GUI。具體來說,F(xiàn)Fmpeg庫提供了強(qiáng)大的音頻處理功能,可以輕松地從音頻文件中提取、剪輯或轉(zhuǎn)碼音頻,而wxPython庫則提供了易于使用的GUI元素和布局管理器,幫助用戶創(chuàng)建美觀和易于使用的GUI。
需要注意的是,這個小工具使用了FFmpeg庫,因此在使用之前需要確保已經(jīng)安裝了FFmpeg庫,并且已經(jīng)將其添加到系統(tǒng)的環(huán)境變量中。同時,這個小工具也只支持切割MP3文件,如果需要處理其他類型的音頻文件,則需要進(jìn)行相應(yīng)的修改。
效果如下
用戶可以按照以下步驟使用這個小工具:
運(yùn)行代碼并打開GUI界面。
通過點(diǎn)擊"選擇文件"按鈕選擇要切割的MP3文件。
輸入起始時間和結(jié)束時間,以及要輸出文件的名稱。
點(diǎn)擊"切割"按鈕,等待程序完成處理。
在輸出文件夾中找到切割后的MP3文件。


到此這篇關(guān)于Python實(shí)現(xiàn)輕松切割MP3文件的文章就介紹到這了,更多相關(guān)Python切割MP3文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python 實(shí)現(xiàn)圖片轉(zhuǎn)字符畫的示例(靜態(tài)圖片,gif皆可)
這篇文章主要介紹了Python 實(shí)現(xiàn)圖片轉(zhuǎn)字符畫的示例,幫助大家更好的利用python進(jìn)行圖片處理,感興趣的朋友可以了解下2020-11-11
關(guān)于數(shù)據(jù)分析Pandas的Series用法總結(jié)
這篇文章主要介紹了關(guān)于數(shù)據(jù)分析Pandas的Series用法總結(jié),Series序列,是一種一維的結(jié)構(gòu),類似于一維列表和ndarray中的一維數(shù)組,但是功能比他們要更為強(qiáng)大,Series由兩部分組成:索引index和數(shù)值values,本篇對其用法做出總結(jié)2023-07-07
Python實(shí)現(xiàn)批量重命名照片并按拍攝日期歸類
手機(jī)和相機(jī)每天產(chǎn)生成百上千張照片,但默認(rèn)文件名和雜亂的存儲方式讓人頭疼,下面我們就來看看如何使用Python實(shí)現(xiàn)批量重命名照片并按拍攝日期歸類吧2026-01-01
Python實(shí)現(xiàn)PS濾鏡的萬花筒效果示例
這篇文章主要介紹了Python實(shí)現(xiàn)PS濾鏡的萬花筒效果,結(jié)合實(shí)例形式分析了Python基于skimage模塊操作圖片實(shí)現(xiàn)PS濾鏡萬花筒效果的原理與相關(guān)操作技巧,需要的朋友可以參考下2018-01-01
Python Pytorch gpu 分析環(huán)境配置
Pytorch是目前最火的深度學(xué)習(xí)框架之一,目前也支持了pytorch的GPU加速,所以我就想著,在這兩個電腦上裝個Pytorch,這篇文章主要介紹了Python Pytorch(gpu)分析環(huán)境配置,需要的朋友可以參考下2023-04-04
python光學(xué)仿真實(shí)現(xiàn)光線追跡之空間關(guān)系
這篇文章主要介紹了python光學(xué)仿真中實(shí)現(xiàn)光線追跡的空間關(guān)系示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2021-10-10

