Shaka Player 是一个用于自适应媒体的开源 JavaScript 库。它在浏览器中播放自适应媒体格式(例如 DASH、HLS 和 MSS),无需使用插件或 Flash。相反,Shaka Player 使用开放网络标准 MediaSource Extensions 和 Encrypted Media Extensions。
Shaka Player 还支持使用 IndexedDB 离线存储和播放媒体。内容可以存储在任何浏览器上。许可证的存储取决于浏览器支持。
我们的主要目标是使用现代浏览器技术尽可能轻松地传输自适应比特率视频和音频。我们努力保持该库轻量、简单且不受第三方依赖。构建和部署所需的一切都在源代码中。
有关接下来的详细信息,请参阅我们的开发路线图。
有关 Shaka Player 维护的分支的最新列表,请参阅maintained-branches.md。
浏览器 | 视窗 | 苹果 | Linux | 安卓 | iOS >= 9 | iOS >= 17.1 | iPadOS >= 13 | Chrome操作系统 | 其他 |
---|---|---|---|---|---|---|---|---|---|
铬合金1 | 是 | 是 | 是 | 是 | 本国的 | 本国的 | 本国的 | 是 | - |
火狐浏览器 | 是 | 是 | 是 | 未经测试⁵ | 本国的 | 本国的 | 本国的 | - | - |
边缘1 | 是 | - | - | - | - | - | - | - | - |
边缘铬 | 是 | 是 | 是 | 未经测试⁵ | 本国的 | 本国的 | 本国的 | - | - |
IE | 氮 | - | - | - | - | - | - | - | - |
野生动物园1 | - | 是 | - | - | 本国的 | 是 | 是 | - | - |
歌剧¶ | 是 | 是 | 是 | 未经测试⁵ | 本国的 | - | - | - | - |
Chromecast²。 | - | - | - | - | - | - | - | - | 是 |
蒂森电视³ | - | - | - | - | - | - | - | - | 是 |
网络操作系统⁶ | - | - | - | - | - | - | - | - | 是 |
海信⁷ | - | - | - | - | - | - | - | - | 是 |
Xbox One | - | - | - | - | - | - | - | - | 是 |
游戏机 4⁷ | - | - | - | - | - | - | - | - | 是 |
游戏机 5⁷ | - | - | - | - | - | - | - | - | 是 |
笔记:
iOS 和 iPadOS 的注意事项:
src
元素设置为清单/媒体。所以我们依赖于支持清单的浏览器。格式 | 视频点播 | 居住 | 事件 | 正在进行的录音 |
---|---|---|---|---|
短跑 | 是 | 是 | - | 是 |
HLS | 是 | 是 | 是 | - |
MSS | 是 | - | - | - |
您还可以创建清单解析器插件来支持自定义清单格式。
支持的 DASH 功能:
不支持 DASH 功能:
支持的 HLS 功能:
不支持的 HLS 功能:
有关 HLS 格式和这些标签含义的详细信息,请参阅 https://datatracker.ietf.org/doc/html/draft-pantos-hls-rfc8216bis
#EXT-X-STREAM-INF:<attribute-list>
<URI>
#EXT-X-MEDIA:<attribute-list>
#EXT-X-IMAGE-STREAM-INF:<attribute-list>
#EXT-XI-FRAME-STREAM-INF:<attribute-list>
#EXT-X-SESSION-DATA:<attribute-list>
#EXT-X-SESSION-KEY:<attribute-list>
EME 密钥系统选择和预加载#EXT-X-START:TIME-OFFSET=<n>
#EXT-X-CONTENT-STEERING:<attribute-list>
内容引导#EXT-X-DEFINE:<attribute-list>
变量替换( NAME,VALUE,QUERYPARAM
属性) #EXTM3U
#EXTINF:<duration>,[<title>]
#EXT-X-PLAYLIST-TYPE:<type
#EXT-X-ENDLIST
#EXT-X-MEDIA-SEQUENCE=<n>
#EXT-X-TARGETDURATION=<n>
#EXT-X-DISCONTINUITY
#EXT-X-DISCONTINUITY-SEQUENCE=<n>
#EXT-X-BYTERANGE=<n>[@<o>]
#EXT-X-MAP:<attribute-list>
#EXT-X-KEY:<attribute-list>
( KEYFORMAT="identity",METHOD=SAMPLE-AES
仅支持 MP4 片段)#EXT-X-PROGRAM-DATE-TIME:<attribute-list>
#EXT-X-START:TIME-OFFSET=<n>
#EXT-X-SERVER-CONTROL:<attribute-list>
#EXT-X-PART-INF:PART-TARGET=<n>
#EXT-X-PART:<attribute-list>
#EXT-X-SKIP:<attribute-list>
Delta 播放列表#EXT-X-DATERANGE:<attribute-list>
元数据#EXT-X-DEFINE:<attribute-list>
变量导入和替换( NAME,VALUE,IMPORT,QUERYPARAM
属性)#EXT-X-GAP
#EXT-X-PRELOAD-HINT:<attribute-list>
#EXT-X-BITRATE
仅在支持媒体源扩展 SourceBuffer 的浏览器上受支持
MPEG-5 Part2 LCEVC 解码支持(解码由 lcevc_dec.js 提供,必须单独包含)
集成文档:文档
有关 MPEG-5 第 2 部分 LCEVC 的更多信息
支持的 MSS 功能:
不支持的 MSS 功能:
浏览器 | 宽藤 | 游戏就绪 | 公平竞赛 | 清除密钥⁶ |
---|---|---|---|---|
铬合金1 | 是 | - | - | 是 |
火狐² | 是 | - | - | 是 |
边缘3 | - | 是 | - | - |
边缘铬 | 是 | 是 | - | 是 |
狩猎之旅 | - | - | 是 | - |
歌剧 | 是 | - | - | 是 |
Chromecast | 是 | 是 | - | 是 |
蒂森电视 | 是 | 是 | - | 是 |
网络操作系统⁷ | 未经测试⁷ | 未经测试⁷ | - | 未经测试⁷ |
海信⁷ | 未经测试⁷ | 未经测试⁷ | - | 未经测试⁷ |
Xbox One | - | 是 | - | - |
游戏机 4⁷ | - | 未经测试⁷ | - | 未经测试⁷ |
游戏机 5⁷ | - | 未经测试⁷ | - | 未经测试⁷ |
其他 DRM 系统如果具有互操作性并且符合 EME 规范,则应该可以开箱即用。
笔记:
显现 | 宽藤 | 游戏就绪 | 公平竞赛 | 明键 |
---|---|---|---|---|
短跑 | 是 | 是 | - | 是 |
HLS | 是 | 是 | Y 1 | - |
MSS | - | 是 | - | - |
笔记:
streaming.useNativeHlsForFairPlay
配置值。 沙卡播放器支持:
默认情况下,字幕由浏览器呈现。应用程序可以为客户渲染创建文本显示插件,以超越浏览器支持的属性。
沙卡播放器支持:
沙卡播放器支持:
沙卡播放器支持:
Shaka Player 支持 DASH 和 HLS 中的内容引导 (v1)。
支持的内容引导功能:
不支持内容引导功能:
Shaka Player 在以下情况下支持 VR:
prji
和hfov
框支持的 VR 模式:
笔记:
如需一般帮助以及在提交任何错误之前,请阅读常见问题解答。
如果您有改进或修复,我们很乐意收到您的贡献。请阅读 CONTRIBUTING.md,了解有关我们希望贡献者遵循的流程的更多信息。
Shaka 团队没有足够的资源和经验来提供将 Shaka Player 与特定框架集成的指导和支持,但我们的一些用户已经成功地做到了这一点,并创建了教程来帮助其他初学者。
Shaka + ReactJS 库
Shaka + ReactJS 集成:
Shaka + Next.js 集成:
Shaka + Vue.js 集成:
Shaka + Nuxt.js 集成:
Shaka + video.js 集成:
Shaka + Angular 集成:
如果您已经发布了 Shaka Integration 代码/教程,请随时提交 PR 将其添加到此列表中,我们将很乐意批准!