ماذا تعني كل هذه الاختصارات؟ ما الذي يتطلبه تطوير مشغل مفتوح المصدر لمشاهدة مقاطع الفيديو من Amazon و Sky ومنصات أخرى ومشاهدة مقاطع الفيديو من أي مزود؟ تحدث سيباستيان جولاش عن كيفية إجراء عملية دفق الفيديو في مؤتمر HolyJS 2018 Piter. تحت القطع - فيديو وترجمة تقريره.
سيباستيان جولاش مطور حاليًا في Deutsche Telekom. عمل مع Java و PHP لفترة طويلة ، ثم انتقل إلى JS و Python و Rust. على مدى السنوات السبع الماضية ، كان يعمل على منصة Qivicon الذكية الخاصة بالملكية.قليلا عن تاريخ دفق الفيديو
أولاً ، دعنا نلقي نظرة على تاريخ الويب ، حيث انتقلنا من QuickTime إلى Netflix في 25 عامًا. بدأ كل شيء في التسعينات عندما اخترعت Apple QuickTime. بدأ استخدامه على الإنترنت في 1993-1994. في ذلك الوقت ، يمكن للمشغل تشغيل الفيديو بدقة 156 × 116 بكسل وتردد 10 إطارات في الثانية ، دون تسريع الأجهزة (باستخدام موارد المعالج فقط). ركز هذا التنسيق على اتصال هاتفي بالباود 9600 - 9600 بت في الثانية ، بما في ذلك المعلومات العامة.
كان وقت متصفح Netscape. لم يبدو الفيديو في المتصفح جيدًا ، لأنه لم يكن أصليًا على الويب. للتشغيل ، استخدمنا برنامجًا خارجيًا (نفس QuickTime) مع واجهته الخاصة ، والتي تم تصورها في المتصفح باستخدام علامة التضمين.

أصبح الوضع أفضل قليلاً عندما أصدرت Macromedia مشغل Shockwave (بعد أن استحوذت Adobe على Macromedia وأصبح يعرف باسم Adobe Flash Player). تم إصدار الإصدار الأول من Shockwave Player في عام 1997 ، ولكن عرض الفيديو ظهر فيه فقط في عام 2002.
استخدموا برنامج الترميز Sorenson Spark الملقب H.263. لقد تم تحسينه من أجل الدقة الصغيرة وحجم الملف الصغير. ماذا يعني هذا؟ على سبيل المثال ، وزن مقطع فيديو مدته 43 ثانية تم استخدامه لاختبار مشغل Shockwave 560 كيلوبايت فقط. بالطبع ، لن يكون من الرائع مشاهدة فيلم بهذه الجودة ، لكن التكنولوجيا نفسها كانت مثيرة للاهتمام في ذلك الوقت. ومع ذلك ، كما هو الحال في QuickTime ، لكي يعمل Shockwave Player في المتصفح ، كان هناك حاجة إلى برامج إضافية. واجه هذا المشغل الكثير من مشكلات الأمان ، ولكن أهم شيء هو أن الفيديو لا يزال عبارة عن وظيفة إضافية للمتصفح.
في عام 2007 ، أصدرت Microsoft برنامج Silverlight ، الذي يذكرنا إلى حد ما بـ Flash. لن نتعمق ، ولكن كل هذه الحلول لها شيء مشترك - صندوق أسود. عمل جميع اللاعبين كبرنامج إضافي للمتصفح ، ولم يكن لديك فكرة عما يحدث في الداخل.

عنصر < Video/
>
في عام 2007 ، اقترح Opera استخدام علامة <
Video/
> ، أي إنشاء فيديو أصلي في متصفح. نستخدمه اليوم. إنه سهل ومريح ، ولا يمكن مشاهدة أي فيديو فحسب ، بل يمكن تنزيله أيضًا. وحتى إذا لم نرغب في السماح بتنزيل الفيديو ، فلا يمكننا منع تنزيله على المتصفح. الحد الأقصى هو جعل تحميل الفيديو أكثر صعوبة.

<Video/>
هي عكس المربع الأسود تمامًا ، وعرض التعليمات البرمجية المصدر بسيط للغاية.

