कॉमन मीडिया क्लाइंट डेटा (CMCD)

मीडिया प्लेयर क्लाइंट, कॉन्टेंट डिलीवरी में अहम जानकारी शेयर कर सकते हैं हर ऑब्जेक्ट अनुरोध के साथ नेटवर्क (सीडीएन). डेटा को शेयर करने से, QoS बेहतर हो सकता है ज़रूरत के हिसाब से निगरानी, ज़रूरत के हिसाब से ट्रैफ़िक ऑप्टिमाइज़ेशन, और डिलीवरी परफ़ॉर्मेंस को ध्यान में रखते हुए काम किया जाता है. उपभोक्ताओं को बेहतर अनुभव दे सकें.

ExoPlayer में, इसे लागू करने की प्रोसेस सीटीए-5004.

Exoplayer में CMCD की सुविधा

ExoPlayer में सीएमसीडी की सुविधा सिर्फ़ अडैप्टिव स्ट्रीमिंग फ़ॉर्मैट के लिए चालू की जा सकती है, जैसे, DASH, HLS, और SmoothStreaming.

सीएमसीडी डेटा कुंजियां

CMCD डेटा कुंजियों को चार अलग-अलग टाइप में बांटा गया है:

  • CMCD-अनुरोध: ऐसी कुंजियां जिनके मान हर अनुरोध के साथ अलग-अलग होते हैं.
  • CMCD-Object: ये कुंजियां, अनुरोध किए गए ऑब्जेक्ट के हिसाब से अलग-अलग होती हैं.
  • CMCD-Status: ऐसी कुंजियां जिनकी वैल्यू हर अनुरोध या ऑब्जेक्ट के साथ अलग-अलग नहीं होती.
  • CMCD-सेशन: ऐसी कुंजियां जिनकी वैल्यू के कन्वर्ज़न में बदलने की संभावना होती है सत्र की अवधि.

डेटा ट्रांसमिट करने के मोड

CMCD डेटा को इन दो में से किसी एक तरीके का इस्तेमाल करके भेजा जा सकता है:

  • कस्टम एचटीटीपी अनुरोध के हेडर के तौर पर, जो डिफ़ॉल्ट व्यवहार होता है.
  • एचटीटीपी क्वेरी आर्ग्युमेंट के तौर पर.

CMCD चालू करें

सीएमसीडी को चालू करने के लिए, आपको CmcdConfiguration.Factory का इंस्टेंस बनाना होगा और इसे MediaSource.Factory को पास कर देता है, जिसका उपयोग किसी दस्तावेज़ को बनाने के लिए किया जाता है प्लेयर चुनें. आप या तो डिफ़ॉल्ट CmcdConfiguration.Factory का इस्तेमाल कर सकते हैं या यह दे सकते हैं आपकी अपनी कस्टम फ़ैक्ट्री को हम हर बार तब कहते हैं, जब कोई अडैप्टिव मीडिया सोर्स दिए गए मीडिया आइटम के लिए बनाया गया.

डिफ़ॉल्ट कॉन्फ़िगरेशन फ़ैक्ट्री के साथ सीएमसीडी की सुविधा चालू करें

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);

कस्टम कॉन्फ़िगरेशन फ़ैक्ट्री के साथ सीएमसीडी चालू करें

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-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"
    
  • एचटीटीपी क्वेरी आर्ग्युमेंट के तौर पर

       ?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