دمج ExoPlayer

يعرض هذا المستند نظرة عامة حول عملية دمج إدارة الحقوق الرقمية (DRM) ووضع التطبيقات في قائمة الانتظار. والدعم.

تحسينات DRM

العرض التوضيحي لـ ExoPlayer Cast لاستخدام طريقة مُنظَّمة لتمرير إعدادات إدارة الحقوق الرقمية باستخدام MediaInfo الخاص بـ ExoPlayer إلى تطبيق مستلِم. عيّنة المحتوى جهاز استقبال تجريبي يشتمل على نفس الرمز في هذه النظرة العامة، مما يسمح اختبار دعم إدارة الحقوق الرقمية ومع ذلك، إذا كنت تريد حماية Cast DRM، يجب إنشاء واستضافة محتوى جهاز استقبال الويب:

قبل البدء، سيكون من المفيد أن تتعرف على عن دعم إدارة الحقوق الرقمية في Google Cast وExoPlayer. ستوضح لك هذه النظرة العامة كيف توصيل إعدادات ExoPlayer DRM إلى جهاز استقبال الويب. للحصول على معلومات حول كيفية استخدام إدارة الحقوق الرقمية (DRM) في ExoPlayer، راجع موقع ExoPlayer الإلكتروني.

توفير إعدادات إدارة الحقوق الرقمية

يحتوي تطبيق ExoPlayer التجريبي على رمز نموذجي يوضّح كيفية توفير إدارة الحقوق الرقمية. كجزء من MediaItem. الخيارات الأربعة التي يمكنك ضبطها هي:

  • العناوين - هي قاموس للعناوين التي يتم تطبيقها على طلب HTTPS استرداد ترخيص DRM.
  • عنوان URL للترخيص: عنوان URL المستخدَم للحصول على الترخيص
  • نظام الحماية - نظام حماية إدارة الحقوق الرقمية المستخدم لحماية المحتوى، على سبيل المثال، Widevine.

يتم إرسال إعدادات إدارة الحقوق الرقمية التي تقدّمها إلى ExoPlayer إلى المستلِم. التطبيق باعتباره موقعًا إلكترونيًا في customData على MediaInformation. كجزء من طلب تحميل. وبشكل تلقائي، يُطلق على هذه الخاصية اسم exoPlayerConfig، التي تتطابق مع التعريف التالي

/**
 * Extended configuration settings for ExoPlayer.
 */
ExoPlayerConfig class {
   constructor() {
    /**
     * Dictionary of headers to apply to the license request.
     * @type {!Object|undefined}
     */
    this.headers;

    /**
     * The URL for your DRM server.
     * @type {string|undefined}
     */
    this.licenseUrl;

    /**
     * Preferred protection system to use for decrypting content.
     * @type {!cast.framework.ContentProtection|undefined}
     */
    this.protectionSystem;

    /**
     * Indicates whether CORS Access-Control requests should be made using
     * credentials such as cookies or authorization headers.
     *
     * If withCredentials is set to true then Access-Control-Allow-Origin cannot
     * be set to '*'.
     * @type {boolean|undefined}
     */
    this.withCredentials;
  }
}

الإعداد الأولي

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

للحصول على نسخة من ExoPlayerConfig من كل عنصر طلب تحميل، يمكنك إنشاء أداة اعتراض طلب التحميل في تطبيق Web بطابع SDK

الخطوة الأولى هي تسجيل المعالجات قبل بدء البثّ التطبيق.

const context = cast.framework.CastReceiverContext.getInstance();
const playbackConfig = new cast.framework.PlaybackConfig();

playbackConfig.licenseRequestHandler =
    licenseRequestHandler;
context.getPlayerManager().setMediaPlaybackInfoHandler(
    mediaPlaybackInfoHandler);
context.getPlayerManager().setMessageInterceptor(
    cast.framework.messages.MessageType.LOAD,
    loadInterceptor);

// starts the Cast application
context.start({playbackConfig: playbackConfig});

أداة اعتراض طلب التحميل

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

يمر اعتراض طلب التحميل على LoadRequestData الذي يحتوي على إعدادات مشغّل Exo الذي أرسله تطبيقك. يمكنك حفظ هذا الكائن كمتغيّر عمومي لاستخدامه في معالج طلب الترخيص ومعالج معلومات تشغيل الوسائط.

loadInterceptor(loadRequestData) {
    // not every load request will have a customData object
    if (loadRequestData.media && loadRequestData.media.customData &&
            loadRequestData.media.customData['exoPlayerConfig']) {
        // exoPlayerConfig is a global variable here
        exoPlayerConfig =
                loadRequestData.media.customData['exoPlayerConfig'];
    }

    // you must return the loadRequestData object
    return loadRequestData;
}

معالِج طلبات الترخيص

يتيح لك معالج طلبات الترخيص تخصيص طلب HTTPS للويب. وصول المستلِم إلى خادم الترخيص. اجتاز المعالج NetworkRequestInfo بنجاح. والذي يمكنك استخدامه بعد ذلك لإضافة عناوين HTTP أو تضمين ملفات تعريف الارتباط أو حتى تعديل عنوان URL. من المفترض أن يعرض المعالج هذا الكائن.

على سبيل المثال، إذا كنت بحاجة إلى إضافة رؤوس مخصصة إلى طلب الترخيص، يمكن أن ينشئ معالج طلبات ترخيص مشابهًا لما يلي:

licenseRequestHandler(networkRequestInfo) {
    if (!exoPlayerConfig) {
        return networkRequestInfo;
    }

    networkRequestInfo.headers =
            exoPlayerConfig.headers ? exoPlayerConfig.headers : undefined;

    return networkRequestInfo;
}

معالِج معلومات تشغيل الوسائط

يتيح لك معالج معلومات تشغيل الوسائط إجراء تغييرات على المحتوى الذي يتم تشغيله. الإعدادات على أساس كل عنصر وسائط. اجتاز المعالج LoadRequestData بنجاح. وPlaybackConfig، يجب عليك إرجاع تهيئة التشغيل. سيصبح معالِج معلومات تشغيل الوسائط يتم الاتصال به قبل تحميل كل عنصر تقوم ببثه. إذا كانت لديك عناوين URL لتراخيص المحتوى يمكنك تغييرها وتغيير نظام الحماية قبل التحميل.

mediaPlaybackInfoHandler(loadRequest, playbackConfig) {
    if (!exoPlayerConfig) {
        return;
    }

    playbackConfig.licenseUrl = exoPlayerConfig.licenseUrl ?
            exoPlayerConfig.licenseUrl :
            undefined;
    playbackConfig.protectionSystem = exoPlayerConfig.protectionSystem ?
            exoPlayerConfig.protectionSystem :
            undefined;

    return playbackConfig;
}

موارد أخرى

كل عملية تنفيذ لإدارة الحقوق الرقمية مخصصة ويتم توفير هذا الرمز كمثال توضيحي فقط. يجب استشارة مزود إدارة الحقوق الرقمية (DRM) لديك للتأكد من أنه لديك إدارة الحقوق الرقمية في تطبيقي ExoPlayer وCast.

موقع ExoPlayer الإلكتروني يعرض مستندات حديثة وإعلاناتك. يمكن حلّ المشاكل المتعلّقة بمشغّل ExoPlayer ودمجه بتكنولوجيا Google Cast. تم الإبلاغ عنه في منصة GitHub من ExoPlayer المستودع.