DRM
ومع ذلك ، لا يمكنك النقر بزر الماوس الأيمن على مقطع فيديو على Netflix وتحديد "حفظ باسم". والسبب في ذلك هو DRM (إدارة القيود الرقمية). هذه ليست تقنية واحدة أو تطبيق واحد يؤدي أي مهمة. هذا مصطلح عام لمفاهيم مثل:
- المصادقة وتشفير المستخدم
- التشفير القائم على المحتوى
- تعريف الحقوق وتطبيق القيود
- ملاحظات وتحديث
- التحكم في الإخراج وحماية الارتباط
- فحص وتتبع الدخلاء
- إدارة المفاتيح والترخيص
لفهم ماهية إدارة الحقوق الرقمية ، نحتاج إلى دراسة نظامها البيئي ، أي لمعرفة الشركات المشاركة. هذا:
- يقع مالكو المحتوى على رأس النظام البيئي. على سبيل المثال ، Disney أو MGM أو FIFA. تنتج هذه الشركات محتوى ولها حقوق فيه.
- نوى DRM هي شركات توفر تقنية DRM (على سبيل المثال ، Google ، Apple ، Microsoft ، إلخ.) حاليًا ، هناك حوالي 7-8 تقنيات DRM من شركات مختلفة.
- مزودو الخدمة - تطوير برنامج خادم يقوم بتشفير الفيديو.
- المتصفحات التي هي في الواقع لاعبين.
- موفري المحتوى هم شركات مثل Netflix و Amazon و Sky وما إلى ذلك. وكقاعدة عامة ، لا يمتلكون حقوق المحتوى ، بل يرخصون ويوزعونه.
- كما يشارك بائعي الرقائق / الأجهزة في النظام البيئي ، لأن DRM ليست تقنية برمجيات فقط. تقوم بعض الشركات (الصينية بشكل رئيسي) بتطوير رقائق تقوم بتشفير وفك تشفير الفيديو.
هل تساءلت يومًا عن سبب عدم عرض دقة عالية جدًا (SD) عند عرض مقطع فيديو على Netflix في مستعرض ، ولكن إذا شاهدت نفس الفيديو على Apple TV أو Android TV Box ، فسيتم تشغيل نفس المحتوى بدقة عالية كاملة أو في 4K؟ DRM مسؤولة أيضًا عن ذلك. والحقيقة هي أن الشركات المصنعة تخشى دائمًا من سرقة القراصنة المحتوى. لذلك ، كلما كانت البيئة التي يتم فيها فك تشفير الفيديو أقل أمانًا ، كلما كانت الجودة أسوأ بالنسبة للمستخدم. على سبيل المثال ، إذا تم تنفيذ فك التشفير برمجيًا (على سبيل المثال ، في Chrome أو Firefox) ، فسيتم عرض الفيديو بأسوأ جودة. في بيئة يتم فيها استخدام إمكانات الأجهزة لفك التشفير (على سبيل المثال ، إذا كان Android يستخدم GPU) ، فإن احتمالات النسخ غير القانوني للمحتوى أقل ، وهنا تكون جودة التشغيل أعلى. أخيرًا ، فإن البيئة الأكثر أمانًا هي الأجهزة بالكامل (Apple TV أو Android TV Box) ، حيث يتم تنفيذ فك التشفير والتشغيل بدون تضمين البرنامج.

ولكن إذا تحدثنا عن المتصفحات ، فعادةً ما يتم تنفيذ فك التشفير فيها بواسطة البرنامج. تستخدم المستعرضات المختلفة أنظمة مختلفة لـ DRM. يستخدم Chrome و Firefox Widevine. هذه الشركة مملوكة لشركة Google وترخص تطبيقات إدارة الحقوق الرقمية الخاصة بها. وبالتالي ، لفك الشفرة ، يقوم Firefox بتنزيل مكتبة DRM من Google. في المتصفح ، يمكنك معرفة مصدر التنزيل.

