技术博客

Web媒体回放:使用dash.js解决

Web媒体回放:解决与dash.js Greg Rutz

2015年6月2日

(免责声明:作者是dash.js项目的定期贡献者)
任何标准开发过程的一个关键部分是创建一个参考实现,以验证标准中规定的许多需求的可行性。毕竟,如果不可能创建完全兼容的产品,那么创建标准就没有意义了。的DASH产业论坛认识到这一点并创建了dash.js项目。

dash.js是一个开源的,JavaScript媒体播放器库加上一些示例应用程序。它依赖于W3C媒体源扩展(MSE)提供自适应比特率回放,并依赖于加密媒体扩展(EME)提供受保护内容支持。虽然dash.js最初是作为一个参考实现,但它已被许多组织用于商业产品中。DASH-IF互操作性点规范在基本功能方面已经达到了相对的稳定性,因此开发团队专注于增加功能和提高性能,以进一步提高其对生产网络媒体播放器的公司的有用性。

js的好处之一是它丰富的特性。它支持直播和点播内容、多时段清单和字幕等。播放器是高度可扩展的自适应比特率规则引擎,可配置的缓冲区调度,和一个指标报告系统。库源代码提供的示例应用程序显示音频和视频的当前缓冲区级别和当前表示索引,它允许用户手动发起比特率变化或让播放器规则自动处理。最后,该应用程序包含缓冲区级别图,清单显示和调试日志窗口。

亚博yabo888vip网页版CableLabs一直是dash.js项目的积极贡献者。dash.js中的许多EME支持都是由CableLabs设计和实现的,以确保该应用程序将支持当今生产桌面web浏览器中发现的各种API亚博yabo888vip网页版实现。此外,CableLabs已经亚博yabo888vip网页版在dash.js演示应用程序中创建并托管了测试内容,以确保其他人可以观察到dash.js EME实现的运行情况,并评估目标浏览器对受保护媒体的支持。

内容保护

媒体库包含对受保护内容回放的广泛支持。多年来,EME规范经历了许多修改和更新,浏览器厂商在其开发过程中选择了不同的时间点来发布他们的产品。为了尽可能多地支持这些浏览器,dash.js开发了一组api (MediaPlayer.models.ProtectionModel)作为一个抽象层来与底层实现进行接口,不管它是什么。这些API的设计目的是模仿最新的EME规范的功能。已经开发了该API的几个实现,以转换回在生产浏览器中发现的EME版本。媒体播放器将检测浏览器支持并自动实例化适当的JavaScript类。
MediaPlayer.models.ProtectionModel而且MediaPlayer.controllers.ProtectionController类为应用程序提供访问播放器内外的EME系统的权限。ProtectionModel提供以下管理MediaKeySessions并且保护系统事件通知为单个内容。在模型上执行的大多数操作都是使用ProtectionController进行的。应用程序可以使用媒体播放器库在回放环境之外实例化这些类以预获取许可证。一旦预先获取了许可证,应用程序可以将保护对象附加到播放器,以将许可证与HTMLMediaElement它将处理回放。

一个EME演示应用程序提供了dash.js (样品/ dash-if-reference-player / eme.html),提供了对浏览器中发生的EME操作的一些可见性和控制。该应用程序允许用户预取许可证,管理关键会话持久性,并播放相关内容。它还显示了选定的密钥系统,以及与密钥会话关联的所有许可证的状态。

eme-demo-app

格雷格Rutz他是CableLabs的首席架构师,从事多个与亚博yabo888vip网页版数字视频编码/转码和在线视频数字版权管理相关的项目。

这篇文章是技术博客系列的一部分。基于标准的现代Web优质内容".

隐私偏好中心

    严格的必要

    网站正常运行所必需的cookie。

    PHPSESSID, __cfduid hubspotutk

    性能

    它们用于跟踪用户交互并检测潜在的问题。这些数据有助于我们通过提供用户如何使用本网站的分析数据来改善我们的服务。

    BizoID, wooTracker, GPS, _ga, _gat, _gid, _hjIncludedInSample, mailmunch_second_pageview

    针对

    这些cookies用于(1)发送与您和您的兴趣更相关的广告;(2)限制你看广告的次数;(3)帮助衡量广告活动的效果;(4)了解人们在观看广告后的行为。

    __hssc, __hssrc, __hstc,