Commit Graph

12 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
Vincent Valot b4595d5a59 feat(drm): make dash keySystems configurable (#3276)
Make the DASH keySystems configurable, so that any developer could chose to opt-in for recommendation based on DASH DRM UUID.

Example:
player.configure({
  dash: {
    keySystemsByURI: {
      'urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95': 'com.microsoft.playready.recommendation',
    }
  }
});
2021-04-02 17:33:39 -07:00
Vincent Valot 4574a5dd92 feat: make drm sessionType configurable in advanced DRM config (#3301)
Prerequisite for issue #1495 (com.microsoft.playready.recommendation key system)
2021-04-01 16:32:51 -07:00
Joey Parrish 7b80252408 Improved ClearKey Example (#2439)
Improving documentation for DRM-Configuration for ClearKey

Closes #2434
2020-03-04 10:26:07 -08:00
Jacob Trimble ad996d6873 Add tutorial for FairPlay support.
Closes #1951

Change-Id: I2dac43117ef444cf0701b2195d4a0e93385e5d52
2019-08-05 17:25:34 +00:00
Sandra Lokshina 8065bd54a8 Change namespace from shakaExterns to shaka.externs
Change-Id: I16432351e2a266aa8fd175669aa27c44bfdffeae
2018-04-11 17:26:26 +00:00
Joey Parrish 3dbf28ce39 Fix jsdoc linksource error on bad markdown escape
Issue #1259

Change-Id: I34fb3514b04087fb1389f64e3cb91eaf852af648
2018-02-01 21:55:01 +00:00
Joey Parrish df0d34ccf5 Add linksource tag to jsdoc
This is a customization that allows us to link to the source code of
a thing, rather than its documentation.

Redoing this in a clean way caught some bad links, which have now been
fixed.

Issue #1259

Change-Id: I4c63aa10ddad8f8f21b224668c3529c70a1c6756
2018-01-31 14:05:13 -08:00
Joey Parrish 6ca00260ee Emphasize HTTPS requirement for EME in tutorials
- Move the note about EME and HTTP to the top of the DRM config
   tutorial
 - Reference this note in both the server authentication and license
   wrapping tutorials

Closes #928

Change-Id: Ibb47053c6ce5db1e1b120e0bb810c1f9f9069a82
2017-07-17 09:23:39 -07:00
Jacob Trimble 678390b92a Update tutorials and add another FAQ entry.
Closes #862
Closes #866
Closes #867

Change-Id: I8e97750ddc9851a9d893f0d9aadab234a1deb988
2017-06-21 23:35:50 +00:00
Joey Parrish 04d3df3ae8 Apply feedback from doc review
- Add prereqs section
  - Add architecture diagrams
  - Adjust doc margins
  - Change some wording and fix typos
  - Convert alert() to console.error() in basic usage tutorial
  - Expand prose in debugging tutorial
  - Add comments about asynchronous methods
  - Expand description of Closure base
  - Change some links to source rather than API docs
  - Clarify some vague language
  - Refactor some of the plugin text

Modified jsdoc to add a new 'linksource' tag to link directly to the
source code for an entity.

Change-Id: I6b879050fc59917ce98954a4fabd8afca60af456
2016-04-13 17:12:32 -07:00
Joey Parrish c8e80cb58d Tutorials and other doc revisions
- Update tutorial link in README
 - Fix python version in README
 - Move jsdoc conf to docs/ folder
 - Add API docs main page
 - Change style of inline code blocks
 - Don't repeat tutorial title in jsdoc template
   - (makes it easier to read tutorials on github as MD)
 - Add tutorials for:
   - Welcome to Shaka
   - Basic Usage
   - Debugging
   - Configuration
   - Networking and Buffering Configuration
   - DRM Configuration
   - License Server Authentication
   - Plugins
 - Tutorials still to come:
   - License Headers and Track Restrictions
   - Special Considerations for Live
   - v2 Upgrade Guide

Change-Id: I16401c216cf4023d9097750ac7f6090c68bf3c9b
2016-04-06 19:17:51 +00:00