إذا قمت بالبحث عن IPTV على الإطلاق، فقد رأيت عبارتين مراراً وتكراراً: "M3U URL" و "Xtream Codes". إنهما تقريباً نفس الشيء تحت الغطاء، ويدعمهما تقريباً كل مشغل حديث، لكن الاختيار بينهما مهم بالفعل — لأنهما يفشلان بطرق مختلفة، وغالباً ما يكون التبديل من أحدهما إلى الآخر هو الحل الأرخص عندما يكون هناك خطأ ما.
هذه مقارنة عملية لمستخدم IPTV، وليست تحليلاً تقنياً للبروتوكولات.
M3U عبارة عن عملية جلب واحدة لملف واحد؛ أما Xtream فهي واجهة برمجة تطبيقات (API) صغيرة يستمر المشغل في التحدث إليها.
ما هما في الواقع
M3U هو ملف نصي مسطح. افتح واحداً في محرر نصوص وسترى ترويسة (#EXTM3U)، ثم سلسلة من سطور #EXTINF:… تربط كل قناة برابط بث. إنه تقريباً أبسط تنسيق موجود. يقوم مشغلك بتنزيل الملف مرة واحدة، ويحلله، ويصبح لديه الآن قائمة قنوات.
#EXTM3U
#EXTINF:-1 tvg-id="bbc1" group-title="UK",BBC One HD
http://provider.example/live/bbc1/index.m3u8
هذا هو نموذج البيانات بالكامل: قائمة بالقنوات، لكل منها اسم ورابط. لا يوجد شيء ديناميكي. إذا كنت تريد قائمة محدثة، فيجب عليك إعادة تنزيل الملف.
Xtream Codes عبارة عن واجهة برمجة تطبيقات HTTP (HTTP API). تقوم بإعطاء المشغل خادماً واسم مستخدم وكلمة مرور؛ فيستدعي المشغل عدداً قليلاً من نقاط النهاية (get.php?type=m3u_plus، player_api.php، xmltv.php) لجلب قائمة القنوات، ومكتبة VOD، وكتالوج المسلسلات، والدليل كمستندات منفصلة. يتم بناء روابط البث الفعلية بواسطة المشغل من بيانات الاعتماد ومعرف القناة.
ميكانيكياً، يُرجع تسجيل الدخول إلى Xtream دائماً تقريباً M3U كأحد نقاط النهاية الخاصة به — عندما تقوم بـ "استيراد M3U" من مزود Xtream، فأنت تستخدم استدعاءً واحداً محدداً من واجهة برمجة التطبيقات. العكس ليس صحيحاً: فملف M3U العادي لا يعرض أي شيء آخر.
متى تختار كلاً منهما
استخدم M3U إذا كنت:
- تهتم فقط بالقنوات المباشرة. لا يحتوي M3U على أي مفهوم لـ VOD أو كتالوج المسلسلات؛ إذا كان مزودك يوفرها، فلن يظهرها M3U.
- تريد الاحتفاظ بنسخة محلية (snapshot). ملف M3U قابل للنقل — يمكنك نسخه احتياطياً، وتعديله في محرر نصوص، ومشاركة مجموعة فرعية منسقة مع شخص آخر.
- لا تثق في بقاء المزود لفترة طويلة. يستمر ملف M3U المُصدَّر في العمل طالما أن روابط البث الموجودة فيه تعمل، حتى لو اختفت نقطة نهاية واجهة برمجة تطبيقات المزود غداً.
- تعاني من مشاكل (bugs) من جهة المزود. يحتوي M3U على أجزاء متحركة أقل. إذا كانت واجهة Xtream API الخاصة بهم غير مستقرة ولكن تصدير M3U يعمل، فما عليك سوى استخدام M3U.
استخدم Xtream Codes إذا كنت:
- تريد VOD والمسلسلات. فهي ببساطة لا تظهر عبر M3U العادي.
- تريد فئات يمكن للمشغل استخدامها بشكل أصلي. يرسل Xtream "المباشر" و "VOD" و "المسلسلات" كأشجار منفصلة؛ بينما يحتوي M3U فقط على سلاسل
group-title، وهي اصطلاحية ولكنها غير منظمة. - تغير الأجهزة كثيراً ولا تريد إعادة الاستيراد. تعمل بيانات اعتماد Xtream في كل مكان، وأي مشغل متوافق سيلتقط نفس المكتبة بالضبط منها.
- تريد أن يقوم المشغل بتحديث قائمة القنوات ديناميكياً. يعيد Xtream جلب البيانات في كل جلسة؛ بينما M3U يقتصر على وقت التنزيل.
كيف تعرف أيهما تملك
إذا سجلت مع مزود وأرسل لك سطراً واحداً مثل:
http://server.example:8080/get.php?username=ABC&password=XYZ&type=m3u_plus&output=mpegts
فهذا رابط M3U. يمكنك لصقه مباشرة في أداة اختبار M3U للتحقق من عمله.
إذا أرسلوا لك ثلاثة أشياء — رابط خادم، واسم مستخدم، وكلمة مرور — فهذا تسجيل دخول Xtream. تحتوي معظم المشغلات الحديثة على نموذج "إضافة مصدر Xtream" (Add Xtream source) منفصل. يوفر معظم المزودين بكل سرور كلا الخيارين: تعمل نفس بيانات الاعتماد عبر كلتا الواجهتين، ويمكنك استخدام أداة اختبار M3U للتحقق من نقطة نهاية قائمة التشغيل و مدقق EPG للتحقق من نقطة نهاية الدليل، كل ذلك دون تثبيت أي شيء.
أنماط الفشل الشائعة (وإلى أي شكل يجب التبديل)
يمكن أن يعمل نفس المزود بشكل مثالي على إحدى الواجهات ويكون معطلاً تماماً على الواجهة الأخرى. هناك ستة أنماط للفشل تستحق المعرفة.
M3U يرجع HTML
قمت بلصق الرابط في أداة الاختبار وحصلت على رسالة "أرجع الخادم صفحة HTML". يعني هذا عادةً أن نقطة نهاية M3U تتطلب ملف تعريف ارتباط (cookie) للجلسة، أو أن مزودك قد حد من عدد الطلبات من الـ IP الذي يتصل به. جرب Xtream — غالباً ما تكون نقاط نهاية واجهة برمجة التطبيقات أقل تقييداً بشكل عدواني من التصدير المجمع لـ M3U.
Xtream يرجع خطأ في المصادقة (auth failed) ولكن M3U يعمل
يقوم بعض المزودين بتحديث قاعدة بيانات بيانات اعتماد Xtream الخاصة بهم بتأخير. يتم توقيع رابط M3U في وقت إصداره ويستمر في العمل؛ بينما ترفضك واجهة برمجة التطبيقات لأنها لم تلتقط كلمة المرور الجديدة بعد. انتظر ساعة، أو استخدم M3U فقط.
يمكن لمشغل قراءته، ولا يمكن لآخر
يعد Xtream Codes مواصفات فعلية (de facto)، وليست رسمية. هناك مزودون يدّعون دعم Xtream لكنهم ينفذون اثنتين فقط من نقاط النهاية القياسية؛ وهناك مشغلات تصل إلى نقطة نهاية غير قياسية وتفشل عندما تكون مفقودة. إذا لم يتمكن مشغل من قراءة مزود Xtream الخاص بك ولكنه يقرأ M3U بشكل جيد، فانتقل إلى M3U. العكس نادر الحدوث ولكنه يحصل.
شعارات القنوات مفقودة في M3U وموجودة في Xtream
في M3U، تكون روابط الشعارات مضمنة (tvg-logo="…"). في Xtream، يتم توفيرها بواسطة نقطة نهاية مخصصة للشعارات. إذا كان ملف M3U الخاص بك يحتوي على روابط شعارات مشوهة أو قديمة، فإن التبديل إلى Xtream سيؤدي إلى إعادة ملئها. الحالة العكسية (الشعارات في M3U، ومفقودة في Xtream) لا تحدث تقريباً أبداً.
دليل البرامج (EPG) يرتبط بالقنوات في نموذج واحد دون الآخر
يجب أن يتطابق <channel id="…"> الخاص بـ XMLTV مع tvg-id="…" في M3U أو حقل channel-id في Xtream. هذه المعرفات ليست دائماً متطابقة في كلا التنسيقين — يقوم المزودون بتجديدها أحياناً وفقاً لجدول زمني. إذا كان دليلك فارغاً في M3U ولكنه ممتلئ في Xtream، فإن المعرفات غير متطابقة في M3U؛ فما عليك سوى استخدام Xtream.
أحد التنسيقين أسرع
يقوم Xtream عبر شبكة بطيئة بإجراء الكثير من الطلبات (round trips) مقارنة بـ M3U. في حالة الاتصال غير المستقر، يمكن أن يكون الفرق 5-10 ثوانٍ عند بدء التشغيل. ينزل M3U مرة واحدة ويستمر من البيانات المحلية. إذا كانت سرعة التشغيل الأولى تهمك، فعادة ما يفوز M3U.
ما يفعله Klipa
يدعم Klipa كلاهما، ويتعامل معهما كمصادر قابلة للتبديل (يمكنك الحصول على تسجيل دخول M3U واحد و Xtream واحد جنباً إلى جنب في نفس المكتبة)، ويعيد جلب كلاهما في الخلفية. إذا بدأ M3U في إرجاع HTML، فإن جلسة Xtream تحافظ على قائمة القنوات الخاصة بك حية حتى التحديث التالي. وإذا تعطلت مصادقة Xtream، فإن M3U المخزن مؤقتاً يستمر في العمل.
التوصية القوية هي: اختر أي ما يقدمه مزودك بشكل أكثر موثوقية، ولكن لا تكن وفياً لنموذج واحد. التنسيق ليس هو المنتج. القنوات هي المنتج.