نشر بث كاميرا: RTSP وHLS ليسا الحافة نفسها
يتطلب التحكم بجلسة RTSP وتسليم HLS حافتين عامتين مختلفتين، حتى عندما يصل كلاهما إلى الكاميرا نفسها عبر VPN. اختر نموذج المشاهد أولًا.
أنت تفتح منفذًا واحدًا للكاميرا، وتوجّه مشغلًا إليه، وتفترض أن مشكلة الإنترنت قد حُلّت. ثم لا يستطيع هاتف تشغيلها، ولا يستطيع متصفح تشغيلها، وتكون صفحة إدارة الكاميرا على مسافة مسار واحد مكتوب خطأً من الحافة العامة. نموذج التسليم الذي اخترته، RTSP أو HLS، يحسم معظم ذلك قبل كتابة أي قاعدة جدار حماية. لا يوفر VPN سوى الجزء الخاص.
يُصلح VPN مسار المصدر، لا مسار المشاهد
يمكن لخادم VPS موصول بشبكة الكاميرا المحلية عبر نفق أن يصل إلى الكاميرا على عنوانها الخاص، وهذا مفيد حقًا. يعني ذلك أن الكاميرا لا تحتاج منفذًا واردًا خاصًا بها وأن موجه المنزل يبقى مغلقًا. لكنه لا يخبرك بأي لغة سيتحدث بها المشاهد. مشغل سطح المكتب والمتصفح والهاتف والتلفاز الذكي تدعم بروتوكولات مختلفة، ولكل منها توقعاته الخاصة بشأن TLS والمصادقة والترميزات.
إليك الافتراض الجدير بالطرح: أن النشر يعني جعل المصدر متاحًا. النشر يعني في الواقع منح جمهور محدد طريقة مدعومة لاستهلاك الوسائط. للبث المنشور تنسيق وجمهور وبيانات اعتماد؛ ولا يملك أي منها كاميرا يمكن الوصول إليها. إمكانية الوصول هي الجزء الذي يحله النفق، ونقطة دخول المشاهد هي الجزء الذي لا يزال عليك تصميمه.
RTSP مفاوضة، وليس منفذًا واحدًا
يحمل RTSP تحكم الجلسة: يطلب العميل وصفًا، ويهيئ مسار وسائط واحدًا أو أكثر، ثم يشغّل. تُتفاوض نقلة الوسائط نفسها أثناء هذا الإعداد، ولهذا لا يوصف البروتوكول جيدًا بمنفذ TCP واحد يُمرَّر. تلك المفاوضة هي الجزء الذي يفوته الناس عند مقارنة قواعد جدار الحماية.
بحسب نقاط النهاية، قد يصل RTP عبر منافذ UDP منفصلة أو يكون مُشابكًا في اتصال التحكم. المُرحّل الذي يمرر المنفذ 554 فقط ويفترض أن الباقي سيعمل ينتج عادة جلسة تتصل وتُبلّغ عن مسار ثم لا تعرض شيئًا. تحقق من النقل الذي تتفاوض عليه كاميرتك فعليًا قبل كتابة قواعد له. الالتقاط على الجانب الخاص يجيب عن ذلك في دقيقة، والتخمين يكلف أمسية.
لجمهور صغير ومعروف لديه مشغلات متوافقة، قد يكون مُرحّل RTSP المهيأ عمدًا الإجابة الصحيحة. قيّد المصدر الذي يجوز له سحبه واطلب المصادقة عند المُرحّل. سجّل المشغلات التي اختبرتها، لأن بث RTSP يعمل في VLC قد يفشل مع ذلك في متصفح.
HLS قائمة تشغيل إضافة إلى موارد
يجلب مشاهد HLS قائمة تشغيل، ثم يجلب مقاطع الوسائط التي تسمّيها تلك القائمة. مواصفات HLS تعرّف نموذج الموارد هذا، والتفصيل التشغيلي المهم هو أن قوائم التشغيل تشير إلى عناوين URL أخرى. تُحلّ المراجع النسبية بالنسبة لموقع القائمة، لذا يجب على الوكيل الذي يعيد كتابة المسارات أن يعيد كتابتها بشكل متسق.
إذا كانت الكاميرا تقدم بالفعل HLS صالحًا للاستخدام، فيمكن لواجهة أمامية عامة تمرير طلبات القائمة والمقاطع عبر النفق. راقب المفاتيح وإعادات التوجيه وعناوين URL التي يولّدها التطبيق. أي عنوان URL مطلق يشير إلى مضيف خاص ينكسر في اللحظة التي يتبعه مشاهد خارج الشبكة المحلية. المسارات النسبية هي التي تنجو من إعادة الكتابة عبر الوكيل، لذا فضّلها حيثما تتحكم في الناتج المولّد.
إذا كانت الكاميرا تتحدث RTSP فقط، فيجب على شيء ما تحويل المصدر إلى تنسيق المشاهد. إعادة التغليف والترميز التحويلي مهمتان مختلفتان: إعادة التغليف تحافظ على الترميز، بينما يعيد الترميز التحويلي ترميزه من أجل التوافق، والثاني فقط يكلف معالجًا بشكل جدي. لا يصبح أي منهما ضروريًا لمجرد وجود VPN في المسار.
خطّط لوصلة الرفع بناءً على المكان الذي يحدث فيه التوزيع. استقبال خاص واحد يغذي خدمة وسائط عامة يتصرف بشكل مختلف تمامًا عن كل مشاهد يسحب بثه عبر النفق. النمط الثاني ينتهي عادة باتصال منزلي مشبع وكاميرا تبدو وكأنها تفشل عشوائيًا.
ضع المصادقة على الحافة التي تنشرها
TLS ومصادقة المشاهدين وتسجيل الوصول تنتمي إلى نقطة الدخول العامة، لا إلى الكاميرا. هذا يُبقي بيانات اعتماد الكاميرا منفصلة عن بيانات اعتماد البث. كما يمنحك مكانًا واحدًا لإلغاء الوصول عندما يغادر أحد أفراد الجمهور. أما وضع تلك الضوابط على الكاميرا فيعني بدلًا من ذلك أن كل تغيير في الجمهور يصبح تغييرًا إداريًا على جهاز يجب ألا يكون متاحًا للجمهور أبدًا.
أبقِ VPN وأذونات إدارة الكاميرا منفصلة عن مسار النشر. خادم VPS يمكنه الوصول إلى واجهة الويب للكاميرا لسحب بث لا ينبغي أن يكون أيضًا الجهاز الذي يعرّض تلك الواجهة. يجب ألا يعرف الجمهور أبدًا عنوان الكاميرا.
ثم تحقق من الطرفين اللذين بنيتهما فعليًا بدلًا من افتراض أن السلسلة تعمل:
$ ffprobe -v error -rtsp_transport tcp rtsp://10.50.0.9:554/stream1
$ curl -sI https://stream.example.net/live/index.m3u8
HTTP/2 200
content-type: application/vnd.apple.mpegurl
الفحص الناجح للمصدر الخاص والجلب الناجح لقائمة التشغيل عند الحافة العامة يثبتان نصفين مختلفين من التصميم. اختبرهما منفصلين. التشغيل من نفس نوع العميل الذي يستخدمه جمهورك هو الاختبار الوحيد الذي يغطي السلسلة كاملة.
ما ينتهي بك إليه الأمر هو سلسلة لكل حلقة فيها غرض: مصدر خاص، واستقبال مقيّد، وتغليف مختار، ودخول مصرّح به للمشاهد. لا حلقة من تلك الحلقات اختيارية، ولا تُنشأ أي منها بفتح منفذ.