具有CMCD的多CDN高级架构
什么是CMCD?
通用媒体客户端数据(CMCD)是指2020年发布的开放规范CTA-5004。 什么是开放式规格? 开放式规范是指向任何人公开提供的一套书面要求和标准。 这里的大标题是CMCD开放式规范定义了媒体播放器(称为客户端)如何生成视频流数据并与每个媒体请求的CDN共享这些数据。 在定义此规范之前,它是如何使用CDN发送,接收和处理客户端数据的野生西部。 CMCD的核心只是一组具有宝贵数据的密钥。 使用CTA-5004,我总结了这些关键字并为您添加了见解,以创建一个有用的备忘表。说明 | 键 | 定义 | *使用 |
---|---|---|---|
编码比特率 | br | 请求的音频或视频对象的编码比特率。 | 显示交付的实际比特率,CDN可使用该比特率推断对象大小。 |
缓冲区长度 | BL | 请求时的播放器缓冲区长度。 | 可由CDN用于推断播放的健康状况。 |
缓冲区不足 | BS | 缓冲区不足事件。 表示回放时出现重新缓冲/停止。 | 重新缓冲百分比计算为在给定时间段内具有至少一个重新缓冲事件的会话与会话的总数。 |
内容ID | CID | 标识当前内容的唯一字符串。 | 可用于跟踪有问题的内容,但玩家很少使用。 |
对象持续时间 | D | 所请求对象的播放持续时间(以毫秒为单位)。 |
聚合时,可将其用作估计的监视小时数。 可用于确定内容是否处于广告中断状态以及正在观看的视频类型。 可用于确定块大小。 |
截止日期 | DL | 从请求时间到此段/对象的第一个样本需要可用的截止时间,以避免产生缓冲区欠载或任何其他播放问题 | |
测量吞吐量 | MTP | 客户端和服务器之间的吞吐量(由客户端测量)。 | CDN到播放器之间的估计吞吐量带宽。 用于比较CDN和外部指标。 |
下一个对象请求 | NOR | 要请求的下一个对象的相对路径。 | 用于预取。 |
下一个范围请求 | NRR | 如果下一个请求将是部分对象请求,则此字符串表示要请求的字节范围。 如果未设置"NOR"字段,则假定对象与当前请求的对象匹配。 | 用于预取。 |
对象类型 | OT |
请求的当前对象的介质类型: M =文本文件,例如清单或播放列表 A =仅音频 V =仅限视频 AV =混合音频和视频 I =初始化段 C =标题或副标题 TT = ISOBMFF定时文本轨道 K =加密密钥,许可证或证书。 =其他 如果请求的对象类型未知,则不能使用此键。 |
用于故障排除。 可用于确定编码和DRM问题。 DRM提供程序对当前使用/支持的版本/浏览器的了解有限,因此"k"非常有用。
"C"可用于提醒潜在的合规性问题。 |
播放速率 | PR | 如果是实时,则为1;如果是双速,则为2;如果不播放,则为0。 仅当不等于1时才应发送。 | 可用于推断播放器是否正在调整播放速率以弥补其他问题(例如源站或CDN未能足够快地交付片段)。 |
请求的最大吞吐量 | RTP |
请求的最大吞吐量,客户端认为该吞吐量足以交付资产。
***吞吐量是指传输的数据量。 |
将告诉您播放器和CDN的性能。 这可以用于更有效的数据管理,实际上可以节省资源。
这可以通过防止超额交付导致缓冲区饱和而使客户受益,还可以通过公平分享交付实现社区利益。 其概念是,每个客户端都能获得实现卓越性能所需的吞吐量,但没有更多的吞吐量。 |
流式传输格式 | SF |
D = MPEG破折号 H = HTTP直播流(HLS) S =流畅传输 O =其他 |
帮助确定支持DASH/HLS的播放器的流相关问题。 可以根据流媒体格式对支持多种格式的播放器的性能进行比较。 |
会话ID | SID | 标识当前回放会话的GUID。 回放会话通常将属于单个媒体资产的片段连接在一起。 最大长度为64个字符。 建议符合UUID规范。 |
始终建议将此密钥包含在CMCD日志记录中。 它可以说是最有用的键,因为它用于将日志对齐在一起。
对于缓存问题的疑难解答很有帮助。 具有两个会话ID的相同内容ID强烈表示存在缓存问题。 |
流类型 | St |
V =所有片段均可用–例如,VOD L =随着时间的推移,数据段变为可用–例如,实时数据段 |
故障排除的宝贵关键。 |
启动 | SU | 信号内容的启动。 |
不再需要信标。 了解内容启动的CDN有助于优化后续播放。 此标志也会在缓冲区标志(BS)之后发送。 |
最高比特率 | 结核病 | 允许客户端播放的清单或播放列表中的最高比特率呈现。 |
用于确定比特率或比特率梯度问题。 显示该播放器当时可以播放的最高比特率。 可用于与可用比特率进行比较。 |
CMCD版本 | 五 | 使用的CMCD规格版本。 | 此键允许进行版本控制,并表示将来将发布CMCD版本。 |
自定义键 |
自定义密钥需要"cmcd-"前缀。 虚构示例:cmcd-edgio |
允许发送唯一的CMCD密钥,从而将CMCD扩展为完全可自定义。 |
目前,Edgio是唯一公开声明支持所有CMCD密钥的CDN。 定义的密钥可以三种交付模式从播放器传输到CDN。
- 每个请求中的自定义HTTP标头。 这些键可以与四个标题名称一起使用。
- CMCD-REQUEST (CMCD-REQUEST):值随每个请求而变化的键。
- CMCD-Object (CMCD-Object):其值随请求的对象而变化的键。
- CMCD-Status (CMCD状态):其值不会随每个请求或对象而变化的键。
- CMCD-SESSION:其值在会话的整个生命周期内是不变的键。
- HTTP查询参数。
- 独立于每个HTTP请求的JSON对象。
缓冲区不足和CMCD格式启动通过三种交付模式。
谁应该使用CMCD?
任何规模的流服务都应尽快使用CMCD。 然而,自发布以来,CMCD的知识和实施一直有限。 我们所看到的趋势表明,越来越多的人接受和支持。 话虽如此,我们很乐意与您讨论您的用例以及CMCD如何提升您的业务。为什么需要CMCD?
CMCD旨在确保用户每次播放时都能获得最佳流媒体体验。 作为Edgio的一名解决方案工程师,我的工作是审查内容提供商的技术架构,以确保我们的CDN平稳高效地工作,从而获得最佳用户体验。 任何技术架构的一个关键组成部分是从日志,度量和跟踪(也称为可观察性的三大支柱)中收集的数据来实现这一目标。 如果您尚未销售CMCD,以下是为何值得加入CMCD的其他几个原因。标准化
数据由第三方和内部专有工具的组合收集和分析,适用于每一个架构。 困难之处在于每个收集的数据都遵循自己的格式。 非标准数据可能会产生副作用,例如不一致,质量下降,可扩展性有限和维护工作量增加。 我建议您找一位以前从未遇到过部分或全部这些问题的工程师。 为了解决这一问题,CMCD将客户端数据(播放器)标准化为服务器端数据(CDN),以确保互操作性。 这一点非常重要,因为它使它成为CDN最接近客户端真实用户测量(RUM)数据的工具。增强的自定义
自定义CMCD密钥无限扩展其实用程序。使用案例:状态代码自定义
下面是Edgio使用的真实自定义状态代码。 “000-当源服务器没有发送响应时返回的特定于Edgio的状态代码,因此没有要记录的状态代码(例如,当客户端在源服务器发送响应之前断开连接时)。 此定义来自配置日志交付服务文档的日志文件字段部分。
Edgio可以创建cmcd-000自定义密钥。
简化的工作流程
近年来,科技公司一直在削减成本,整合工具并降低整体复杂性。 CMCD生成的免费数据可以取代内部和外部日志分析服务。 结果是一个简化和优化的工作流程。使用案例:播放器工作流程
旧流程
如今,流媒体公司广泛使用第三方分析。 但是,这些工具需要一个广泛和持续的集成过程,如下所示。
-
- 采购
- 每个第三方分析供应商都有自己的软件开发套件(SDK),用于与每个播放器集成信标。 Android的ExoPlayer (DASH),Apple的播放器(HLS),微软的PlayReady (Xbox/Windows),基于Web的(网站,电视)等都是需要单独SDK的播放器的示例。
- 测试和验证。 元数据必须符合供应商的准则。
值得注意的是,这一完整过程很容易需要一年或更长时间。
新流程
启用很简单。 Edgio可以通过我们的日志交付服务近乎实时地捕获您的CMCD数据。 这意味着解锁下一代数据分析无需玩家信标或第三方集成。 对于拥有庞大用户群的客户,这意味着每年节省数百万美元。
安全
当谈到流媒体时,信息安全可能不是您的第一想法,但它仍然是一个重要组成部分。- CMCD无法访问登录数据或包含PII (个人可识别信息),因为它将用户体验与信息隔离开来。 它仅包含通用的性能信息。
- CMCD数据不依赖于中间服务。 这限制了与将数据保存在内部的第三方共享数据。
可视性
CDN现在可以查看有关客户体验服务的精确会话数据。 CDN和流媒体提供商可以使用这种共享可见性来:- 设置更准确的监控和警报。
- 为重大事故提供更多的交货时间。
- 更有效地诊断和解决问题。
用例:中断期处理
旧流程
这是流媒体公司如何通过单独的播放器和CDN日志解决中断的典型流程。
-
- 发生中断。 遗憾的是,通常不提供来自第三方分析的人际沟通或干预。
- 内部警报由性能指标下降,错误代码,仪表板等触发
- 警报在内部进行分类,并根据待命人员,主题专家和部门委派等因素上报。
- 如果这是先前遇到和记录的问题,则使用运行手册。
- 决定是否应将问题上报给CDN等外部合作伙伴。
- 已达到分辨率。
- 执行内部根本原因分析(RCA)并将其传达给客户。
由于升级路径漫长,此中断需要很长时间才能解决问题。
新流程
这是如何使用CMCD解决中断的过程流程。
-
- 发生中断。 对本机CMCD数据的访问使每个人都能获得全面的可见性。 我们的托管服务团队主动与您联系,寻求缓解措施。
- Edgio通过实时协作解决中断问题,同时查看与工程师相同的数据,从而实现解决方案。
- Edgio可以协助RCA并作为合作伙伴与您一起制定战略,以防止未来中断。
更快地解决中断问题,并且需要更少的内部工程资源。
性能提升
CDN的主要目的是提高通过互联网提供的内容的性能。预取
我们看到客户经常要求CMCD解锁通用预取支持。 预取是指在需要加快内容交付之前将内容数据上载到缓存。
下一代智能负载平衡
我们的CDN可自动从我们的专用全球网络中的最优预置点(POP)交付内容。 我们为您处理内部网络负载平衡,但当使用多个CDN时,外部负载平衡会变得更加复杂和混乱,内容提供商需要管理。 问题是流媒体公司如何智能地利用其堆栈中的CDN。 每个公司都试图以独特的方式解决这个问题,但对于大多数公司来说,它仍然是由玩家授权的百分比或可用性手动拆分。 CMCD感知负载平衡就是答案。 在统一日志中使用CDN和播放器数据可以更深入地了解每个CDN的性能,这是智能负载平衡所需的。 这是它的初始阶段,但它也是最有前途的特点。 流媒体提供商尚未在其生产环境中使用此方法。 我提到这一点是因为这意味着它的应用是理论上的。 随着我们看到CMCD随着AI/ML等新兴流媒体技术的不断发展和发展,我们将进一步探讨此用例。
使用案例:智能地理负载平衡
流媒体提供商拥有拉丁美洲全年最大的体育直播赛事的独家流媒体权利。 为准备事件,可以使用CMCD感知负载平衡。 在游戏过程中,数据会实时用于将流量自动分配到CDN,并在CDN堆栈中以最佳的区域,区域和/或POP性能。 这可避免在堆栈中的CDN性能不佳,容量不足或遇到技术问题时进行手动故障转移。 在这种情况下,我们的CDN将处理最大的流量份额,因为Edgio通常优于拉丁美洲的其他CDN,因为我们优先在新兴市场进行大量投资。
自适应流量优化
CMCD的实时使用可用于自适应流量优化,例如在流式观众之间稳定播放比特率。
如何启用CMCD?
继续之前,您应该知道有两个技术要求,即播放器和CDN都需要支持CMCD使用。 如今,大多数播放器和CDN都支持CMCD。播放器 | 标题 | 查询 | JSON |
---|---|---|---|
THEOPlayer | |||
Bitmovin | |||
Shaka Player | |||
Android ExoPlayer | |||
hls.js | |||
dash.js |
*应该注意的是,玩家支持是由公开文档的可用性决定的,此列表并非详尽无遗。 请随时联系CMCD播放器支持,我们可以更新以包括该信息。
? =撰写本报告时未公开信息。 请随时联系CMCD CDN支持,我们可以更新以包括该信息。
还有其他注意事项:
- 为了安全起见,强烈建议通过Web进行所有CMCD数据传输时使用HTTPS而不是HTTP。
- CORS和内容保护为CDN配置带来额外的复杂性。 需要将CORS配置为允许从播放机向CDN发送标头CMCD-Request,CMCD-Object,CMCD-Status,CMCD-Session。
为Edgio CDN启用
有关说明,请参阅CMCD报告文档中标题为启用CMCD日志记录的部分。 如果您还不是客户,请联系我们进行性能试用,以便与我们的解决方案工程师团队合作,了解我们的CDN的实际运行情况。
为Uplynk启用
Edgio的Uplynk是一个完美的流媒体平台,集成了面向广播公司和OTT提供商的CDN。 将CMCD与Uplynk相结合将增强其端到端可见性,这是其他流媒体平台所没有的。 如果您还不是客户,请联系我们获取Uplynk演示,并直接与我们的托管服务沟通以启用。 您可以在Edgio和Bitmovin加入力量优化用户体验中阅读有关Uplynk未来的更多信息。
如何查看CMCD?
CMCD数据位于您的CDN日志中,可对其进行检查。 可以将数据提取到日志存储库,仪表板和报告中。 当我们宣布由EdgeQuery提供支持的CMCD报告时,Edgio成为早期采用者。
CDN控制门户中提供的Edgio CMCD报告示例
CMCD报告提供了直观的概览,并且可以轻松查看详细信息。 CMCD数据本身会被发送到您的日志存储解决方案,无论该解决方案位于本地,与第三方共享,还是保存在Edgio的源站存储上的网络中。
展望未来
如果您还没有,您现在应该已经熟悉CMCD以及它如何在今天改变流媒体。 作为CMCD的行业领导者,Edgio将继续尽其所能。 敬请期待!
致谢
特别感谢我们的项目经理Anthony Karr的宝贵反馈和建议。 感谢我们的软件架构师Yuri Nepyvoda在领导我们尖端CMCD实施的开发方面所做的杰出工作。
术语
- CORS:跨源资源共享
- 互操作性:系统协同工作的能力。
- 开放式规范:向任何人公开提供的一套记录要求和标准。
- OTT:Over-the-top,是指在互联网服务之上交付内容。
- 预取:预取是指在需要加快内容交付之前将数据上载到缓存。 预取也称为预热或预热缓存。
- RUM:真实用户测量数据
- SDK:软件开发套件
- Uplynk:面向广播公司和OTT提供商的完美流媒体平台,集成了CDN。