تستخدم Apple نظام FairPlay الخاص بها ، والذي تم إنشاؤه عندما طرحت الشركة أول iPhone و iPad. تستخدم Microsoft أيضًا تطويرها الخاص الذي يطلق عليه PlayReady ، والذي تم تضمينه في Windows مباشرة. في حالات أخرى ، غالبًا ما يتم استخدام Widevine. يوجد هذا النظام كتطبيق وكحل للجهاز - رقائق تقوم بفك تشفير الفيديو.
Cdm
يشير اختصار CDM إلى وحدة فك تشفير المحتوى. هذه بعض البرامج أو الأجهزة التي يمكن أن تعمل بعدة طرق:
- قم بفك تشفير الفيديو ، وبعد ذلك يتم عرضه في المتصفح باستخدام علامة <Video />.
- قم بفك تشفير وفك تشفير الفيديو ، ثم نقل الإطارات الخام للفيديو للتشغيل إلى المستعرض.
- قم بفك تشفير وفك تشفير الفيديو ، ثم نقل الإطارات الخام للفيديو للتشغيل باستخدام GPU.
على الرغم من دعم GPU ، يتم استخدام الخيار الثاني في أغلب الأحيان (على الأقل عندما يتعلق الأمر بمتصفح Chrome و Firefox).
فك وفك طبقات الطبقات في المتصفح
فكيف يعمل كل ذلك معا؟ لفهم ذلك ، انظر إلى طبقات فك التشفير وفك التشفير في المتصفح. وهي مقسمة إلى:
- تطبيق JavaScript - يخبر الكمبيوتر بالفيديو الذي سأشاهده.
- المتصفح هو مشغل يقوم بتشغيل محتوى الفيديو.
- وحدة فك تشفير المحتوى.
- إدارة الحقوق الرقمية هي كل شيء عن فك تشفير الفيديو (لم أستطع التوصل إلى تدوين أفضل ، لذلك دعوت ذلك).
- وقت تشغيل موثوق به.
- في هذه الحالة ، المكونان الأولان هما مشغل DRM ، ووحدة فك تشفير المحتوى هي عميل DRM ، والمكونان الأخيران هما جوهر DRM.

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

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

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

مشغل Netflix مكتوب بلغة JavaScript ويحتوي على أكثر من 76000 سطر من التعليمات البرمجية ، وبالطبع لا يمكنني تحليله بالكامل. لكن أود أن أعرض الأجزاء الرئيسية اللازمة لتشغيل الفيديو المحمي.
سنبدأ مع القالب:

EME
ولكن قبل الخوض في الوظائف ، نحتاج إلى التعرف على تقنية أخرى - EME (ملحقات الوسائط المشفرة ، ملحقات الوسائط المشفرة). لا تقوم هذه التقنية بفك التشفير وفك التشفير ، فهي مجرد واجهة برمجة تطبيقات للمتصفح. يعمل EME كواجهة لـ CDM ، و KeySystem ، وخادم مرخص ، وخادم يتم فيه تخزين المحتوى.
لذلك دعونا نبدأ مع getKeySystemConfig.

يجب أن يوضع في الاعتبار أنه يعتمد على الموفر ، لذا فإن التهيئة التي أقدمها هنا تعمل مع Netflix ، ولكنها لا تعمل ، على سبيل المثال ، في Amazon.
في هذا التكوين ، يجب أن نخبر نظام الواجهة الخلفية بمستوى وقت التشغيل الموثوق الذي يمكننا تقديمه. يمكن أن يكون هذا آمنًا لفك تشفير الأجهزة أو فك تشفير برنامج آمن. أي أننا نخبر النظام عن الأجهزة والبرامج التي سيتم استخدامها للتشغيل. وذلك سيحدد جودة المحتوى.

بعد تكوين التكوين ، انظر إلى إنشاء MediaKeySystem الأولي.

هذا هو المكان الذي يبدأ فيه التفاعل مع وحدة فك تشفير المحتوى. يجب أن تخبر API عن نظام DRM و KeySystem الذي نستخدمه. في حالتنا ، هذا هو Widevine.

الخطوة التالية اختيارية لجميع الأنظمة ، ولكنها مطلوبة لـ Netflix. مرة أخرى ، تعتمد ضرورتها على الموفر. نحتاج إلى تطبيق شهادة خادم على مفاتيح الوسائط الخاصة بنا. شهادات الخادم هي نص عادي في ملف Netflix Cadmium.js يمكن نسخه بسهولة. وعندما نطبقها على mediaKeys ، تصبح جميع الاتصالات بين الخادم مع الترخيص ومتصفحنا آمنة بفضل استخدام هذه الشهادة.

