📖 API文档
-
⏯ 演示
-
🎓 入门指南
-
🔧 贡献
RxPlayer是一个在浏览器上实现DASH和Microsoft Smooth Streaming媒体播放器的库,它依赖于HTML5的媒体源扩展和加密媒体扩展浏览器API。
RxPlayer最初是为了驱动Canal+的多个应用而设计的,如今已被多个国家的几家公司在生产环境中使用,并且可以在大多数能运行浏览器的设备上运行:包括计算机、手机、机顶盒、智能电视、游戏主机和其他特殊环境,所有这些都得到支持并能够受益于其众多功能。
其主要目标是:
-
稳定性:RxPlayer可以长时间播放直播和点播DASH和Smooth内容,无论是否有DRM,都不会出现任何性能、内存或逻辑问题。
如果您在使用过程中遇到新问题,我们将很乐意帮助解决。任何遇到的错误都会被列为高优先级。
-
体验质量:它旨在播放最佳质量的内容,而不出现任何重新缓冲。
不支持的编解码器和无法解密的质量(例如在不受信任的设备上具有更严格DRM条件的更高质量)会自动被过滤掉,即使这种情况发生在播放期间。
该播放器还具有很强的恢复能力:任何临时的网络问题、带宽下降、包装不良的内容或平台怪癖都应该得到适当处理,主要目标是避免播放中断。
-
可移植性:RxPlayer已被移植到许多设备上,有些设备的性能和内存能力较低,而有些则较高。
因此,它可以适应重要的内存和性能限制,同时仍能保留其众多功能。
-
可配置性:RxPlayer有大量选项,让您可以调整其行为。您应该能够在任何设备上以您想要的方式播放任何内容。
您还应该能够集成复杂的补充逻辑,如点对点解决方案。
-
易于使用:我们努力使这个播放器易于集成和在各种代码库中使用。
即使对于更高级的选项,我们也旨在使我们的文档尽可能易读和完整。
RxPlayer可能已经拥有您想要的所有功能!
即使不是这样,我们也很乐意与您就此进行交流,并期待外部贡献。
如何使用?
在您的代码中直接使用播放器的最快方法是将此仓库添加为依赖项。
# 使用npm时:
npm install --save rx-player
# 或者,使用yarn时:
yarn add rx-player
然后您可以直接在代码中导入和使用RxPlayer:
// ES6风格导入:
import RxPlayer from "rx-player";
// CommonJS风格相同:
// const RxPlayer = require("rx-player");
// 实例化
const player = new RxPlayer({
videoElement: document.querySelector("video"),
});
// 播放视频
player.loadVideo({
url: "http://vm2.dashif.org/livesim-dev/segtimeline_1/testpic_6s/Manifest.mpd",
transport: "dash",
autoPlay: true,
});
我们还编写了简短的教程,帮助您熟悉RxPlayer API:
为了能够在不需要进行任何设置的情况下试用播放器,我们还创建了多个可实时编辑的演示:
最小化构建
为了减小最终代码的大小,您可能还想导入播放器的最小版本,并只导入您需要的功能。这在此处有文档说明:
例如,要播放加密的DASH内容,您可以只写:
import RxPlayer from "rx-player/minimal";
import { DASH, EME } from "rx-player/features";
// 允许播放加密的DASH内容
RxPlayer.addFeatures([DASH, EME]);
API
我们在API文档中详细记录了API的每个细节。
您还可以在这里参考我们之前版本的文档。
这些文档页面是根据本仓库doc/api目录中的内容自动生成的。
演示
您可以在这里查看我们的在线演示,该演示基于我们的最新版本构建。
这个演示是一个用React编写的小型应用程序,展示了播放器的简单用法。
我们之前版本的演示页面也可以在这里找到。
贡献
关于如何贡献的详细信息在本仓库根目录的CONTRIBUTING.md文件中有所描述。
依赖项
克隆我们的仓库后,您应该首先通过npm安装我们的依赖项:
npm install
为什么要开发新的播放器?
对高级媒体播放器的需求
Canal+集团是一家媒体公司,在媒体播放方面有许多高级需求:它提供直播和点播流,具有多重加密要求,支持广泛的设备,并有许多其他特性(如成人内容限制、广告插入、点对点集成、低延迟直播流等)。
当2015年需要从基于插件的网页播放器转向HTML5播放器时,没有一个媒体播放器具备我们想要的关键功能,将这些需求纳入现有的媒体播放器也不是一件简单的事。
因此,Canal+集团的研发部门开始着手开发一个新的功能丰富的媒体播放器:RxPlayer。为了既帮助社区又从中受益,公司还决定以宽松的开源许可证向所有人分享它。
现在,8年多过去了,RxPlayer继续以同样快的步伐发展,包含了许多其他媒体播放器中可能找不到的功能和改进。您可以查看我们的API文档、教程和我们的演示页面(在那里,RxPlayer实例可以通过全局变量player
在控制台中使用),看看它是否符合您的需求。
功能丰富的播放器
在精心制作和文档完善的架构的帮助下,我们能够在我们或社区需要时快速支持高级功能。其中包括:
-
支持直播和点播DASH / Smooth / HLS* / 下载内容 / MP4* / WebM*内容等
-
支持高级加密配置,如单个或单独许可证中的多个密钥(当我们发现无法解密的内容时自动回退)、持久许可证以及其他特定设备的限制
-
支持低延迟DASH流
-
支持TTML、WebVTT、SAMI和SRT字幕
-
提供基于WebAssembly的DASH内容MPD解析器,可大幅减少较大内容的加载时间和内存使用
-
高级API用于高级用例(仅音频模式、视频轨道选择、手动片段垃圾回收、点对点集成、质量过滤等)
-
先进的自适应流算法,同时使用基于网络的方法(快速启动)和基于缓冲的方法(提供最佳质量)
-
针对内存受限设备的高级优化
-
复杂的片段调度逻辑,优先处理较近的媒体片段,同时确保带宽使用始终最优,重新缓冲风险始终较低
- 在"直接文件"模式下,适用于兼容的浏览器