كيفية استخدام لاعب Shaka مع Azure Media Services
هل تبحث عن وثائق خدمات الوسائط v2 ؟
هل تواجه مشكلة؟ راجع دليل استكشاف الأخطاء وإصلاحها للحصول على حلول للمشكلات المتعلقة باستخدام خدمات الوسائط.
يمكن العثور على نماذج التعليمات البرمجية في صفحة Samples .
نظرة عامة
يعد مشغل Shaka Player مكتبة JavaScript مفتوحة المصدر للوسائط التوافقية. ويشغل تنسيقات الوسائط التوافقية (مثل DASH وHLS) في المتصفح، دون استخدام البرامج الإضافية أو Flash. بدلاً من ذلك، يستخدم Shaka Player معايير الويب المفتوحة وملحقات مصدر الوسائط وملحقات الوسائط المشفرة.
يمكن العثور على الوثائق الرسمية في وثائق لاعب شاكة.
عينة التعليمات البرمجية
يتوفر نموذج التعليمات البرمجية لهذه المقالة في نماذج Azure/media-services-3rdparty-player-samples.
تنفيذ اللاعب
اتبع هذه الإرشادات إذا كنت بحاجة إلى تنفيذ مثيل اللاعب الخاص بك:
index.htmlإنشاء ملف حيث ستستضيف اللاعب. يجب عليك التحقق للتأكد من أن أحدث إصدار من مشغل Shaka المستضاف على CDN يتم استخدامه أو تجميع الإصدار الخاص بك من مستودع Github (اعتبارا من هذا النشر نستخدم الإصدار 3.3.2). أضف الأسطر التالية من التعليمات البرمجية (يمكنك استبدال الإصدارات لأحدث إذا كان ذلك ممكنا):<html> <head> <script src="//cdn.jsdelivr.net/npm/shaka-player@3.3.2/dist/shaka-player.compiled.min.js"></script> <script type="module" src="index.js"></script> </head> <body> <video id="video" controls></video> </body> </html>إضافة ملف JavaScript مع التعليمات البرمجية التالية:
// myScript.js shaka.polyfill.installAll(); var video = document.getElementById('video'); var player = new shaka.Player(video); window.player = player; var manifestUrl = '//amssamples.streaming.mediaservices.windows.net/55034fb3-11af-43e4-a4de-d1b3ca56c5aa/ElephantsDream_MultiAudio.ism/manifest(format=m3u8-cmaf)'; player.load(manifestUrl);استبدل
manifestUrlبعنوان URL HLS CMAF أو DASH CMAF من محدد موقع البث لأصلك، والذي يمكن العثور عليه في صفحة محدد موقع البث في مدخل Microsoft Azure. بالنسبة إلى HLS، استخدم format=m3u8-cmaf manifest.تشغيل خادم (على سبيل المثال مع
npm http-server) ويجب أن يعمل اللاعب الخاص بك...
إعداد التسميات التوضيحية
إعداد التسميات التوضيحية VOD
قم بتشغيل الأسطر التالية من التعليمات البرمجية، واستبدل captionUrl بدليل .vtt (يجب أن يكون ملف vtt في نفس المضيف لتجنب خطأ CORS)، lang مع رمز الحرفين للغة، وب type إما caption أو subtitle:
player.configure('streaming.alwaysStreamText', true)
player.load(manifestUrl).then(function(){
player.addTextTrack(captionUrl, lang, type, 'text/vtt');
var tracks = player.getTextTracks();
player.selectTextTrack(tracks[0]);
});
إعداد التسميات التوضيحية للبث المباشر
يتم تكوين تمكين التسميات التوضيحية في البث المباشر بإضافة السطر التالي من التعليمات البرمجية:
player.setTextTrackVisibility(true)
إعداد مصادقة الرمز المميز
قم بتشغيل الأسطر التالية من التعليمات البرمجية، واستبدل token بسلسلة الرمز المميز:
player.getNetworkingEngine().registerRequestFilter(function (type, request) {
if (type === shaka.net.NetworkingEngine.RequestType.LICENSE) {
request.headers['Authorization'] = 'Bearer ' + token;
}
});
إعداد تشفير AES-128
لا يدعم Shaka Player حاليا تنسيق تشفير AES-128 الذي يتم تسليمه بواسطة Azure Media Services. تحقق مرة أخرى من التحديثات حيث يوجد عمل مستمر لدعم تنسيق التشفير المشترك لمفتاح مسح مع كل من وضعي تشفير CTR وCBC للسماح بتشغيل محتوى AES-128 ClearKey في مشغل Shaka.
ارتباط إلى مشكلة GitHub لمتابعة حالة هذه الميزة. يتم إغلاقه حاليا كما تم حله، ولكن العمل مستمر لدعم هذا التنسيق في المستقبل على كل من Media Services و Shaka player.
إعداد حماية DRM
يستخدم Shaka Player ملحقات الوسائط المشفرة (EME)، والتي تتطلب عنوان URL آمنا لاستخدامه. لذلك، لاختبار أي محتوى محمي من DRM، من الضروري استخدام https. إذا كان الموقع يستخدم https، فسيحتاج البيان وكل مقطع أيضا إلى استخدام https. هذا بسبب متطلبات المحتوى المختلط.
ترتيب تفضيل إدارة Shaka لعنون (عناوين) URL لخادم (خوادم) الترخيص الخاصة بها:
- يجب أن يتجاوز تكوين ClearKey، المستخدم لتصحيح الأخطاء، كل شيء آخر. (لا يزال بإمكان التطبيق تحديد خادم ترخيص ClearKey.)
- يجب أن تتجاوز الخوادم التي تم تكوينها من قبل التطبيق، إن وجدت، أي شيء من البيان.
- لا تستخدم خوادم الترخيص المقدمة من البيان إلا إذا لم يتم تحديد أي شيء آخر.
لتحديد عنوان URL لخادم الترخيص ل Widevine أو PlayReady، يمكننا استخدام التعليمات البرمجية التالية:
player.configure({
drm: {
servers: {
"com.widevine.alpha": "YOUR WIDEVINE LICENSE URL",
"com.microsoft.playready": "YOUR PLAYREADY LICENSE URL"
}
}
});
يتطلب كل محتوى FairPlay تعيين شهادة خادم. يتم تعيينه في تكوين Player:
const req = await fetch("YOUR FAIRPLAY CERTIFICATE URL");
const cert = await req.arrayBuffer();
player.configure('drm.advanced.com\\.apple\\.fps\\.1_0.serverCertificate', new Uint8Array(cert));
لمزيد من المعلومات، راجع وثائق حماية DRM للاعب Shaka.
اعتبارات الأمان للتسميات التوضيحية المغلقة والعناوين الفرعية وتسليم بيانات التعريف في الوقت المناسب
تحتوي ميزات التشفير الديناميكي وإدارة الحقوق الرقمية ل Azure Media Services على حدود يجب مراعاتها عند محاولة تأمين تسليم المحتوى الذي يتضمن النسخ المكتوبة المباشرة أو التسميات التوضيحية أو الترجمة أو بيانات التعريف المؤقتة. لا تدعم الأنظمة الفرعية DRM، بما في ذلك PlayReady و FairPlay و Widevine تشفير المسارات النصية وترخيصها. يؤدي عدم وجود تشفير DRM للمسارات النصية إلى الحد من قدرتك على تأمين محتويات النسخ المباشرة أو التسميات التوضيحية المدرجة يدويا أو الترجمة التي تم تحميلها أو إشارات بيانات التعريف المؤقتة التي يمكن إدراجها كمسارات منفصلة.
لتأمين التسميات التوضيحية أو الترجمة أو مسارات بيانات التعريف المؤقتة، يوصى باتباع أحد الإرشادات:
- استخدم تشفير مفتاح مسح AES-128. عند تمكين تشفير المفتاح الواضح AES-128، يمكن تكوين مسارات النص ليتم تشفيرها باستخدام تقنية تشفير "مغلف" كاملة تتبع نفس نمط التشفير مثل مقاطع الصوت والفيديو. يمكن بعد ذلك فك تشفير هذه المقاطع بواسطة تطبيق عميل بعد طلب مفتاح فك التشفير من خدمة تسليم مفتاح خدمات الوسائط باستخدام رمز JWT المميز المصادق عليه. هذا الأسلوب مدعوم من قبل مشغل الوسائط Azure، ولكن قد لا يكون مدعوما على جميع الأجهزة ويمكن أن يتطلب بعض أعمال التطوير من جانب العميل للتأكد من نجاحه على جميع الأنظمة الأساسية.
- استخدم مصادقة رمز CDN المميز لحماية مسارات النص (العنوان الفرعي أو التسميات التوضيحية أو بيانات التعريف) التي يتم تسليمها باستخدام عناوين URL قصيرة الرمز المميز للنموذج والتي تقتصر على الإعدادات الجغرافية أو IP أو غيرها من الإعدادات القابلة للتكوين في مدخل CDN. قم بتمكين ميزات أمان CDN باستخدام Verizon Premium CDN أو CDN آخر تابع لجهة خارجية تم تكوينه للاتصال بنقاط نهاية تدفق خدمات الوسائط.
تحذير
إذا لم تتبع أحد الإرشادات أعلاه، فسيمكن الوصول إلى شرائط الترجمة أو التسميات التوضيحية أو نص بيانات التعريف المؤقتة كمحتوى غير مشفر يمكن اعتراضه أو مشاركته خارج مسار تسليم العميل المقصود. يمكن أن يؤدي ذلك إلى تسرب المعلومات. إذا كنت قلقا بشأن محتويات التسميات التوضيحية أو الترجمة التي يتم تسريبها في سيناريو تسليم آمن، فاتصل بفريق دعم Media Services للحصول على مزيد من المعلومات حول الإرشادات المذكورة أعلاه لتأمين تسليم المحتوى الخاص بك.