কমন মিডিয়া ক্লায়েন্ট ডেটা (CMCD)

মিডিয়া প্লেয়ার ক্লায়েন্ট প্রতিটি বস্তুর অনুরোধের সাথে সামগ্রী বিতরণ নেটওয়ার্কে (CDN) মূল্যবান তথ্য প্রেরণ করতে পারে। সেই ডেটা প্রেরণ করা QoS মনিটরিং, অভিযোজিত ট্র্যাফিক অপ্টিমাইজেশান, এবং ডেলিভারি কর্মক্ষমতা উন্নত করতে পারে, শেষ পর্যন্ত ভোক্তাদের অভিজ্ঞতা বাড়ায়।

ExoPlayer-এ বাস্তবায়ন CTA-5004- এ সংজ্ঞায়িত স্পেসিফিকেশনের উপর ভিত্তি করে।

এক্সোপ্লেয়ারে CMCD সমর্থন

ExoPlayer-এ CMCD সমর্থন শুধুমাত্র অ্যাডাপ্টিভ স্ট্রিমিং ফরম্যাটের জন্য সক্রিয় করা যেতে পারে, যেমন DASH , HLS , এবং স্মুথস্ট্রিমিং

CMCD ডেটা কী

CMCD ডেটা কীগুলি চারটি স্বতন্ত্র প্রকারে শ্রেণীবদ্ধ করা হয়েছে:

  • CMCD-অনুরোধ : কী যার মান প্রতিটি অনুরোধের সাথে পরিবর্তিত হয়।
  • CMCD-অবজেক্ট : কী যার মান অনুরোধ করা বস্তুর সাথে পরিবর্তিত হয়।
  • CMCD-স্থিতি : কী যার মান প্রতিটি অনুরোধ বা বস্তুর সাথে পরিবর্তিত হয় না।
  • CMCD-সেশন : কী যার মান সেশনের জীবনের উপর অপরিবর্তনীয় বলে আশা করা হয়।

তথ্য প্রেরণের মোড

CMCD ডেটা দুটি পদ্ধতির একটি ব্যবহার করে প্রেরণ করা যেতে পারে:

  • একটি কাস্টম HTTP অনুরোধ শিরোনাম হিসাবে, যা ডিফল্ট আচরণ।
  • একটি HTTP ক্যোয়ারী আর্গুমেন্ট হিসাবে.

CMCD সক্ষম করুন৷

CMCD সক্ষম করতে, আপনাকে CmcdConfiguration.Factory এর একটি উদাহরণ তৈরি করতে হবে এবং এটিকে MediaSource.Factory এ পাস করতে হবে যা প্লেয়ার তৈরি করার সময় ব্যবহৃত হয় । আপনি হয় ডিফল্ট CmcdConfiguration.Factory ব্যবহার করতে পারেন বা আপনার নিজস্ব কাস্টম ফ্যাক্টরি সরবরাহ করতে পারেন যা প্রদত্ত মিডিয়া আইটেমের জন্য প্রতিবার অভিযোজিত মিডিয়া উত্স তৈরি করা হয়।

ডিফল্ট কনফিগারেশন কারখানা সহ CMCD সক্ষম করুন৷

কোটলিন

// Create media source factory and set default cmcdConfigurationFactory.
val mediaSourceFactory =
    DefaultMediaSourceFactory(context)
        .setCmcdConfigurationFactory(CmcdConfiguration.Factory.DEFAULT)

জাভা

// Create media source factory and set default cmcdConfigurationFactory.
MediaSource.Factory mediaSourceFactory =
    new DefaultMediaSourceFactory(context)
        .setCmcdConfigurationFactory(CmcdConfiguration.Factory.DEFAULT);

কাস্টম কনফিগারেশন কারখানা সহ CMCD সক্ষম করুন৷

কোটলিন

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)

জাভা

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