emp-shaka-player-test

DASH/EME video player library with some added features from EMP

Usage no npm install needed!

<script type="module">
  import empShakaPlayerTest from 'https://cdn.skypack.dev/emp-shaka-player-test';
</script>

README

EMP Shaka Player

EMP Shaka Player is a private copy of Google Shaka Player. Added features

  • fetch la_url from the mpd
  • logic to play current EMP live streams (static live) in live mode, booth dynamic and static live streams.
  • login page to fetch playtoken from Ericsson entitlement api.
  • support for multiple la_url
  • REMOVED black list bitrates that can't be downloaded for 5 min
  • REMOVED restartThrottling if media error 3, Restart player fix Chrome bug: Audio splicing failed with Ad's
  • expose manifest from Player
  • Support for segemented multi subs from MMR, clear double cue from MMR
  • Send TracksChanged event after period switch
  • Don't send trackschanged when no track has changed, solve problem with period switching
  • Expose Shaka ABR options
  • new player event periodupdate ->event.period, event.periodcontext

To build with plugins: python ./build/build.py +@complete -lib/dash/dash_parser.js +externs/emp/emp_dash_parser.js +externs/emp/emp_content_protection.js +externs/emp/emp_abr_manager.js --force

Add a javascript reference to shaka-player.compiled.js

 <script src="./shaka-player.compiled.js"></script>

To pull new hotness from the public Shaka Player repo:

cd emp-shaka-player.git

git remote add public https://github.com/google/shaka-player.git

git pull public master # Creates a merge commit

git push origin master

See http://stackoverflow.com/questions/10065526/github-how-to-make-a-fork-of-public-repository-private

Shaka Player

Shaka Player is a JavaScript library for adaptive video streaming. It plays DASH content without browser plugins using MediaSource Extensions and Encrypted Media Extensions.

We are currently testing on the latest stable releases of Chrome, Firefox, and Edge, as well as IE 11 and Safari 9. We test using both Widevine and PlayReady, but any browser-supported DRM system available through EME should work.

Our main goal is to make it as easy as possible to stream adaptive bitrate video using modern browser technologies. We try to keep the library light and simple, and it has no third-party dependencies. Everything you need to build and deploy is in the sources.

We support both ISO BMFF (MP4) and WebM content (even in the same manifest), WebVTT for subtitles and captions, both clear and encrypted content, and multilingual content. And best of all, it's free!

Important Links

Compiled Mode

Shaka Player is meant to be deployed after being compiled. The tools you need to compile the sources and documentation are included in the sources: Closure Compiler, Closure Linter, and JSDoc.

If you installed Shaka Player via npm, the sources have already been compiled for you.

In order to build, you simply need python v2.7 (for the build scripts) and JRE 7+ (for the compiler). Just run ./build/all.py and look for the output in dist/shaka-player.compiled.js. The output can be included directly in a <script> tag or loaded via a number of JavaScript module loaders.

To build the documentation, you will also need nodejs. Just run ./build/docs.py and look for the output in docs/api/.

Uncompiled Mode

Shaka Player can also be run in uncompiled mode. This is very useful for development purposes.

To load the library without compiling, you will need to generate a Closure "deps file" by running ./build/gendeps.py. Then, you'll need to bootstrap your application with three <script> tags:

  <script src="third_party/closure/goog/base.js"></script>
  <script src="dist/deps.js"></script>
  <script src="shaka-player.uncompiled.js"></script>

If you installed Shaka Player via npm, the deps file has already been generated for you.

Testing

You will need a few third-party dependencies to run automated tests. These dependencies are managed through npm and Shaka's package.json. If you cloned Shaka from github, simply run npm install from your git working directory to install these dependencies locally.

Run the tests in your platform's browsers using ./build/test.py. If you are familiar with the karma test runner, you can pass additional arguments to karma from build/test.py. For example:

./build/test.py --browsers Opera

Or:

./build/test.py --browsers Chrome,Firefox --reporters coverage

You can skip slow-running integration tests with --quick.

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.