القائمة الرئيسية

الصفحات

كيفية برمجة تطبيق مشغّل فيديو باستخدام Python و Tkinter

How to code video playback app using Python، How-to-code-video-playback-app-in-Python، كيفية برمجة تطبيق مشغّل فيديو باستخدام Python و Tkinter، مشغّل فيديو، تطبيق لتشغيل الفيديو، برمجة تتطبيق لتشغيل الفيديو باستخدام python، خطوات برمجة تطبيق تشغيل الفيديو باستخدام Python Tkinter و python-vlc، برمجة تتطبيق لتشغيل الفيديو باستخدام python، برمجة تطبيق بسيط لتشغيل الفيديو باستخدام Python و Tkinter: دليل شامل، برمجة مشغل فيديو Python، تطوير تطبيق تشغيل فيديو Tkinter، إنشاء برنامج تشغيل فيديو بسيط Python، واجهة مستخدم مشغل فيديو Tkinter، تشغيل ملفات الفيديو Python، التحكم في تشغيل الفيديو Python، أزرار تشغيل الفيديو Tkinter، مؤشر تقدم الفيديو Python، عرض إطار الفيديو Python، اختيار ملف الفيديو Python، حفظ موضع تشغيل الفيديو Python، نشر تطبيق Tkinter، تحويل برنامج Python إلى ملف تنفيذي، توزيع مشغل فيديو Python، كيفية برمجة تطبيق لتشغيل الفيديو باستخدام Python و Tkinter، برمجة مشغل فيديو Python، تطوير تطبيق تشغيل فيديو Tkinter، إنشاء برنامج تشغيل فيديو بسيط Python،




كيفية برمجة تطبيق مشغّل فيديو باستخدام Python و Tkinter


في عالم الوسائط المتعددة، يعد تشغيل الفيديو وظيفة أساسية. 
إذا كنت مهتمًا بتعلم كيفية برمجة تطبيق بسيط لتشغيل الفيديو باستخدام Python 
ومكتبة الواجهة الرسومية Tkinter، فهذا الدليل الشامل سيأخذك خطوة بخطوة
 خلال عملية إنشاء مشغل فيديو أساسي. سنتناول كل شيء بدءًا من تصميم
 واجهة مستخدم بسيطة بأزرار للتحكم في التشغيل، مرورًا بدمج القدرة على
 تشغيل ملفات الفيديو والتحكم فيها (تشغيل، إيقاف، تقدم)، وصولًا إلى إضافة
 مؤشر تقدم الفيديو ووظيفة اختيار ملف الفيديو، وإمكانية حفظ موضع 
التشغيل (كميزة إضافية)، وأخيرًا نشر التطبيق ليتمكن الآخرون من استخدامه.
 انطلق معنا في هذه الرحلة لتعلم كيفية برمجة تطبيق لتشغيل الفيديو
 باستخدام Python Tkinter بطريقة عملية ومنظمة.

* ملاحظة هامة : تشغيل ملفات الفيديو مباشرة باستخدام Tkinter فقط ليس ممكنًا بشكل مباشر. 
سنستخدم مكتبة وسائط متعددة خارجية مثل python-vlc
 (واجهة Python لمشغل VLC) للتعامل مع تشغيل الفيديو وعرض الإطارات
 داخل نافذة Tkinter.
 * تأكد من تثبيت python-vlc :
pip install python-vlc
--

خطوات برمجة تطبيق تشغيل الفيديو باستخدام Python Tkinter



اليك خطوات برمجة تطبيق تشغيل الفيديو باستخدام Python Tkinter و python-vlc :
الخطوة 1: إعداد بيئة التطوير وتثبيت المكتبات

تأكد من تثبيت Python على جهازك. ثم قم بتثبيت مكتبة Tkinter 
(عادة ما تأتي مع Python) ومكتبة python-vlc :
pip install python-vlc
--

* أنشئ ملف Python جديدًا باسم video_player.py.

الخطوة 2: استيراد المكتبات وتهيئة التطبيق

في ملف video_player.py، ابدأ باستيراد المكتبات الضرورية وتهيئة نافذة Tkinter :




Python

import tkinter as tk
from tkinter import filedialog
import vlc
import time
import threading

class VideoPlayer:
    def __init__(self, master):
        self.master = master
        master.title("مشغل الفيديو البسيط")

        self.instance = vlc.Instance()
        self.player = self.instance.media_player_new()
        self.media = None

        self.is_playing = False
        self.current_time = 0
        self.duration = 0

        self.create_widgets()


--

الخطوة 3: إنشاء واجهة المستخدم (Widgets)