عندما يتم ذلك ، يجب أن ننتقل إلى العنصر الأصلي للفيديو ونقول: "حسنًا ، هذا هو النظام الأساسي الذي نريد استخدامه ، وهذه هي علامة الفيديو الترحيبية. دعونا نوحدك ".

وإليك الوظيفة الأخيرة التي تحتاجها لتكوين نظام الفيديو.

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

عندما ندعو create.Session على كائن mediaKeys ، نحتاج إلى معرفة الفيديو الذي ندعمه. في هذه الحالة ، يكون MP4. هذا يعيدنا إلى سياق الرسائل مع نظام CDM الخاص بنا. نحتاج أيضًا إلى Netflix لتطبيق شهادة خادم base64 في كل نموذج ، ولكن كل هذا التكوين في جلسة الإنشاء يتم توفيره مرة أخرى اعتمادًا على نظام إدارة الحقوق الرقمية.

آخر وظيفة هنا أدناه - keySession.generateRequest ينشئ طلب ترخيص في الخلفية. أو تقوم آلية التنمية النظيفة بإنشاء طلب ترخيص في الخلفية. بمعنى آخر ، هذه بيانات ثنائية أولية يجب أن نرسلها إلى الخادم المرخص للحصول على ترخيص صالح في المقابل.

هنا cenc من الفائدة. إنه معيار تشفير ISO الذي يحدد مخطط الأمان لفيديو mp4. في WebM ، يسمى هذا بشكل مختلف ، ولكن الوظيفة تؤدي نفس الشيء.
handleMessage هي واجهة EventListener التي قمنا بتكوينها. عندما يتم رفع هذا الحدث بواسطة حدث الرسالة في keySession ، فإننا نعلم أننا مستعدون للحصول على ترخيص من الخادم.

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

إذا طبقنا هذا على الرسم البياني أدناه ، نحصل على هذا: نريد تشغيل الفيديو ، ويقول تطبيق JavaScript: "مرحبًا ، متصفح! أريد تشغيل الفيديو! " - ثم يستخدم ملحقات الوسائط المشفرة ويقدم طلبًا إلى وظائف الترخيص في Widevine CDM للحصول على ترخيص. ثم يتم إرجاع هذا الطلب مرة أخرى إلى المتصفح ، ويمكننا استبداله بترخيص صالح على خادم الترخيص ، وبعد ذلك نحتاج إلى إعادة هذا الترخيص إلى CDM. تم عرض هذه العملية في الكود أعلاه.

ولكن لاحظ أننا لم نفقد ثانية من الفيديو حتى الآن ، وعلينا جميعًا القيام بذلك حتى نتمكن من تشغيل بعض مقاطع الفيديو في المستقبل.
MSE
هناك تقنية أخرى نحتاج إلى البحث عنها وهي MSE (ملحقات مصدر الوسائط). يمكن أن تسمى الشقيقة غير الشقيقة لـ EME (ملحقات الوسائط المشفرة). هذه أيضًا واجهة برمجة تطبيقات للمتصفح ، ولا علاقة لها بـ DRM. أراه كواجهة برمجة لـ <
Video/
> Src. باستخدامه ، يمكنك إنشاء تدفقات ثنائية في JavaScript وتطبيق أجزاء
Video/
عنصر <
Video/
>. وبالتالي ، بفضل ذلك ، يصبح مصدر علامة <
Video/
> ديناميكيًا.
لذا ، يمكننا استخدام الإضافات لمصادر الوسائط المتعددة ، وإنشاء الفيديو والوصول إليه ، ثم تنزيل أجزاء الفيديو في أجزاء وتطبيقها على علامة <
Video/
>.

النقطة الأساسية هي أنه عندما تشاهد فيديو مدته ساعتان ، فأنت لا تريد الانتظار حتى يتم تحميله بالكامل. بدلاً من ذلك ، يمكنك تقطيعه إلى قطع صغيرة يتراوح حجمها من حوالي 30 ثانية إلى دقيقتين وتطبيقها على عنصر <
Video/
> واحدًا تلو الآخر.
بمجرد أن يصبح المخزن المؤقت MediaSource جاهزًا وربطه بعنصر <
Video/
> ، يمكننا إضافة SourceBuffer. يجب أن نخبره مرة أخرى عن تنسيق الفيديو وبرامج الترميز التي نستخدمها ، ومن ثم سيتم إنشاؤها.

