মিডিয়া প্লেয়ার ক্লায়েন্টরা প্রতিটি অবজেক্ট রিকোয়েস্টের মাধ্যমে কন্টেন্ট ডেলিভারি নেটওয়ার্কে (CDN) মূল্যবান তথ্য প্রেরণ করতে পারে। এই ডেটা প্রেরণের মাধ্যমে QoS মনিটরিং, অ্যাডাপ্টিভ ট্র্যাফিক অপ্টিমাইজেশন এবং ডেলিভারি কর্মক্ষমতা উন্নত করা যেতে পারে, যা শেষ পর্যন্ত গ্রাহকের অভিজ্ঞতা বৃদ্ধি করে।
ExoPlayer-এ বাস্তবায়ন CTA-5004- এ সংজ্ঞায়িত স্পেসিফিকেশনের উপর ভিত্তি করে।
এক্সোপ্লেয়ারে CMCD সাপোর্ট
ExoPlayer-এ CMCD সাপোর্ট শুধুমাত্র DASH , HLS এবং SmoothStreaming- এর মতো অ্যাডাপ্টিভ স্ট্রিমিং ফর্ম্যাটের জন্য সক্ষম করা যেতে পারে।
সিএমসিডি ডেটা কী
CMCD ডেটা কীগুলিকে চারটি স্বতন্ত্র প্রকারে শ্রেণীবদ্ধ করা হয়েছে:
- CMCD-Request : যেসব কী-এর মান প্রতিটি অনুরোধের সাথে পরিবর্তিত হয়।
- CMCD-অবজেক্ট : যেসব কীর মান অনুরোধ করা বস্তুর সাথে পরিবর্তিত হয়।
- CMCD-Status : যেসব কী-এর মান প্রতিটি অনুরোধ বা বস্তুর সাথে পরিবর্তিত হয় না।
- 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);
সিএমসিডি তথ্যের উদাহরণ
এই উদাহরণগুলি মিডিয়া খণ্ডগুলি আনার সময় প্রেরিত ডেটার বৈধ ডেটা সংমিশ্রণগুলি চিত্রিত করে:
কাস্টম 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