قم بإنشاء العناصر المرئية للتحكم في تشغيل الفيديو:




Python

    def create_widgets(self):
        self.video_frame = tk.Frame(self.master, bg="black")
        self.video_frame.pack(fill=tk.BOTH, expand=True)
        self.video_window = self.video_frame.winfo_id()

        self.controls_frame = tk.Frame(self.master)
        self.controls_frame.pack(fill=tk.X)

        self.open_button = tk.Button(self.controls_frame, text="فتح", command=self.open_file)
        self.open_button.pack(side=tk.LEFT, padx=5, pady=5)

        self.play_pause_button = tk.Button(self.controls_frame, text="تشغيل", command=self.play_pause)
        self.play_pause_button.pack(side=tk.LEFT, padx=5, pady=5)

        self.progress_bar = tk.Scale(self.controls_frame, from_=0, to=1000, orient=tk.HORIZONTAL,
                                     label="التقدم", command=self.seek, showvalue=False)
        self.progress_bar.pack(side=tk.LEFT, fill=tk.X, expand=True, padx=5, pady=5)


--

الخطوة 4: وظيفة فتح ملف الفيديو

اسمح للمستخدم باختيار ملف فيديو من خلال مربع حوار:




Python

    def open_file(self):
        file_path = filedialog.askopenfilename(
            defaultextension=".mp4",
            filetypes=[("ملفات الفيديو", "*.mp4;*.avi;*.mkv"), ("جميع الملفات", "*.*")]
        )
        if file_path:
            self.media = self.instance.media_new(file_path)
            self.player.set_media(self.media)
            self.player.set_hwnd(self.video_window) # ربط الفيديو بإطار Tkinter
            self.play_pause_button.config(text="تشغيل")
            self.is_playing = False
            self.update_duration()


--

الخطوة 5: وظيفة تشغيل/إيقاف الفيديو

تحكم في حالة تشغيل الفيديو:
Python

    def play_pause(self):
        if self.media:
            if self.is_playing:
                self.player.pause()
                self.play_pause_button.config(text="تشغيل")
                self.is_playing = False
            else:
                self.player.play()
                self.play_pause_button.config(text="إيقاف")
                self.is_playing = True
                self.update_progress()
--

الخطوة 6: وظيفة البحث في الفيديو (التقدم)

اسمح للمستخدم بالانتقال إلى أجزاء مختلفة من الفيديو:
Python

    def seek(self, value):
        if self.media and self.duration > 0:
            position = float(value) / 1000.0
            self.player.set_position(position)
--

الخطوة 7: تحديث مؤشر التقدم ومدة الفيديو

قم بتحديث واجهة المستخدم لتعكس حالة تشغيل الفيديو:
Python

    def update_progress(self):
        if self.is_playing and self.duration > 0:
            current_time_ms = self.player.get_time()
            position = float(current_time_ms) / self.duration
            progress_value = int(position * 1000)
            self.progress_bar.set(progress_value)
            self.master.after(100, self.update_progress) # تحديث كل 100 مللي ثانية

    def update_duration(self):
        if self.media:
            self.duration = self.player.get_length()
            self.progress_bar.config(to=1000)
--




الخطوة 8: حفظ موضع تشغيل الفيديو (ميزة إضافية)

لتنفيذ حفظ موضع التشغيل، ستحتاج إلى تخزين هذا الموضع
 (على سبيل المثال، في ملف) واستعادته عند فتح نفس الفيديو مرة أخرى. 
هذا يتطلب إضافة منطق إضافي لتتبع الملفات التي تم تشغيلها ومواضعها. 
إليك مثال بسيط لكيفية حفظ الموضع الحالي عند إغلاق التطبيق واستعادته (يتطلب تحسينًا لإدارة ملفات متعددة):




Python

import json
import os

# ... (بقية الكود)

class VideoPlayer:
    def __init__(self, master):
        # ... (التهيئة)
        self.last_played = {}
        self.load_last_played()
        master.protocol("WM_DELETE_WINDOW", self.on_closing)

    def load_last_played(self):
        try:
            with open("last_played.json", "r") as f:
                self.last_played = json.load(f)
        except FileNotFoundError:
            pass

    def save_last_played(self):
        if self.media:
            file_path = self.media.get_mrl()
            current_time_ms = self.player.get_time()
            self.last_played[file_path] = current_time_ms
            with open("last_played.json", "w") as f:
                json.dump(self.last_played, f)

    def open_file(self):
        # ... (فتح الملف)
        if file_path:
            # ... (تعيين الوسائط)
            if file_path in self.last_played:
                self.player.play() # ابدأ التشغيل لاستعادة الموضع
                self.player.set_time(self.last_played[file_path])
                self.play_pause_button.config(text="إيقاف")
                self.is_playing = True
                self.update_progress()
            else:
                self.play_pause_button.config(text="تشغيل")
                self.is_playing = False
                self.update_duration()

    def on_closing(self):
        self.save_last_played()
        self.master.destroy()

