يمكن لعملاء مشغّلات الوسائط نقل معلومات قيّمة إلى نظام "إرسال المحتوى" الشبكات (CDN) مع كل طلب عنصر. يمكن أن يؤدي إرسال هذه البيانات إلى تحسين جودة الخدمة (QoS) المراقبة، وتحسين عدد الزيارات بشكل تكيُّفي، وأداء عرض الإعلانات، في النهاية تحسين تجربة المستهلك.
ويعتمد التنفيذ في ExoPlayer على المواصفات المحددة في CTA-5004:
إتاحة استخدام CMCD في Exoplayer
لا يمكن تفعيل دعم CMCD في ExoPlayer إلا لتنسيقات البث التكيُّفية. مثل DASH وHLS وSmoothStreaming.
مفاتيح بيانات CMCD
يتم تصنيف مفاتيح بيانات CMCD إلى أربعة أنواع مختلفة:
- CMCD-Request: مفاتيح تختلف قيمها باختلاف كل طلب.
- CMCD-Object: مفاتيح تختلف قيمها حسب الكائن المطلوب.
- CMCD-Status: مفاتيح لا تختلف قيمها باختلاف كل طلب أو كائن.
- جلسة CMCD: المفاتيح التي يُتوقّع أن تكون قيمها ثابتة خلال فترة الجلسة.
أوضاع نقل البيانات
يمكن إرسال بيانات CMCD باستخدام إحدى الطريقتين التاليتين:
- هذا العنوان هو عنوان طلب HTTP مخصّص، وهو السلوك التلقائي.
- كوسيطة طلب بحث HTTP.
تفعيل بروتوكول CMCD
لتفعيل ميزة CMCD، يجب إنشاء مثيل لـ CmcdConfiguration.Factory
.
وتمريره إلى MediaSource.Factory
الذي يُستخدَم عند إنشاء
لاعب. يمكنك إما استخدام CmcdConfiguration.Factory
التلقائي أو تقديم
مصنعك المخصّص الذي يتم تسميته في كل مرة يتم فيها إنشاء مصدر وسائط تكيُّفي
التي تم إنشاؤها لعنصر الوسائط المحدّد.
تفعيل CMCD مع المصنع التلقائي للإعدادات
Kotlin
// Create media source factory and set default cmcdConfigurationFactory. val mediaSourceFactory = DefaultMediaSourceFactory(context) .setCmcdConfigurationFactory(CmcdConfiguration.Factory.DEFAULT)
Java
// Create media source factory and set default cmcdConfigurationFactory. MediaSource.Factory mediaSourceFactory = new DefaultMediaSourceFactory(context) .setCmcdConfigurationFactory(CmcdConfiguration.Factory.DEFAULT);
تفعيل CMCD مع الشركة المصنِّعة للإعدادات المخصّصة
Kotlin
val cmcdConfigurationFactory = object : CmcdConfiguration.Factory { override fun createCmcdConfiguration(mediaItem: MediaItem): CmcdConfiguration { val cmcdRequestConfig = object : CmcdConfiguration.RequestConfig { override fun isKeyAllowed(key: String): Boolean { return key == "br" || key == "bl" } override fun getCustomData(): ImmutableListMultimap<@CmcdConfiguration.HeaderKey String, String> { return ImmutableListMultimap.of( CmcdConfiguration.KEY_CMCD_OBJECT, "key1=stringValue") } override fun getRequestedMaximumThroughputKbps(throughputKbps: Int): Int { return 5 * throughputKbps } } val sessionId = UUID.randomUUID().toString() val contentId = UUID.randomUUID().toString() return CmcdConfiguration(sessionId, contentId, cmcdRequestConfig, MODE_QUERY_PARAMETER) } } // Create media source factory and set your custom cmcdConfigurationFactory. val mediaSourceFactory = DefaultMediaSourceFactory(context) .setCmcdConfigurationFactory(cmcdConfigurationFactory)
Java
CmcdConfiguration.Factory cmcdConfigurationFactory = mediaItem -> { CmcdConfiguration.RequestConfig cmcdRequestConfig = new CmcdConfiguration.RequestConfig() { @Override public boolean isKeyAllowed(String key) { return key.equals("br") || key.equals("bl"); } @Override public ImmutableListMultimap<@HeaderKey String, String> getCustomData() { return ImmutableListMultimap.of( CmcdConfiguration.KEY_CMCD_OBJECT, "key1=stringValue"); } @Override public int getRequestedMaximumThroughputKbps(int throughputKbps) { return 5 * throughputKbps; } }; String sessionId = UUID.randomUUID().toString(); String contentId = UUID.randomUUID().toString(); return new CmcdConfiguration(sessionId, contentId, cmcdRequestConfig, MODE_QUERY_PARAMETER); }; // Create media source factory and set your custom cmcdConfigurationFactory. MediaSource.Factory mediaSourceFactory = new DefaultMediaSourceFactory(context) .setCmcdConfigurationFactory(cmcdConfigurationFactory);
أمثلة على بيانات CMCD
توضّح هذه الأمثلة مجموعات البيانات الصالحة التي تم إرسالها عند استرجاعها. مقاطع الوسائط:
كرؤوس طلبات HTTP مخصصة
CMCD-Session:sid="6e2fb550-c457-11e9-bb97-0800200c9a66"
CMCD-Request:mtp=25400 CMCD-Object:br=3200,d=4004,ot=v,tb=6000 CMCD-Status:bs,rtp=15000 CMCD-Session:sid="6e2fb550-c457-11e9-bb97-0800200c9a66"
كوسيطات طلب بحث HTTP
?CMCD=sid%3D%226e2fb550-c457-11e9-bb97-0800200c9a66%22
?CMCD=br%3D3200%2Cbs%2Cd%3D4004%2Cmtp%3D25400%2Cot%3Dv%2Crtp %3D15000%2Csid%3D%226e2fb550-c457-11e9-bb97- 0800200c9a66%22%2Ctb%3D6000