Video.js 博客

加里·卡采夫曼2018-03-09

Video.js 7 路线图

今天,我很高兴地宣布 Video.js 7 的路线图!虽然这是一个主要版本更新,但实际上并没有太多破坏性的改动。两个主要变化是增加了 videojs-http-streaming(简称 VHS),以及移除了对旧版 Internet Explorer 的支持。

VJS 7
VJS 7

Video.js HTTP Streaming

VHS 曾是 videojs-contrib-hls,但随着 MPEG-DASH 变得越来越流行,我们意识到我们也希望支持它,并且 HLS 和 DASH 实现之间可以共享大量代码。请期待 VHS 的公告文章中更多细节!VHS 将默认与 Video.js 一起发布,因为 Video.js 的指导原则之一是让用户轻松地将其放在页面上,并拥有一个跨浏览器工作的播放器。随着 HLS 和 DASH 变得如此流行,我们认为现在是时候为最常见的流媒体格式提供一个即插即用的 Video.js 了。除了默认包含它之外,我们还将确保为不需要它或正在使用其他播放引擎(如 HLS.js)的用户提供排除 VHS 的构建版本。

旧版 IE

IE8
IE8

Video.js 在支持 IE 方面有着悠久的历史,最初为 IE8 创建了 Flash 回退功能。当 Video.js 5 发布时,我们有大量代码来支持 IE8,而当 Video.js 6 问世时,随着 Flash 的逐渐淘汰,我们将 Flash 支持转移到了一个独立项目 videojs-flash。现在,根据使用数据,我们计划移除对 IE8、IE9 和 IE10 的支持。根据我们收集的数据,IE 的总份额约为 4%。在这 4% 中,IE8、IE9 和 IE10 合计只占不到 5%,而 IE11 的使用率约为 91%。这意味着 IE8、IE9 和 IE10 合计仅占 Video.js 总使用量的 0.002%。基于如此微小的占有率,我们认为不值得投入大量精力来维护对这些浏览器的支持。好消息是,对于那些担心此问题的人,Video.js 6 短期内不会停止支持,并且将继续满足您旧版 IE 的支持需求。除了统计数据,我们目前的测试在 IE8 上运行需要 5 到 10 分钟。移除对它的支持将大大缩短我们测试套件的运行时间。更糟糕的是,有时测试会超时并重试长达 40 分钟,但当它们重新启动时,第一次尝试就能通过。无需处理这些类型的问题将使我们能够提升测试基础架构并提供更好的产品。

感谢 Browserstack 赞助 Video.js 的浏览器端测试!

Video.js 5.x

当 Video.js 7 发布时,从支持角度来看,Video.js 5.x 将达到生命周期结束。当然,我们不会从 npm 取消发布此版本,也不会从 CDN 中删除文件,因此您可以继续自由使用它。但是,我们敦促您尽快更新,因为我们将不再接受修复。

Google Analytics

感谢 Fastly 赞助 vjs.zencdn.net

Video.js 提供由 Fastly 赞助的 CDN 托管文件(感谢 Fastly!)。这些文件目前带有一个精简的 Google Analytics (GA) 像素跟踪功能,它会将有限的信息发送到我们拥有的 GA 账户。我们在此事的沟通上做得非常糟糕,包括如何告知用户此情况以及如何选择退出——即在加载 Video.js 之前将 window.HELP_IMPROVE_VIDEOJS 设置为 false——或者使用其他 CDN,如 unpkg 或 CDNJS。最近我们做了一项更改,使此跟踪像素尊重用户在浏览器中设置的“禁止追踪”标志,然而,这不会影响 Video.js 之前发布的版本。

此外,从 Video.js 7.0 开始(可能还会向后移植到 6.x 的更新版本),我们将不再在我们的 CDN 构建中包含此跟踪像素。相反,我们正在研究通过 Fastly 使用 CDN 日志的选项。我们预计在 Video.js 7 发布日期临近并对我们的计划有更清晰的了解时,分享更多细节。

构建工具

目前,Video.js 使用 Rollup 将所有 Video.js 文件合并为两个文件,以适应不同的构建系统。一个文件不包含依赖项,用于打包工具;另一个文件包含依赖项,用于作为 <script> 在页面上使用的 UMD 文件。我们正在考虑将构建和测试工具从 Rollup 和 Browserify 转换为 Webpack 4.0,以提供更大的构建灵活性,并更好地支持与 VHS 一起构建(许多人可能还记得 contrib-hls 仓库上臭名昭著的第 600 号问题)。此外,我们还将研究在打包 Video.js 时允许自定义构建。例如,如果用户不想要 VHS 或不想要可见控件(播放器中令人惊讶地大的一部分),他们可以在打包应用程序时设置 VJS_VHS=false VJS_CONTROLS=false,以将这些部分排除在构建之外。

时间表

我们仍在进行上述许多工作,但我们希望能在三月底之前发布 7.0 的第一个预发布版本。

我们对这次并非那么重大的更新感到非常兴奋,也希望您会如此!