# ... (إنشاء النافذة الرئيسية وتشغيل التطبيق)


--

الخطوة 9: إنشاء النافذة الرئيسية وتشغيل التطبيق

أضف الكود لإنشاء نافذة Tkinter وتشغيل تطبيق مشغل الفيديو :
Python
if __name__ == "__main__":
    root = tk.Tk()
    player = VideoPlayer(root)
    root.mainloop()
--

الخطوة 10: نشر التطبيق

لنشر تطبيق Tkinter يعتمد على مكتبات خارجية مثل python-vlc، يمكنك اتباع عدة طرق:

* توزيع الكود المصدري مع تعليمات التثبيت : 
يمكن للمستخدمين الذين لديهم Python و Tkinter و python-vlc 
مثبتين تشغيل ملف video_player.py مباشرة. 
قم بتضمين تعليمات مفصلة لتثبيت python-vlc.

* إنشاء ملف تنفيذي باستخدام PyInstaller : 
يمكن لـ PyInstaller تجميع برنامج Python وجميع تبعياته في ملف
 تنفيذي واحد قابل للتوزيع لأنظمة تشغيل مختلفة (Windows، macOS، Linux).
 قد تحتاج إلى بعض التكوين الإضافي لتضمين مكتبة VLC وملفاتها الضرورية بشكل صحيح.

* التثبيت :
pip install pyinstaller
--

* إنشاء الملف التنفيذي (قد يتطلب تعديلات):

pyinstaller --onefile --add-binary "C:\Program Files\VideoLAN\VLC\libvlc.dll;." --add-binary "C:\Program Files\VideoLAN\VLC\libvlccore.dll;." video_player.py
--

* ملاحظة : استبدل المسارات في --add-binary بالمسارات الفعلية 
لملفات libvlc.dll و libvlccore.dll على نظامك. 
قد يختلف موقع هذه الملفات حسب نظام التشغيل وتثبيت VLC.
* استخدام cx_Freeze: 
بديل آخر لـ PyInstaller لإنشاء ملفات تنفيذية. قد يتطلب أيضًا بعض التكوين لتضمين مكتبة VLC.
* التثبيت :
pip install cx_Freeze
--
* إنشاء ملف الإعداد (setup.py): 
قم بإنشاء ملف setup.py يتضمن مكتبة vlc كأحد التضمينات :




Python

import cx_Freeze
import sys
import os

base = None
if sys.platform == "win32":
    base = "Win32GUI"

vlc_plugins_dir = os.path.join(os.path.dirname(sys.executable), 'libvlc-3.0.18', 'plugins') # قد يختلف الإصدار والمسار

cx_Freeze.setup(
    name="SimpleVideoPlayer",
    version="0.1",
    description="مشغل فيديو بسيط باستخدام Python Tkinter و VLC",
    executables=[cx_Freeze.Executable("video_player.py", base=base)],
    options={
        "build_exe": {
            "packages": ["vlc"],
            "include_files": [(vlc_plugins_dir, 'plugins')] # تضمين مجلد الإضافات
        }
    }
)


--

* بناء الملف التنفيذي :
python setup.py build
--
* ملاحظة : قد تحتاج إلى تعديل مسار vlc_plugins_dir ليطابق موقع تثبيت VLC على نظامك.

* الخلاصة :
لقد تعلمت الآن كيفية برمجة تطبيق بسيط لتشغيل الفيديو باستخدام Python Tkinter
 ومكتبة python-vlc. قمنا بإنشاء واجهة مستخدم أساسية، ودمجنا 
وظيفة فتح وتشغيل وإيقاف الفيديو، وأضفنا مؤشر تقدم الفيديو ووظيفة اختيار الملف.
 كما تناولنا كيفية إضافة ميزة حفظ موضع التشغيل وكيفية نشر التطبيق.
 يمكنك الآن تطوير هذا التطبيق بإضافة المزيد من الميزات مثل التحكم في مستوى الصوت،
 وأزرار التنقل للأمام والخلف، ودعم الترجمة، وقوائم التشغيل، وتحسين واجهة المستخدم. 
تذكر أن نشر التطبيقات التي تعتمد على مكتبات خارجية قد يتطلب بعض الجهد 
الإضافي لضمان تضمين جميع الملفات الضرورية. استمر في التجربة والتطوير!


جدول المحتويات