أخيرًا ، يمكننا الآن الجلب من الأجزاء الفردية وإرسالها إلى SourceBuffer باستخدام طريقة الإلحاق بالعنصر <Video /> ، وتلقي مقطع فيديو تم إنشاؤه ديناميكيًا. يمكن استخدامه أيضًا لحالات الاستخدام الأخرى حيث يمكن للأشخاص الجمع بين عناصر مختلفة من الفيديو بشكل مستقل ، وإنشاء مقاطع الفيديو الخاصة بهم ، لكنني لا أرغب في التعمق فيها.

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

البيان
ولكن هناك نقطة أخرى. كيف نعرف الأجزاء التي نحتاج إلى تنزيلها ، ومن أين ننزلها ، ومتى؟ وهذا هو الجزء الأخير ، الطلب المفقود من البيان. عندما نقوم باستعلام Netflix عن بيان ، فإنه يحتاج إلى الكثير من البيانات. إذا أردنا فقط تشغيل مقطع فيديو ، فمن المهم بالنسبة لنا أي نظام DRM نستخدمه ، وما الفيديو الذي نريد مشاهدته (معرف Netflix ، والذي يمكن نسخه من عنوان URL) والملفات الشخصية. تحدد الملفات الشخصية الدقة التي نتلقىها من الفيديو ، وأي لغة نتلقى المسارات الصوتية ، وبأي تنسيق (ستريو ، Dolby Digital ، إلخ) ، وما إذا كنا نستخدم الترجمات ، وما إلى ذلك.

MPEG-DASH
إن تنسيق البيان الأكثر شيوعًا هو MPEG-DASH. صحيح ، تستخدم Apple تنسيقًا مختلفًا - HSL ، والذي يشبه في المظهر قائمة بالملفات في مشغل Winamp القديم. لكن Widevine و Microsoft يستخدمان MPEG-DASH بالضبط. يعتمد على XML ، ويحدد كل شيء: المدة ، وحجم المخزن المؤقت ، وأنواع المحتوى ، ومتى يتم تحميل الأجزاء ، وأجزاء لدرجات دقة مختلفة ، بالإضافة إلى تبديل معدل البت التكيفي. يعني هذا الأخير أنه إذا شاهد المستخدم ، على سبيل المثال ، مقطع فيديو وفي نفس الوقت انخفضت سرعة التنزيل ، فلن يتوقف التشغيل ، ولكن جودة الفيديو تتدهور ببساطة. هذا يرجع إلى حقيقة أن البيان يحدد نفس الأجزاء لدرجات دقة مختلفة ، لها نفس المدة ونفس المؤشرات. لذلك ، إذا انخفضت سرعة التنزيل ، يمكن للمتصفح التبديل ببساطة إلى دفق بدقة أقل دون إيقاف التنزيل مؤقتًا ودون تخزين البيانات مؤقتًا.
هذا ما يبدو عليه البيان الصادر عن Guardians of the Galaxy. يمكننا أن نرى أنه في سرعات تنزيل مختلفة ، سيتلقى الأشخاص مقاطع فيديو بجودة مختلفة ، بالإضافة إلى حقيقة أن هناك مسارات صوتية للأشخاص الذين يعانون من ضعف السمع. كما يوضح الترجمات.

لدينا مدة وإشارة إلى الوقت الذي نبدأ فيه التشغيل. يتم استخدام هذه الوظيفة ، على سبيل المثال ، عندما تقاطع العرض ثم تعود إلى الفيديو مرة أخرى ، بدءًا من النقطة التي توقفت عندها.

هناك أيضًا قوة مرة أخرى ، والتي تقول: لا يمكن فقدان هذا الجزء إلا إذا كان نظامك يفي بالمتطلبات. في هذه الحالة ، يتم فك تشفير الأجهزة - برامج ترميز الأجهزة الآمنة.

بالنسبة للجزء نفسه من الفيديو ، يمكنك تحديد أي عدد من الأجزاء بدقة مختلفة.

ثم تحصل على عنوان URL لتحميل الجزء ، وتظهر معلمة النطاق نطاق القيم بالمللي ثانية.

