x32x01
  • بواسطة x32x01 ||
الهدف من السكريبت هو تحويل ملف M3U8 (وهو تنسيق يُستخدم لبث الفيديو مثل البث المباشر أو الفيديوهات عبر الإنترنت) إلى تنسيق MPD (يُستخدم لتدفق الفيديو بتقنية MPEG-DASH). هذا التحويل يسمح بتشغيل الفيديو على منصات تدعم DASH.

ما ستحتاجه:
برنامج FFmpeg: هو أداة مجانية للتعامل مع الفيديوهات. يجب تثبيته على جهازك.
يمكنك تحميله من موقع FFmpeg الرسمي وإضافته إلى جهازك.

Python: يجب أن يكون لديك Python مثبتًا.
مكتبة ffmpeg-python: لربط Python مع FFmpeg. يمكن تثبيتها باستخدام الأمر:
Bash:
pip install ffmpeg-python

السكريبت التالي هو كود Python يقوم بتحويل ملف M3U8 إلى MPD:
Python:
import ffmpeg
import sys
import os

def convert_m3u8_to_mpd(input_m3u8, output_mpd):
    try:
        # التأكد من أن ملف الإدخال (M3U8) موجود
        if not input_m3u8.startswith('http') and not os.path.exists(input_m3u8):
            print("خطأ: ملف الإدخال غير موجود.")
            return

        # أمر FFmpeg لتحويل M3U8 إلى MPD
        stream = ffmpeg.input(input_m3u8)
        stream = ffmpeg.output(
            stream,
            output_mpd,
            format='dash',  # تحديد تنسيق الإخراج (DASH)
            c='copy',  # نسخ الفيديو والصوت بدون إعادة تشفير
            f='dash',  # تنسيق الإخراج
            use_template=1,  # استخدام نمط لتقسيم المقاطع
            use_timeline=1,  # استخدام جدول زمني للمقاطع
            seg_duration=4,  # مدة كل مقطع (4 ثوانٍ)
            window_size=5,  # عدد المقاطع المحفوظة
            extra_window_size=5
        )

        # تشغيل الأمر
        ffmpeg.run(stream, overwrite_output=True)
        print(f"تم التحويل بنجاح من {input_m3u8} إلى {output_mpd}")

    except ffmpeg.Error as e:
        print(f"خطأ في FFmpeg: {e.stderr.decode()}")
    except Exception as e:
        print(f"خطأ: {str(e)}")

if __name__ == "__main__":
    if len(sys.argv) != 3:
        print("الاستخدام: python script.py <ملف_m3u8_المدخل> <ملف_mpd_الناتج>")
        sys.exit(1)

    input_m3u8 = sys.argv[1]
    output_mpd = sys.argv[2]
    convert_m3u8_to_mpd(input_m3u8, output_mpd)

كيف يعمل السكريبت؟​

= الإدخال: يأخذ ملف M3U8 (إما ملف على جهازك أو رابط URL مثل http://example.com/playlist.m3u8).
= التحويل: يستخدم FFmpeg لتحويل البث من تنسيق HLS (M3U8) إلى تنسيق DASH (MPD).
ينسخ الفيديو والصوت مباشرة بدون تغيير جودتهما.​
يقسم الفيديو إلى مقاطع صغيرة (كل مقطع 4 ثوانٍ).
= الإخراج: ينتج ملف MPD (مثل output.mpd) مع المقاطع التي يمكن تشغيلها باستخدام مشغلات تدعم DASH مثل VLC.

كيف تستخدم السكريبت؟​

=احفظ الكود في ملف باسم convert.py.
=افتح موجه الأوامر (Command Prompt أو Terminal) وانتقل إلى المجلد الذي يحتوي على الملف.
شغّل الأمر التالي:
Bash:
python convert.py input.m3u8 output.mpd
استبدل input.m3u8 باسم ملف M3U8 أو الرابط الخاص به.
استبدل output.mpd بالاسم الذي تريده لملف MPD الناتج.

مثال:
Bash:
python convert.py http://example.com/playlist.m3u8 myvideo.mpd

ماذا سيحدث؟
إذا نجح التحويل، سترى رسالة: تم التحويل بنجاح من ... إلى ....
ستجد ملف myvideo.mpd في نفس المجلد، مع مقاطع الفيديو المرتبطة به.

ملاحظات مهمة:
  • إذا كان الفيديو مشفرًا (DRM): قد لا يعمل التحويل إذا كان الملف محميًا بتشفير. تحتاج إلى مفتاح فك التشفير.
  • مدة المقاطع: يمكنك تغيير seg_duration=4 في الكود إذا أردت مقاطع أقصر أو أطول.
  • البث المباشر: إذا كنت تستخدم بثًا مباشرًا، قد تحتاج إلى ضبط الإعدادات للتعامل مع تدفق مستمر.
  • مشاكل الشبكة: إذا كنت تستخدم رابط URL، تأكد من أن الإنترنت مستقر.
إذا واجهت مشكلة:
إذا ظهر خطأ، تحقق من:
أن FFmpeg مثبت بشكل صحيح (اكتب ffmpeg -version في موجه الأوامر).
أن ملف M3U8 أو الرابط يعمل.
أن لديك صلاحيات الكتابة في المجلد.
 
المواضيع ذات الصلة
MostafaAbdRabbu
  • MostafaAbdRabbu
الردود
4
المشاهدات
236
x32x01
x32x01
x32x01
الردود
0
المشاهدات
34
x32x01
x32x01
x32x01
الردود
0
المشاهدات
482
x32x01
x32x01
x32x01
الردود
0
المشاهدات
375
x32x01
x32x01
x32x01
الردود
0
المشاهدات
568
x32x01
x32x01
الوسوم : الوسوم
تنسيق mpd ملف m3u8
الدخول أو التسجيل السريع
نسيت كلمة مرورك؟
إحصائيات المنتدى
المواضيع
1,652
المشاركات
1,855
أعضاء أكتب كود
357
أخر عضو
khairysaad
عودة
أعلى