تختبر الصفحة على حاسوبك المحمول، فيبدأ المشغّل وتُغلق التذكرة. أما المشاهد على الطرف الآخر فيفتح الصفحة نفسها ويحصل على مؤشر تحميل لا ينتهي أبدًا. والتفسير المعتاد الذي يُقدَّم هو أن الـ VPN موجود على الخادم، لذا يجب أن يعمل التشغيل — لكن المتصفح هو المكوّن الذي يطلب قائمة التشغيل، وله مسار شبكته الخاص. والصفحة المضمَّنة على خادم ذي وصول خاص لا تُعير ذلك الوصول إلى من يحمّلها.

هذا يتعلق بصفحة ASP.NET قائمة تشغّل مصدر HLS مثل http://10.5.5.9:8080/live/stream.m3u8، وهو عنوان خاص للتوضيح. هناك ترتيبان يعملان؛ وأحدهما على الأرجح ليس ما بنيته.

خرافة: تحميل الصفحة يُثبت مسار الوسائط

إن HTML تلك الصفحة يأتي من خادم الويب الخاص بك، عبر المسار الذي يملكه خادم الويب. أما قائمة التشغيل والمقاطع فتأتي من أصل الوسائط، عبر المسار الذي يملكه المكوّن الطالب. وعندما يعمل المشغّل في متصفح المشاهد، فهذان عميلان مختلفان، وعنوانا مصدر مختلفان، وغالبًا نطاقا فشل مختلفان. ورؤية النجاح في الأول لا تقول شيئًا عن الثاني.

ما أثبته اختبارك في الحقيقة أضيق مما بدا: فحاسوبك يستطيع الوصول إلى الصفحة العامة وإلى مضيف الوسائط الخاص في الوقت نفسه. أما حاسوب المشاهد فلم يكن جزءًا من التجربة أبدًا.

ما تطلبه قائمة التشغيل بعد ذلك

RFC 8216 يفصل قوائم تشغيل الوسائط، التي تسرد المقاطع، عن قوائم التشغيل الرئيسية، التي تسرد قوائم تشغيل أخرى، ويحلّ معرفات URI النسبية مقابل URI الخاص بقائمة التشغيل الحاوية. تلك القاعدة هي الجزء الذي يتخطاه الناس. وجلب ملف .m3u8 واحد بنجاح ليس اختبار تشغيل، لأن الملف الذي جلبته فهرس وليس الوسائط.

اتبع السلسلة كما يفعل المشغّل: افتح قائمة التشغيل المختارة، ثم اطلب الموارد التي تسمّيها، ثم اتبع أي إعادة توجيه. فقائمة تشغيل تُقدَّم عبر خادم ويب يمكن الوصول إليه قد توجّه المشاهد مع ذلك إلى عنوان خاص لا يمكن الوصول إليه. وبالمثل، فإن نقل قائمة تشغيل نسبية إلى رابط آخر يغيّر الأساس الذي تُحلّ مقابلها مدخلاتها، ولهذا فإن إعادة كتابة أول رابط ظاهر والتوقف عند ذلك ينتج عادة قائمة تشغيل تبدو صالحة لكنها لا تستطيع التشغيل.

المشاهدة المباشرة: يحتاج المشاهد إلى المسار

إذا كان المفروض أن يصل المشاهدون إلى مضيف الوسائط مباشرة، فتحتاج أجهزتهم إلى الـ VPN المعتمد أو مسار خاص آخر، وإلى DNS يحلّ الأسماء التي استخدمتها فعلًا، وإلى إذن بالوصول إلى تلك الوجهات، وإلى أي مصادقة يطلبها خدمة الوسائط. افحص كل واحد منها على جهاز المشاهد لا على الخادم. فمتصفح على هاتف معرّفه الشخصي للـ VPN مثبّت لكنه غير متصل هو فشل شائع وقابل للتكرار تمامًا.

هذا الترتيب يبقي الأصل خاصًا ويدفع شرط الوصول إلى الجمهور. وهو قرار سياسي بقدر ما هو قرار تقني، لذا تأكد من أن كل مشاهد مقصود مسموح له بامتلاك ذلك المسار قبل أن تصمّم على أساسه.

التوصيل من جهة الخادم: نقطة دخول واحدة مُدارة

البديل هو واجهة وسائط أمامية مُصرَّح لها تجلب الأصل عبر مساره الخاص وتعيد نشر الموارد المواجهة للمشاهد فقط. حافظ على اتساق قائمة التشغيل والمقاطع وأي موارد مفاتيح مع نقطة الدخول الواحدة تلك، وإلا فسيجلب المشغّل قائمة تشغيل معاد كتابتها عبر الواجهة الأمامية والمقاطع مباشرة من عنوان لا يستطيع المشاهد الوصول إليه.

قيّد الأصل والمسارات المسموح بها في تلك الواجهة الأمامية. فالرابط العشوائي الذي يقدمه المستخدم يحوّل وسيطًا مفيدًا إلى جالب غير مقيّد لشبكتك الداخلية، وهذه مشكلة أسوأ بكثير من بثّ لا يعمل. أدرج الأصل وبادئة المسار في قائمة السماح بدلًا من التحقق من السلسلة بعد حدوثها.

بالنسبة إلى مصدر HLS قائم، افحص أولًا ما إذا كان التمرير المُتحكَّم به كافيًا؛ فوجود VPN في الوسط لا يعني أن إعادة الترميز مطلوبة. ثم تحقق من تركيبة المتصفح والترميز الفعلية، لأن الاستجابة التي يمكن الوصول إليها والصيغة المدعومة شرطان منفصلان. أبقِ متطلبات TLS والمصادقة وأمان المتصفح الخاصة بالأصل سليمة — فالمشغّل المضمَّن ليس استثناءً منها.

اختبر السلسلة، لا الرابط

نفّذ الفحوص من المكوّن الذي سيُرسل كل طلب فعلًا، واعتبر كل خطوة نتيجة قائمة بذاتها:

curl -s http://10.5.5.9:8080/live/stream.m3u8
curl -s -o /dev/null -w '%{http_code}\n' http://10.5.5.9:8080/live/segment-000123.ts

ثم أعد ذلك في متصفح المشاهد نفسه مع البث المقصود، لا بنمط اختبار من مكتبك. فتحميل الصفحة وتحميل قائمة التشغيل واسترداد المقطع وفشل التصريح أربع نتائج متمايزة، وأنت تريد رؤية الأربع جميعًا قبل أن تعتبره مُصلحًا. لا تثبّت إضافة متصفح قديمة لأن مثالًا قديمًا شغّل بثًا واحدًا بهذه الطريقة؛ فالجزء الناقص عادة هو مسار المشاهد أو رابط المقطع غير الموقّع.

وبعد أن يصبح الترتيب مقصودًا، اكتبه في سطر واحد: من يجلب الوسائط، وعبر أي مسار، وما المسموح للمشاهد بطلبه. تلك الجملة تحسم معظم الجدل المستقبلي حول لمن هذا البث فعلًا.

مقالات ذات صلة