هذا هو الجزء الأخير. يمكنك أيضًا أحيانًا الحصول على بيان من CDN. يوجد لدى بعض الموفرين خادم منفصل لتسليم الأجزاء ، ولكن غالبًا ما يأتون من نفس الجهاز مثل وظيفة البيان. عندما ننزل البيان ، نعلم الأجزاء التي نحتاج إلى تنزيلها ، يمكننا إرسال طلب للحصول على الأجزاء ، ثم فك تشفير وفك التشفير من CDM.

بشكل عام ، هذا كل شيء. كل ما قيل أعلاه يكفي لتطوير مشغل مفتوح المصدر لمشاهدة مقاطع الفيديو من Amazon و Sky وغيرها من المنصات ومشاهدة مقاطع الفيديو من أي مزود تقريبًا.
Msl
اعتبرت Netflix أنه يستحق إضافة تشفير إضافي للرسائل بين المتصفح والخادم. أطلقوا عليها اسم "طبقة أمان الرسائل" أو طبقة أمان الرسائل أو MSL. إنه لا يفعل شيئًا مباشرًا مع الفيديو ، إنه مجرد طبقة إضافية من التشفير. أحد أسباب تنفيذ MSL هو أن HTTPS غير آمن بما فيه الكفاية.
MSL ، من ناحية أخرى ، مفتوح المصدر ، لذلك يمكنك دائمًا رؤية كيف تعمل. لن أخوض هنا في هذا الموضوع ، وإذا كنت مهتمًا ، فيمكنك دائمًا العثور على معلومات حول سبب قيام Netflix باستخدام MSL في مدونتها. يحتوي GitHub على وثائق تفصيلية حول تطبيقه وتطبيقه في Java.
هناك أيضًا
تطبيق Python كتبناه مع الأصدقاء. على حد علمي ، هذا هو العميل المفتوح المصدر الوحيد العامل لـ Netflix. يعمل مع Kodi Media Center. للتصور ، يمكنك استخدام VLC Player أو أي برنامج آخر مناسب.
ومرة أخرى "الصندوق الأسود"
لذا ، رأيت ما كنا بحاجة إليه لتنفيذ كل هذا ، وعدد المرات التي ذكرت فيها CDM - "الصندوق الأسود" الذي يتم تنزيله من Google. وهكذا ، أعدنا الفيديو مرة أخرى إلى "الصندوق الأسود". تم إخفاء عنصر <Video /> الجميل مرة أخرى. لقد أضفنا برنامج جهة خارجية يساعدنا ، ولكنه مغلق في نفس الوقت ولا يمكننا إدارته. يمكن أن يفعل الكثير من الأشياء غير الواضحة: التتبع ، التحليلات ، إرسال البيانات ...

إليك ما قاله تيم بيرنرز لي عن هذا:
"لذا ، بشكل عام ، من المهم الحفاظ على EME كبيئة آمنة نسبيًا عبر الإنترنت حيث يمكنك مشاهدة الأفلام ، بالإضافة إلى البيئة الأكثر ملاءمة والتي تجعلها جزءًا من الخطاب المترابط للبشرية".ولكن هناك آراء أخرى بشأن ذلك. على وجه الخصوص ، من مؤسسة الحدود الإلكترونية ، التي كانت قبل ظهور DRM عضوًا في W3C. إليك ما يقولونه:
"في عام 2013 ، شعرت EFF بخيبة أمل عندما علمت أن W3C تولى مشروع تقييس EME - ملحقات الوسائط المشفرة. في الواقع ، نحن نتحدث عن واجهة برمجة التطبيقات التي كانت وظيفتها الوحيدة هي تزويد DRM بدور رائد في النظام البيئي للمتصفح. سنواصل القتال لضمان أن الإنترنت مجاني ومفتوح. "سنواصل مقاضاة الحكومة الأمريكية لإلغاء القوانين التي تجعل DRM سامة للغاية ، وسنواصل القتال على مستوى القانون العالمي."من الصعب بالنسبة لي أن أقول كيف تتصل بهذا. , , , . , Netflix, . , , .
, 24-25 , HolyJS 2018 Moscow , «The Universal Serial Web» : WebUSB, USB- . -, .
PS 1- . , — 50% .