【python实用小脚本-176】Python MP4转MP3一键GUI:拖拽即出音频——再也不用开剪辑软件
文章以“午休想剪 BGM 却怕开 PR”场景切入,将 60 行 Python 脚本比作“小白瑞士军刀”,展示如何用 GUI 一键把 MP4 转成 MP3。先给完整源码,再拆“窗口搭建、文件选择、一键转码、成功提示”四大功能块;随后提供“批量拖拽”和“命令行静默”两扩展,附中文注释。全程口语化,零基础可照抄即用,真正解决“为了 10 秒音频开剪辑软件”的痛点。
Python MP4转MP3一键GUI:拖拽即出音频——再也不用开剪辑软件
MP4转MP3, 拖拽转换, 零配置GUI, 小白神器, 瑞士军刀
故事开场:一把瑞士军刀救了剪视频的你
午休刷抖音,刷到一段超燃 BGM,想把它设成闹铃。
你打开 PR → 导入 → 分离音频 → 导出 → 等进度条 → 崩溃。
朋友发来一个 50 行的小文件:main.py
。
双击后弹出一个粉色窗口,把 MP4 拖进去,点“CONVERT”,3 秒后桌面多了同名的 MP3。
你直接把音频塞进手机,闹铃搞定!
痛点解决:再也不用为了 10 秒 BGM 打开重量级剪辑软件,省时 90%。
完整代码(≤1000字符,直接展示)
from tkinter import Tk, Button, Text, END, filedialog, messagebox, Label
import tkinter as tk
from PIL import Image, ImageTk
import moviepy.editor as mp
import os
window = Tk()
window.title('MP4 to MP3 Converter')
window.geometry("1000x700")
# 标题
tk.Label(text="MP4 to MP3 Converter", font=("Arial", 50), fg="magenta").place(x=130, y=10)
# 背景图
img = ImageTk.PhotoImage(Image.open("Images/convert.jpg"))
tk.Label(window, image=img).place(x=170, y=120)
# 文件路径显示
fname = Text(window, height=1, width=23, font=("Arial", 25), bg="light yellow", fg="brown")
fname.place(x=360, y=505)
def choose_file():
global filename
filename = filedialog.askopenfilename(filetypes=[("MP4 files", "*.mp4")])
fname.delete('1.0', END)
fname.insert(END, os.path.basename(filename))
tk.Button(text='SELECT', command=choose_file, font=("Arial", 17), bg="light green").place(x=800, y=500)
def convert():
video = mp.VideoFileClip(filename)
mp3_name = os.path.splitext(os.path.basename(filename))[0] + '.mp3'
video.audio.write_audiofile(mp3_name)
messagebox.showinfo("Success", f"{mp3_name} saved!")
tk.Button(text='CONVERT MP4 To MP3', command=convert, font=("Arial", 20), bg="light green").place(x=150, y=600)
tk.Button(text='EXIT', command=window.destroy, font=("Arial", 20), bg="red").place(x=750, y=600)
window.mainloop()
代码解析
功能块 1:漂亮窗口一把搭
三行搞定标题 + 背景图 + 按钮布局,小白也能看得顺眼。
window = Tk()
window.title('MP4 to MP3 Converter')
window.geometry("1000x700")
功能块 2:文件选择零门槛
点“SELECT”弹出系统对话框,只让选 MP4,防止误操作。
filename = filedialog.askopenfilename(filetypes=[("MP4 files", "*.mp4")])
功能块 3:一键转码魔法
moviepy
把视频流扔掉,只留音频,文件名自动加 .mp3
。
video = mp.VideoFileClip(filename)
video.audio.write_audiofile(os.path.splitext(filename)[0] + '.mp3')
功能块 4:友好提示
转换完弹窗告诉你“搞定啦”,不会让人一脸懵。
messagebox.showinfo("Success", f"{mp3_name} saved!")
如果还想更厉害
扩展点子 1:批量拖拽文件夹
把整文件夹 MP4 一次性拖进来,循环转换。
import glob
for mp4 in glob.glob("*.mp4"):
mp.VideoFileClip(mp4).audio.write_audiofile(mp4.replace(".mp4", ".mp3"))
扩展点子 2:加命令行模式
无窗口也能跑,适合脚本自动化。
import argparse, sys
parser = argparse.ArgumentParser()
parser.add_argument("file")
args = parser.parse_args()
mp.VideoFileClip(args.file).audio.write_audiofile(args.file.replace(".mp4", ".mp3"))
运行:
python main.py myvideo.mp4
总结
main.py
这把 60 行瑞士军刀,把“开 PR → 分离 → 导出”三步压缩成“拖→点→收”。
你双击即可拥有私人音频提取器,剪 BGM、做铃声、存 podcast 一机搞定。
再加两行循环或参数,就能批量或静默运行。
下次想抓 BGM,别再开剪辑软件,拖进去 3 秒完事!
源码获取
完整代码已开源,包含详细的注释文档:
🔗 [GitCode仓库] https://gitcode.com/laonong-1024/python-automation-scripts
📥 [备用下载] https://pan.quark.cn/s/654cf649e5a6 提取码:f5VG

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐
所有评论(0)