Shaka Player is an open-source JavaScript library for adaptive media. It plays
adaptive media formats (such as DASH and HLS) in a browser, without
using plugins or Flash. Instead, Shaka Player uses the open web standards
MediaSource Extensions and Encrypted Media Extensions.
Shaka Player also supports offline storage and playback of media using
IndexedDB. Content can be stored on any browser. Storage of licenses
depends on browser support.
Our main goal is to make it as easy as possible to stream adaptive bitrate
video and audio using modern browser technologies. We try to keep the library
light, simple, and free from third-party dependencies. Everything you need to
build and deploy is in the sources.
⁷: These are expected to work, but are community-supported and untested by
us.
We support iOS 13+ through Apple's native HLS player. We provide the same
top-level API, but we just set the video's src element to the manifest/media.
So we are dependent on the browser supporting the manifests.
Shaka Player Embedded (for native iOS)
We have another project called Shaka Player Embedded which offers the same
features and similar APIs for native apps on iOS. This project uses its own
media stack, which allows it to play content that would otherwise not be
supported. This supports both DASH and HLS manifests.
Low-latency streaming with blocking playlist reload
DRM support matrix
Browser
Widevine
PlayReady
FairPlay
ClearKey⁶
Chrome¹
Y
-
-
Y
Firefox²
Y
-
-
Y
Edge³
-
Y
-
-
Edge Chromium
Y
Y
-
Y
Safari
-
-
Y
-
Opera
untested⁵
-
-
untested⁵
Chromecast
Y
Y
-
untested⁵
Tizen TV
Y
Y
-
untested⁵
WebOS⁷
untested⁷
untested⁷
-
untested⁷
Xbox One
-
Y
-
-
Playstation 4⁷
-
untested⁷
-
untested⁷
Playstation 5⁷
-
untested⁷
-
untested⁷
Other DRM systems should work out of the box if they are interoperable and
compliant to the EME spec.
NOTES:
¹: Only official Chrome builds contain the Widevine CDM. Chromium built from
source does not support DRM.
²: DRM must be enabled by the user. The first time a Firefox user visits a
site with encrypted media, the user will be prompted to enable DRM.
³: PlayReady in Edge does not seem to work on a VM or over Remote Desktop.
⁵: These are expected to work, but are not actively tested by the Shaka
Player team.
⁶: ClearKey is a useful tool for debugging, and does not provide actual
content security.
⁷: These are expected to work, but are community-supported and untested by
us.
Manifest
Widevine
PlayReady
FairPlay
ClearKey
DASH
Y
Y
-
Y
HLS
Y
Y
Y ¹
-
NOTES:
¹: By default, FairPlay is handled using Apple's native HLS player, when on
Safari. We do support FairPlay through MSE/EME, however. See the
streaming.useNativeHlsOnSafari configuration value.
Media container and subtitle support
Shaka Player supports:
ISO-BMFF / CMAF / MP4
Depends on browser support for the container via MediaSource
Can parse "sidx" box for DASH's SegmentBase@indexRange and
SegmentTemplate@index
Can find and parse "tfdt" box to find segment start time in HLS
WebM
Depends on browser support for the container via MediaSource
Can parse cueing data elements for DASH's SegmentBase@indexRange and
SegmentTemplate@index
Not supported in HLS
MPEG-2 TS
With help from mux.js v6.1.0+, can be played on any browser which
supports MP4
Can find and parse timestamps to find segment start time in HLS
WebVTT
Supported in both text form and embedded in MP4
TTML
Supported in both XML form and embedded in MP4
CEA-608
Supported embedded in MP4
With help from mux.js v6.1.0+, supported embedded in TS
CEA-708
Supported embedded in MP4
With help from mux.js v6.1.0+, supported embedded in TS
SubRip (SRT)
UTF-8 encoding only
LyRiCs (LRC)
UTF-8 encoding only
SubStation Alpha (SSA, ASS)
UTF-8 encoding only
SubViewer (SBV)
UTF-8 encoding only
Subtitles are rendered by the browser by default. Applications can create a
text display plugin for customer rendering to go beyond browser-supported
attributes.
For general help and before filing any bugs, please read the
FAQ.
Contributing
If you have improvements or fixes, we would love to have your contributions.
Please read CONTRIBUTING.md
for more information on the process we would like contributors to follow.
Framework Integrations
The Shaka team doesn't have the bandwidth and experience to provide guidance and
support for integrating Shaka Player with specific frameworks, but some of our
users have successfully done so and created tutorials to help other beginners.
请发表评论