مرحبا بالجميع. يتم فتح العشرات من المكالمات المختلفة يوميًا في دعمنا ، بدءًا من الأسئلة البسيطة "المساعدة في إنشاء مجموعة" إلى "التعقيد لا يعمل ، والتدفق متعثر أحيانًا" ، ولكن هناك أسئلة يمكن للعين أن تنتفض منها بالفعل ويمكن لكل موظف في الشركة الإجابة عليها بالتفصيل.
وبما أن الأسئلة لا تتوقف ، مما يعني أنه يمكنك الإجابة هنا.
لماذا يتأخر الفيديو؟
لدينا مقالتان على المدونة (
واحدة ،
اثنتان ) حول هذا الموضوع ، اقرأهما إذا كنت تعمل مع الفيديو ، وهنا سأقدم إجابة قصيرة وشاملة:
دفق الإنترنت الحديث هو
بروتوكول HLS . أحيانًا DASH ، لكن هذا ليس مهمًا ، لأنهما مقسمان.
كيف يعمل؟ يتم "بث" الفيديو المتدفق إلى ملفات صغيرة (عادةً 2-8 ثوانٍ ، اعتمادًا على ديناميكيات المحتوى) ، ويتم تجميع 3-10 مقاطع من هذا القبيل ووصفها بقائمة تشغيل خاصة ، والتي يتم تحديثها تلقائيًا عند حذف المقطع القديم وإضافة مقطع جديد. بسيط جدا. المزيد من المقاطع - تأخير أطول ، مدة أطول لكل مقطع - تأخير أطول. 10-20 ثانية أمر طبيعي.
لماذا هذا مطلوب؟ لماذا تخزن العديد من مقاطع الفيديو في ذاكرة خادم الفيديو؟ يسمح التقسيم للمشغل بعدم الاستجابة لعدم استقرار اتصال الإنترنت ، وعدم مقاطعة الفيديو عند التبديل من شبكة Wi-Fi إلى اتصال محمول. إذا لم يتم تحضير الفيديو مقدمًا وتعبئته في ملفات منفصلة ، فعند حدوث أي خلل بسيط أو نقص في النطاق الترددي ، سيكون لدينا تشوهات فيديو على الشاشة ، ويمنح التقسيم المشغل حوالي 4-20 ثانية لاستعادة اتصال اللاعب وتحميل بيانات جديدة.
ماذا تفعل إذا كنت بحاجة إلى فيديو دون تأخير؟ اختر بروتوكولًا مختلفًا إذا كنت تنوي ترتيب محادثة على الويب والتحكم في المروحية عبر الإنترنت ومشاهدة كاميرات IP-video. فيما يلي أمثلة: WebRTC ، MSE-LD ، RTMP.
كيف تحمي الفيديو؟ الصق فقط على موقعك
المهمة بسيطة للغاية - يجب حماية الفيديو على الموقع من إدراجه في مواقع أخرى ، ولا أحد يريد الدفع مقابل حركة مرور شخص آخر ، وحركة مرور الفيديو باهظة الثمن. ويمكن أن يكون الفيديو خاصًا ولا يجب أن يتجاوز حسابك الشخصي.
لدي دائمًا إجابة واحدة لجميع هذه الطلبات -
تحتاج إلى تكوين Securelink على موقعك. حماية المحتوى غير ممكنة من جانب واحد - يجب على الموقع نفسه إنشاء روابط ، لا يمكنك فقط أخذ وإدراج رابط ثابت إلى الموقع.
Securelink هي تقنية حماية رابط قديمة وفعالة للغاية. يعرف العديد من habruchitel عن وحدة خاصة لـ Nginx - ngx_http_secure_link_module. نحن لا نستخدم Nginx ، ولكن هناك تنفيذ مشابه وليس أقل كفاءة ، والفرق الوحيد هو في ترتيب المعلمات.
كيف يعمل؟ يقوم الموقع بإنشاء ارتباط
فريد لمرة واحدة بناءً على بيانات المستخدم. وماذا يعرف خادم الويب عن العميل؟ هذا صحيح ، هذا هو عنوان IP ، وكيل المستخدم ، ملف تعريف الارتباط ، عنوان URL المطلوب. إذا كان العميل مفوضًا ، فيمكنك في متغيرات الجلسة الحصول على معلومات أخرى ، على سبيل المثال ، معرف عميل فريد في قاعدة بيانات الخدمة ، أو ، على سبيل المثال ، صلاحية الاشتراك.
نجمع المعلمات في سطر واحد وتجزئة باستخدام الخوارزمية المفضلة لديك ، على سبيل المثال ، SHA1. اتضح مجموعة من الشخصيات عديمة الفائدة. على سبيل المثال ، ستكون التجزئة من السلسلة "127.0.0.1Habr" هي: 70ebe94671dd21bd65f4a00dfd988adc83fe6bda.
سيتم نقل هذا الخط إلى مشغل الفيديو وستكون مهمته التحقق من صحة الارتباط ، الذي تم إنشاؤه بواسطة موقعك ، وليس "فاسدًا" ولم يتم تمريره إلى أطراف ثالثة. لا توجد تعليقات من الموقع ، لذلك يجب أن يقوم دفق الفيديو بتوليد التجزئة باستخدام نفس البيانات التي يستخدمها موقع الويب. يعرف مشغل الفيديو أيضًا عنوان IP للعميل والمحتوى المطلوب ، ولكن لا يمكنه بأي حال من الأحوال معرفة معرف المستخدم أو عمر الارتباط. سيكون عليك نقل هذه البيانات مباشرة إلى الرابط واستخدام المفتاح السري حتى لا يتمكن أي شخص من إنشاء روابط لأنفسهم.
نأخذ الخط "127.0.0.1Habr1540327100SECRET" ونحصل على SHA1 99fe961672c52aa3033b98b545ec2cdec93bf515 ، والآن نشكل رابطًا من النموذج:
example.com/Habr/index.m3u8؟token=99fe961672c52aa3033b98b545ec2cdec93bf515-1540327100example.com هو خادم الفيديو الخاص بك ، و Habr هو الفيديو المطلوب ، و index.m3u8 هو الاسم القياسي لقائمة تشغيل HLS ، ورمز القيمة هو السلسلة من خادم الويب الذي أنشأناه.
يستخرج مشغل الفيديو بسهولة من هذه البيانات كل ما هو مطلوب للحصول على نفس التجزئة: تتم قراءة عنوان IP من متغير خادم الويب ، والمحتوى المطلوب من عنوان URL ، والعمر من معلمة الرمز المميز ، والشيء الوحيد الذي يفتقر إليه هو المفتاح السري ، وسيتعين عليه التسجيل في ملف التكوين والحفاظ على السرية.
لن تتمكن من إرسال مثل هذا الرابط إلى صديق أو فتحه في متصفح آخر - يوجد عنوان IP في صيغة التجزئة ، ولن تنجح في استبدال العمر - فلن تتطابق التجزئة.
مطبات
أردت حقًا أن أصف في فقرتين ، ولكن باختصار لم ينجح الأمر. هذه هي المشكلة الأولى - ليس الجميع على استعداد للخوض في مثل هذه التفاصيل ، لأنه من الأسهل بكثير إدراج رابط ثابت. لدينا
أمثلة جاهزة على موقعنا ، لذلك لا ينبغي أن تكون هناك مشكلة.
غالبًا ما يحدث أن الموقع وخادم الويب يحددان عنوان IP للعميل بشكل غير صحيح ، وهذا أمر طبيعي إذا تم استخدام شبكات CDN ، على سبيل المثال ، CloudFlare. في هذه الحالة ، تحتاج إلى أخذ عنوان IP من العنوان الصحيح ، قد تحتاج إلى مساعدة مزود CDN. على سبيل المثال ، لدى CloudFlare CF-Connecting-IP.
وقت خاطئ. غالبًا ما يؤدي الوقت غير الصحيح على أحد الخوادم ، جنبًا إلى جنب مع محاولات تقليل عمر الارتباط إلى الحد الأدنى ، إلى قطع الارتباطات. يحدث أيضًا أن يترك المستخدم علامة التبويب مفتوحة لعدة ساعات ، ومن ثم لا يمكنه تشغيل الفيديو نظرًا لقصر عمره.
عمر الارتباط 3-24 ساعة - هذا أمر طبيعي ، فهي محمية على أي حال وهناك طرق للحد من عدد المشاهدات المتزامنة.
بدلا من المجموع
أخبرنا في التعليقات كيفية الالتفاف على آلية حماية الارتباط هذه؟