ساخت برنامه گرافیکی برای تبدیل MP4 به MP3 با پایتون
@LearnPY🎓 درسنامه: ساخت برنامه گرافیکی برای تبدیل MP4 به MP3 با پایتون
این برنامه، یک ابزار گرافیکی ساده برای تبدیل فایلهای ویدیویی MP4 به فایل صوتی MP3 است. در این برنامه از پکیجهای tkinter و moviepy استفاده میشود.
📦 وارد کردن کتابخانهها
import os
ماژول os ابزارهایی برای کار با مسیر فایلها و نام آنها ارائه میدهد. در این برنامه، برای گرفتن نام فایل بدون پسوند (برای تولید فایل MP3) استفاده میشود.
from moviepy import VideoFileClip
کلاس VideoFileClip از کتابخانهی moviepy برای بارگذاری فایلهای ویدیویی استفاده میشود. بعد از بارگذاری، میتوان به اجزای ویدیو از جمله صدای آن (.audio) دسترسی داشت.
import tkinter as tk from tkinter import filedialog, messagebox
اینجا ما از کتابخانهی tkinter برای ساخت رابط گرافیکی استفاده میکنیم:
tk: ساخت پنجره و اجزای اصلی رابط کاربریfiledialog: پنجرهای برای انتخاب فایل از سیستمmessagebox: نمایش پیامهای موفقیت یا خطا
⚙️ تعریف تابع تبدیل
def convert():
تابع convert موقعی اجرا میشود که کاربر روی دکمه "Select MP4 and Convert" کلیک کند. وظیفهاش این است که فایل ویدیویی را بگیرد، آن را به MP3 تبدیل کند و فایل صوتی را ذخیره کند.
🗂️ انتخاب فایل ویدیویی
filepath = filedialog.askopenfilename(
title="Select MP4 File",
filetypes=[("MP4 files", "*.mp4")]
)
پنجرهای باز میشود تا کاربر یک فایل MP4 را از سیستم انتخاب کند.
title: عنوان پنجرهfiletypes: فقط فایلهایی با پسوند.mp4نمایش داده میشوند
🧷 بررسی اینکه کاربر فایلی انتخاب کرده یا نه
if not filepath:
return
اگر کاربر پنجره را بست یا هیچ فایلی انتخاب نکرد، تابع متوقف میشود و هیچ کاری انجام نمیدهد.
🎬 بارگذاری ویدیو و تبدیل آن به MP3
try:
clip = VideoFileClip(filepath)
- این خط، فایل ویدیویی انتخابشده را بارگذاری میکند و یک شیء
VideoFileClipمیسازد که شامل تصویر، صدا و دیگر اطلاعات ویدیو است.
output_path = os.path.splitext(filepath)[0] + ".mp3"
- این خط نام فایل خروجی را تولید میکند:
os.path.splitext(filepath)[0]فقط نام فایل را بدون پسوند برمیگرداند.- با اضافه کردن
.mp3، مسیر و نام فایل خروجی مشخص میشود.
clip.audio.write_audiofile(output_path)
- این خط، صدا (audio)ی فایل ویدیویی را استخراج کرده و در مسیر خروجی بهصورت MP3 ذخیره میکند.
✅ پیام موفقیت یا خطا
messagebox.showinfo("Success", f"MP3 saved to:\n{output_path}")
اگر عملیات با موفقیت انجام شود، یک پنجره پیام (messagebox) باز میشود که مسیر فایل MP3 را نمایش میدهد.
except Exception as e:
messagebox.showerror("Error", f"Something went wrong:\n{e}")
اگر هنگام پردازش فایل خطایی رخ دهد (مثلاً فایل خراب باشد)، پیام خطا به همراه توضیحات نمایش داده میشود.
🪟 ساخت رابط گرافیکی
root = tk.Tk()
ساخت پنجره اصلی برنامه.
root.title("MP4 to MP3 Converter")
تنظیم عنوان پنجره (ظاهر شدن در نوار بالای پنجره).
root.geometry("300x150")
تنظیم اندازه پنجره به عرض ۳۰۰ و ارتفاع ۱۵۰ پیکسل.
root.resizable(False, False)
غیرفعال کردن امکان تغییر اندازه پنجره توسط کاربر.
✍️ افزودن اجزای رابط کاربری
label = tk.Label(root, text="Convert MP4 Video to MP3 Audio", font=("Arial", 12))
label.pack(pady=20)
ساخت یک برچسب (Label) با متن توضیحی در بالای برنامه.
pady=20 فضای عمودی بالا و پایین این برچسب را افزایش میدهد.
btn = tk.Button(root, text="Select MP4 and Convert", command=convert) btn.pack(pady=10)
ساخت دکمهای با متن مشخص. وقتی روی دکمه کلیک شود، تابع convert() اجرا میشود.
pady=10 باعث ایجاد فاصله عمودی میشود.
🔁 اجرای حلقهی اصلی برنامه
root.mainloop()
این خط برنامه را در حالت "منتظر رویداد" نگه میدارد. تا وقتی که کاربر پنجره را نبندد، برنامه باز خواهد ماند و به رویدادهایی مثل کلیک یا انتخاب فایل پاسخ میدهد.
✅ نتیجهگیری:
با این برنامهی ساده اما کاربردی، توانستیم:
- یک فایل MP4 را از کاربر بگیریم،
- صدای آن را بهصورت MP3 استخراج کنیم،
- و یک رابط گرافیکی ساده برای راحتی کاربر طراحی کنیم.
آموزشهای بیشتر در کانال لرنپای - t.me/LearnPY