This PR updates the DRM configuration tutorial.
The configuration code example is incorrect, and also it suggests you
can change the mapping, which is not true, you are only able to
overwrite parts of it.
Co-authored-by: Ivan Kohut <ivan.kohut@lamin.ar>
Add capability to re-use persistent license sessions across sessions.
DrmEngine will now always:
- try to start stored persistent sessions before trying to fetch a
license, as-to be able to check if all needed keys are already loaded.
- ask for a new license when the persistent session doesn't have the
needed keys for playback,
Given the flag `persistentSessionOnlinePlayback` is true, DrmEngine:
- won't remove the persistent session from the device at the end of the
playback,
- won't throw an error when the persistent session isn't found on the
device,
For now, it needs Shaka's users to persist session information by
themselves (localStorage, IndexDB, ...) before giving it back for the
next session. Still, it lays foundation to develop the feature to fully
handling it on Shaka's side.
Related to #1956
The links to the next tutorial were out of date, and they no longer prescribed the actual order of tutorials. This just removes those links entirely.
Fixes#5078
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.
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',
}
}
});
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
- 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
- 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
- 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