Commit Graph

63 Commits

Author SHA1 Message Date
Vincent Valot 6d76a135e5 feat: add modern EME support for FairPlay (#3776)
Add support for HLS com.apple.streamingkeydelivery through MSE/EME implementation.

Close #3346

## Tests
Tested on:
- Mac 11.6 Safari 15.2
- iOS 15.2 Safari 15.2
- Mac 11.6 Chrome 96 (for potential regressions on Widevine keySystem)

| Mode | DRM API | TS | CMAF (mono-key and multi-keys)
|---|---|---|---|
| file | EME |   |   |
| file | Legacy-prefixed |    |    |
| media-source | EME | **mux-js**: `encrypted` never fired<br />**real MSE**: `encrypted` event received, but with incorrect `sinf` initData (*1)  |   |
| media-source | Legacy-prefixed | **mux-js**: `webkitneedkey` never fired<br/>**real MSE**: TBD  | 🔴 fails to append media segment to SourceBuffer (init segment ok) `(video:4) – "failed fetch and append: code=3015"` |

## Support table 
| Mode | DRM API | TS | CMAF (mono-key and multi-keys)
|---|---|---|---|
| file | EME |   |   |
| file | Legacy-prefixed |    |    |
| media-source | EME | 🚫 `4040: HLS_MSE_ENCRYPTED_MP2T_NOT_SUPPORTED`  |   |
| media-source | Legacy-prefixed | 🚫 `4041: HLS_MSE_ENCRYPTED_LEGACY_APPLE_MEDIA_KEYS_NOT_SUPPORTED`  |🚫 `4041: HLS_MSE_ENCRYPTED_LEGACY_APPLE_MEDIA_KEYS_NOT_SUPPORTED` |

⚠️ Use EME APIs with multi-keys CMAF makes the video stalling with the audio continuing alone after a short time (~3 minutes in the stream, could be shorter, could be longer). Didn't find an explanation to that yet. I've observed the same behaviour with hls.js code so I don't think this is a player issue.
2022-02-07 11:17:22 -08:00
Bathula Sai Vinay be8dce4874 docs: Small grammar change in README.md (#3568) 2021-08-09 16:00:48 -07:00
Patrick Kalkman d07038ffb3 docs: add Angular integration link (#3409)
Co-authored-by: Patrick Kalkman <patrick.kalkman@exlrt.com>
2021-05-17 11:31:59 -07:00
Jeffrey 340480525d fix(docs): corrects typo in project README (#3368) 2021-04-26 02:11:58 -07:00
Álvaro Velad Galván 463b1b6886 Remove support for IE 11 (#3309)
Issue #2339
2021-04-16 13:59:35 -07:00
Michelle Zhuo 879264a6e4 doc(hls): update HLS supported/unsupported features
Change-Id: I366a49564f2c14c8cfaed67dff00bc17b281aabd
2021-04-07 19:35:04 +00:00
Álvaro Velad Galván e6108060bd test: Allow testing with Edge Chromium in Karma (#3265) 2021-03-30 16:36:53 -07:00
Joey Parrish 04714707a8 docs: Official Xbox One support
Closes #1705

Change-Id: I16c2f2dece14dada5e67772c516c6e39de885519
2021-03-30 22:44:57 +00:00
Dave Herzog a2b002ab5c feat(docs): Add vue.js, nuxt.js and video.js integration examples (#3160) 2021-02-16 14:42:13 -08:00
Álvaro Velad Galván 82b2878c94 feat: Add SubViewer (SBV) support (#3063) 2021-02-12 11:12:18 -08:00
Álvaro Velad Galván 0845843b65 feat: Add SubStation Alpha (SSA) support (#3060)
Format info: https://en.wikipedia.org/wiki/SubStation_Alpha
2021-02-01 12:50:54 -08:00
Álvaro Velad Galván 8b7e70a30d feat(text): Add LyRiCs (LRC) support (#3036)
Format info: https://en.wikipedia.org/wiki/LRC_(file_format)
2020-12-28 14:19:36 -08:00
Álvaro Velad Galván 2c07646fee chore: Update mux.js (#3023)
This new version supports CEA-708
2020-12-16 17:40:51 -08:00
Álvaro Velad Galván 840aae408d Add SubRip (SRT) subtitle support (#2872)
SRT can be trivially converted into WebVTT, so the SRT parser delegates to the VTT parser.
2020-10-01 09:52:43 -07:00
Álvaro Velad Galván 70acccdd80 docs: Add note about CEA-708 (#2824) 2020-09-10 13:06:56 -07:00
Álvaro Velad Galván a84c4da439 docs: Add info about Edge Chromium (#2795) 2020-08-24 15:48:36 -07:00
Álvaro Velad Galván 4190e923eb doc: Add note about CEA-608/708 (#2794) 2020-08-24 15:44:59 -07:00
Álvaro Velad Galván baa86885e7 Readme updates (#2787)
- Add PlayReady support to HLS
 - Add a new table for Manifest-DRM compatibility
 - Add notes about WebOS and Xbox

Issue #2783
2020-08-13 11:48:36 -07:00
michellezhuo bb1f844ce7 docs: Move Tutorial links up front
Change-Id: Ic47c50e01e3a7352253a43271c5f75e88c5d3048
2020-06-29 22:31:35 +00:00
Joey Parrish aba5e2583c Rename v2.6 to v3.0 and v2.7 to v3.1
We have decided to bump the major version number instead of the minor
number, based primarily on the fact that this release breaks
compatibility with our previous manifest structure.

Change-Id: I67e4c8267c6e103cfc7278e09daac186ae5cbbc6
2020-05-29 17:50:22 +00:00
Joey Parrish a3f1c0220f Fix CEA caption extraction for b-frame content
This updates to mux.js 5.6.3, which includes a fix for v1 trun box
parsing to fix caption extraction for content with b-frames.

Closes #2395

Change-Id: I206ce26bb43e8187599e8ca7be2e718f4ea345c3
2020-05-07 14:01:26 -07:00
Joey Parrish 80f53221fd Correct minimum supported Safari version in README
Also add a note to the MSE polyfill about restrictions being applied
in Player as well.  We used to restrict Safari versions only in the
polyfill, and I had forgotten about the other version check.

Closes #2548

Change-Id: I4d2f319939c3a079e7f0ec7134876d91fc425bf4
2020-05-05 14:47:08 -07:00
Joey Parrish 42afedd1e4 Update to mux.js 5.5.4
This gets us a fix for a closed caption parsing issue described in
videojs/mux.js#330 and fixed in videojs/mux.js#333:

> Atypical streams containing 2+ SEI NAL payloads of type 0x04
> (CEA-708 caption content) in the sei_rbsp (specifically a DTG1
> payload preceding a GA94 payload) fail to display captions in this
> scenario, as the current logic results in parseSei() prematurely
> returning with the DTG1 payload.
>
> By checking for the user ID within parseSei, mux.js can continue
> iterating through the sei_rbsp for the GA94 payload.

Change-Id: I9d90419643279a1273187e0354b5e991cd609ba2
2020-04-14 10:26:39 -07:00
michellezhuo 734d129fcd Add Support for HLS Discontinuity
Closes #2397
Closes #1335

Change-Id: I6f540c42c72bf0ae36239b682d4016cca3981c0f
2020-04-09 14:59:42 -07:00
Sandra Lokshina 0a671c11b8 Add a next.js+shaka integration tutorial to README
Issue #2163

Change-Id: Iabc7513972b3d51c8ec2031bd17d9458409e6b7d
2020-02-12 10:44:49 -08:00
Joey Parrish 03d2992f09 Ban iOS < 12
Also:
 - Hide the close button next to a "browser not supported" error
 - Update the support matrix in the README

Closes #1920

Change-Id: Ic3db57a53d800eda3c280b45436eda4f1dae6baa
2020-01-27 20:59:14 -08:00
Joey Parrish f57a7d9632 Reformat README
This fixes the formatting to wrap at 80 columns, for consistency.

This also corrects a bug link which was out of date.

Change-Id: I47aaba2f371bc9c9cbcce7fb2255db21de128fc7
2020-01-24 13:15:37 -08:00
Joey Parrish 2373c1b25e Add note about IE deprecation to README
Issue #2339

Change-Id: I1a345e49e80a90aeaf1b9471a587c73a5646befa
2020-01-24 13:03:44 -08:00
Joey Parrish cc640eb51c Drop references to CDNJS
CDNJS isn't updating correctly and maintenance of that mirror's config
is nearly impossible.

Also adds a reference to jsDelivr in the README, matching what's in
the demo app.

Closes #2343

Change-Id: I3a337ccd55ebc4c193ab205a7f8c8a77c33a4b4b
2020-01-16 22:36:32 +00:00
Sandra Lokshina d4d0c4f888 Add a Framework Integration section to the README
Change-Id: I60ac50d6d44428013695116a07ce3918243c1dc5
2019-11-25 16:00:00 -08:00
michellezhuo d519ec7b02 Rename 'iOS on iPad' to 'iPadOS'
Closes #2210

Change-Id: I695d2ee1c66be2a58c55272bb96feb225ca7b257
2019-11-04 14:27:34 -08:00
michellezhuo d288f3863f Add iOS 13 support on iPad
Closes #2210

Change-Id: I27a0810efb84ce906444fdfe42ef6f8958af9f7c
2019-11-04 19:37:47 +00:00
Amir Farzan Najipour 2c8fd6cdb9 Update README.md (#2202)
Correct misspelled words
2019-10-20 05:39:51 -07:00
Joey Parrish 72fa25669a Add a public roadmap document
Change-Id: Iee4af3763180a8b61b2ff84de7b60bea03b509f2
2019-06-05 20:32:42 +00:00
Joey Parrish d66d6c4255 Upgrade mux.js and use minified version
The new mux.js release fixes support for a minified build, so we
should use that from now on.

videojs/mux.js#173

Change-Id: I08cff8d33a520fe753c5490a4719cba3bb27f19e
2019-05-13 14:24:41 -07:00
Joey Parrish 3901fcba79 Update README with regard to FairPlay support
Issue #382

Change-Id: I85279100052c3eedd46912e74448cd29268e8632
2019-05-01 09:35:24 -07:00
Jacob Trimble 6f47a6bf88 Add link for Shaka Player Embedded.
This also updates our docs for iOS support.

Issue #997
Closes #1846

Change-Id: If95d726acc00e16a4f25291b9791bee820a74b84
2019-04-23 22:31:57 +00:00
Joey Parrish 4c34b89c1b Document restrictions on large timescales
Fixes #1667

Change-Id: I00f0e049f6111dffa73c6dce852c9db81373b359
2018-11-15 09:50:25 -08:00
Joey Parrish 7a3b352023 An external Promise polyfill is no longer required
At some point, a compiler upgrade introduced a built-in polyfill for
Promise.  A third-party polyfill for Promises on IE11 is no longer
required.

Change-Id: Ie5a649232d949b0bba0c6c68ea54ceed6fb30891
2018-09-13 22:12:04 +00:00
Joey Parrish f7581718f4 Add list sign-up screenshot
Change-Id: Iff62d582909ff89463d944244504966c47aa8e68
2018-07-09 17:12:49 +00:00
Chris Fillmore f0eb31fdfa Move CEA-608/708 to list of supported HLS features (#1465) 2018-06-14 09:43:27 -07:00
Sandra Lokshina 8065bd54a8 Change namespace from shakaExterns to shaka.externs
Change-Id: I16432351e2a266aa8fd175669aa27c44bfdffeae
2018-04-11 17:26:26 +00:00
Joey Parrish 82357486a6 Replace buggy Promise polyfill
A bug in our Promise polyfill caused issues with the recently-added
AbortableOperation class on IE11.  Since external polyfills for this
are smaller, it is easier to remove ours in favor of a third-party
polyfill.  Applications that wish to support IE11 must now load this
additional polyfill.

We are using the "es6-promise-polyfill" module from npm, but any
compliant polyfill should suffice.

One feature our own polyfill offered was the ability to flush all
Promises, which allowed us to write synchronous unit tests that
simulated async processes.  To get this ability back, we are now
using the "promise-mock" module in our tests.

Getting "promise-mock" to load correctly involved switching from
"requirejs" to "cajon", which builds on requirejs and supports
AMD modules more directly.

Closes #1260

Change-Id: I5de48e88a910736ae5c1897a7a509bc5641acb70
2018-01-30 23:10:04 +00:00
Joey Parrish e298fb60fc Update muxjs to use new keepOriginalTimestamps option
Depended on issue videojs/mux.js#168

Issue #1194

Change-Id: Ia2ad5c17ad82a2c53215d34fbfec7be1d119df95
2018-01-18 20:18:09 +00:00
Joey Parrish 08601defc8 Refactor README.md and welcome.md
README.md duplicated some information from welcome.md, included other
details better left to welcome.md, and did not provide clear enough
information about support and features.

This moves some parts of README.md to welcome.md, drops others, adds
some details about feature set, and reformats some of the existing
support information into tables.

Change-Id: Ic863bc47fd46d01ca57d126654b2c9902a4b17bb
2017-11-28 00:14:32 +00:00
Joey Parrish 9e571b3938 Update docs with regard to users list
The users list is now for announcements only.

Issue #1095

Change-Id: I4d86bfda5c116e88b950e2139a1c3d42afc91693
2017-10-30 15:28:16 -07:00
Andy Hochhaus 5bf8aea6c4 Document lack of support for IE11 on Windows 7 (#993) 2017-08-28 16:58:06 -07:00
Joey Parrish 116d4b4875 Add Tizen TV to the list of devices we test
Change-Id: I520631683d92c85a471b18ec03afea5f70aab492
2017-06-16 20:44:06 +00:00
Joey Parrish 2f7a5b6059 Build the FAQ into the tutorials
The FAQ file had to be moved into the tutorials folder to make this
work for some reason.  JSDoc did not want to take "../faq" as a name.

Closes #865

Change-Id: I63ff5b181f494d72c04eaa054111d9fdc866064c
2017-06-09 23:53:38 +00:00
Joey Parrish b6c021d0b4 Update list of supported platforms
Closes #863

Change-Id: I5bbeaa3944a4b6c3d0f551f2879cbc88dd41d9ec
2017-06-09 23:53:38 +00:00