媒体框架

德里克·赫尔曼
Derek Herman

将媒体添加到网页的方法有多种。之前,您学习了如何使用标准 <video> 标记。在本文中,您将了解一些可用于扩展或替换默认 HTML5 视频播放器行为的媒体框架(或库)。

媒体框架有专有和开源两种形式,其核心是一组 API,支持针对各种容器格式和传输协议播放音频和/或视频播放。好的框架采用模块化架构,并提供清晰而详细的文档。理想情况下,它也应该相对易于设置和使用。您可能会问自己:“如果 HTML5 视频播放器已经提供了大部分功能,我为什么要使用框架或库?”这个问题问得好,我们来深入了解一下。

使用框架的优势

在大多数情况下,您可能希望使用媒体框架来提供内容,而满足基本网页的需求以外的需求。除非您已准备好开发和维护丰富的功能集(如离线播放、在线播放、分析、画中画、预览缩略图、嵌入和创收功能,例如填充率优化、广告投放时间设置或标头出价等),否则就应该将同样的复杂工作转移到现有解决方案中。

这正是媒体框架的用武之地。它们为您提供了一系列功能以及使用这些功能的条件,然后您必须确定哪种框架适合您的项目。在下一篇文章中,我们将讨论我们如何构建具有离线流式传输功能的 PWA以实现多种复杂功能。提前剧透一下,这涉及大量的工作,距离成为可直接用于生产的解决方案仍有很长的路要走。不用再为烦恼而劳神费心,不妨使用一个框架。

有很多选项可供选择,目前,本文将重点介绍三个,分别是 Shaka PlayerJW PlayerVideo.js

Shaka 播放器

根据相关文档,Google 的 Shaka Player 是一个适用于自适应媒体的开源 JavaScript 库。它可以在浏览器中播放自适应媒体格式(例如 DASHHLS),无需使用插件。而 Shaka Player 则使用开放网络标准的 MediaSource ExtensionsEncrypted Media Extensions

Shaka Player 还支持使用 IndexedDB 离线存储和播放媒体。内容可存储在任何浏览器中。许可的存储取决于浏览器支持。

Shaka Player 文档网站上提供了基本用法的说明。不过,简而言之,要使用 Shaka Player,您需要先创建一个包含视频或音频元素的 HTML 页面。然后在应用的 JavaScript 中安装 polyfill 并检查浏览器是否支持。浏览器确认支持 Shaka Player 后,脚本将创建一个 Player 对象来封装媒体元素,监听错误,然后加载清单文件。Shaka Player 将从那里接管。

使用 Shaka 时,您需要自行托管和编码媒体文件。创建媒体服务器并不复杂,但对媒体进行编码/转码可能会既耗时又复杂。您可能希望将此部分分流到 ZencoderAmazon Elastic EncoderGoogle Transcoder API 等服务,以自动执行重复性任务并加快流程。

Shaka 播放器的一大优点是,还有一个名为 Shaka Packager 的强大工具和媒体打包 SDK,适用于 DASH 和 HLS 打包和加密。它可以准备和打包用于在线流式传输的媒体内容(请参阅先前的媒体转换媒体加密部分)。

JW 播放器

如果您正在寻找提供托管和编码/转码服务的选择,则可以考虑 JW Player,但请注意,JW Player 是专有软件。这意味着,您无法对平台或路线图进行太多控制。一个是基本免费版本,一个是带水印的视频,另一个是商业版本。

JW Player 支持使用 MPEG-DASH(仅限付费版本)、数字版权管理 (DRM)(使用 Vualto)进行在线播放、互动广告、界面自定义和嵌入式功能。并具有文档完备的 API 和 SDK。但是,如果您只是想快速、免费地托管您的媒体内容,那么嵌入 YouTube 视频通常是最佳免费方法。

Video.js

根据其网站的说明,Video.js 是专为 HTML5 环境而打造的。它支持 HTML5 视频、新型流式传输格式,例如 DASH 和 HLS,以及 YouTube 和 Vimeo。它支持在桌面设备和移动设备上播放视频,在使用基于 CSS 的皮肤时具有良好的视觉效果。

可通过多种方式使用 Video.js,但最简单的方法是使用 Fastly 提供的免费 CDN 版本。您可在使用入门页面详细了解如何设置播放器。Video.js 是一个非常强大的视频播放器,它与 Shaka 播放器类似,您还需要托管和编码视频。但有一个不同之处在于插件系统。在该系统中,您可以执行在 Video.js 播放器中播放 YouTube 视频等操作,也可以对插件系统进行自定义。

其他框架

目前有很多不同的框架和库可供使用,本文只是对现有功能一些初步了解。选择框架时,您应该考虑项目需要哪些功能,以及您计划如何托管、编码或转码媒体。您是否需要前贴片广告或其他创收策略?您的媒体内容是否可供离线访问?您的预算是多少?或任何其他注意事项。做好调查,向您人际网中的人们寻求建议。还有数十种其他出色的方案,在您做出任何选择之前,请花些时间选择一个适合您的团队的方案,并避免在项目生命周期中造成不必要的技术债务或维护复杂性。

接下来,您将了解我们构建的支持离线流式传输的 PWA,演示如何处理和解决在不使用框架的情况下,只使用 HTML5 视频对象来处理繁重工作的自行开发解决方案所面临的主要挑战。