ไคลเอ็นต์มีเดียเพลเยอร์จะส่งข้อมูลที่มีประโยชน์ไปยังการส่งเนื้อหาได้ เครือข่าย (CDN) ที่มีคำขอออบเจ็กต์แต่ละรายการ การส่งข้อมูลนั้นช่วยปรับปรุง QoS ได้ การตรวจสอบ การเพิ่มประสิทธิภาพ การเข้าชมแบบปรับเปลี่ยนได้ และประสิทธิภาพการแสดงโฆษณาในท้ายที่สุด เพื่อปรับปรุงประสบการณ์ของผู้บริโภค
การใช้งานใน ExoPlayer จะอิงตามข้อกำหนดที่ระบุไว้ใน CTA-5004
การรองรับ CMCD ใน Exoplayer
การรองรับ CMCD ใน ExoPlayer จะเปิดใช้ได้เฉพาะรูปแบบสตรีมมิงแบบปรับเปลี่ยนได้ เช่น DASH, HLS และ SmoothStreaming
คีย์ข้อมูล CMCD
คีย์ข้อมูล CMCD แบ่งออกเป็น 4 ประเภทดังนี้
- CMCD-Request: คีย์ที่มีค่าแตกต่างกันในคำขอแต่ละรายการ
- CMCD-Object: คีย์ที่มีค่าแตกต่างกันกับออบเจ็กต์ที่ขอ
- สถานะ CMCD: คีย์ที่มีค่าไม่ได้แตกต่างกันไปตามคำขอหรือออบเจ็กต์ทุกรายการ
- CMCD-Session: คีย์ที่คาดว่าจะมีค่าคงที่ในช่วง ในเซสชันทั้งหมด
โหมดการส่งข้อมูล
คุณส่งข้อมูล CMCD ได้โดยใช้ 1 ใน 2 วิธีต่อไปนี้
- เป็นส่วนหัวของคำขอ 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