Commit Graph

252 Commits

Author SHA1 Message Date
loicraux df2739ea1d docs: Fix registerScheme snippet (#5635)
Fixes #5634

Co-authored-by: Loïc Raux <loicraux@gmail.com>
2023-09-11 11:24:28 -07:00
Álvaro Velad Galván 7df3321272 feat: Add TS transmuxer for muxed content (#5571) 2023-09-07 18:20:03 +02:00
Álvaro Velad Galván d37143e060 feat(Ads): Add control AdsRenderingSettings (#5536)
Closes https://github.com/shaka-project/shaka-player/issues/5011
2023-08-25 12:40:58 +02:00
Joey Parrish ace3e37241 ci: Refactor and update Shaka lab definitions (#5449)
- In karma.conf.js, give ourselves the ability to merge Selenium configs together without clobbering argument lists, for better deduplication in shaka-lab.yaml.  This is based on https://github.com/shaka-project/karma-local-wd-launcher/pull/50
 - Refactor shaka-lab.yaml to take advantage of this new ability.  This removes a bunch of duplicate command line arguments for various versions of Chrome.
 - Remove a TODO about a bug that Chrome decided they would never fix.
 - Sort the list of devices and platforms, with comments to mark out the sections.
 - Remove IE11, which we are well past supporting or testing.

This should be cherry-picked to all active branches.
2023-07-31 11:02:23 -07:00
Ivan 5487236668 fix(docs): fix player configuration code in drm config tutorial (#5359)
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>
2023-06-26 12:04:24 -07:00
Álvaro Velad Galván 62f24d2249 feat: Set segmentPrefetchLimit to 2 by default for low latency streaming (#5275) 2023-06-12 18:13:30 +02:00
Álvaro Velad Galván 82e905b540 feat: Add MP3 transmuxer (#5208)
This transmuxer is used in Firefox due the lack of support for
`audio/mpeg`
2023-05-12 21:36:58 +02:00
Joey Parrish 18f5809e01 docs: Update Java download link (#5207)
Closes #5077
2023-05-02 12:35:27 -07:00
/zɒ̃ge/ 19b7f9310c docs: update config.drm.initDataTransform documentation (#5170) 2023-04-25 15:30:33 -07:00
Vincent Valot cc97da167f feat: allow reuse of persistent license sessions (#4461)
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
2023-04-19 15:18:34 -07:00
Álvaro Velad Galván f80bf208b1 feat(MSS): Add support for Microsoft Smooth Streaming (VOD only) (#5002)
Closes https://github.com/shaka-project/shaka-player/issues/703

---------

Co-authored-by: Joey Parrish <joeyparrish@google.com>
2023-03-24 07:47:33 +01:00
Casey Occhialini fe38e45f4d fix: Adds missing CMCD params to some http requests (#5072)
Fixes #5067
Fixes #5094

Co-authored-by: Dan Sparacio <daniel.sparacio@cbsinteractive.com>
2023-03-15 02:13:16 -07:00
theodab d0bb1babaa docs: Remove next links from tutorials (#5082)
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
2023-03-10 00:58:11 -08:00
Joey Parrish 472bcbbcff docs: Add Widevine Service Certificate tutorial (#5018)
Also fixes a related typo in the FairPlay tutorial and adds a missing
entry to the tutorial index.
2023-02-23 11:56:39 -08:00
theodab fbce38af1c feat(net): Added advanced type to filters (#5006)
This adds an optional parameter to request and response filters, of a
new enum called AdvancedRequestType.
This enum describes request types that are subtypes of the basic types.
For example, INIT_SEGMENT is a type of SEGMENT.
This gives users more information about the type of the request, while
maintaining backwards compatibility.

Closes #4966
2023-02-23 11:56:23 -08:00
Martin Stark ac963a9d1a docs: Add error handling tutorial (#4983)
Shaka error handling is getting increasingly more complex in order to "catch them all".
This new tutorial describes both the basic method of error handling, as well as showing a few
more advanced ways to handle specific errors.

Closes #4484
2023-02-14 00:30:36 -08:00
François Beaufort 3828fd6849 feat: Add support for Document Picture-in-Picture (#4969)
This PR adds _experimental_ support for the Document Picture-in-Picture
API in the Shaka Player.

Closes https://github.com/shaka-project/shaka-player/issues/4964

Co-authored-by: Alvaro Velad Galvan <ladvan91@hotmail.com>
Co-authored-by: Joey Parrish <joeyparrish@google.com>
2023-02-10 08:39:57 -08:00
Tian Shao de6abde06f feat: Support Parallel Segment Fetching (#4784)
closes https://github.com/shaka-project/shaka-player/issues/4658.

This solution is inspired by abandoned PR
https://github.com/shaka-project/shaka-player/pull/2809, which
implements segment prefetching ahead of current play head.


![image](https://user-images.githubusercontent.com/3315733/205465795-75c605d2-c2e3-4d03-90f5-46a72a7189d2.png)
2023-01-31 20:08:29 +01:00
Álvaro Velad Galván 7fa40fdb48 feat: Add ExpressPlay FairPlay util (#4926) 2023-01-24 07:11:43 +01:00
Joey Parrish 68f10a1969 docs: Update docs about dev dependencies (#4794)
We require node v14+ and Java v11+ now.

Closes #4721 
Closes #4737
2022-12-06 09:31:22 -08:00
Tian Shao aadecd6401 feat: Add preferredAudioLabel to PlayerConfiguration (#4763)
Closes
[#4762](https://github.com/shaka-project/shaka-player/issues/4762).

The change is to add PreferredAudioLabel to player configuration so that
host apps can decide the default variant label to choose at very
beginning.
2022-11-29 10:30:40 +01:00
Joey Parrish 0db6070dcd chore: Set receiver app ID for main (#4675) (#4686)
This reverts commit ea2eaaf210.

Now that v4.3 is out, this sets the receiver app ID for main to refer to
the nightly version of the receiver app again.
2022-11-11 07:08:08 -08:00
Joey Parrish ea2eaaf210 chore: Set receiver app ID for v4.3 (#4675)
This will be reverted in the main branch after the launch/branch of
v4.3, so that main continues refers to the nightly version of the
receiver app.
2022-11-09 16:17:58 -08:00
Joey Parrish 5a76a8351d docs: Update roadmap, maintained branches, and upgrade guide for v4.3 (#4674) 2022-11-09 16:07:40 -08:00
Joey Parrish 6c6cc9dc4b docs: Fix receiver app ID in UI tutorial (#4673)
In the main branch, since the code there is a pre-release, these should
generally all point to the nightly demo receiver.
2022-11-09 16:05:17 -08:00
Joey Parrish 7772099029 build: Fix Docker-based builds (#4633)
This removes the overly-complex docker-compose system and rewrites the
Dockerfile. It also changes the docker commands to those that specify a
user ID, so that build outputs are written as the current user.

Closes #4387 (failed docker build not detected in CI)
Issue #4619 (failed to build w/ docker)
2022-10-28 15:43:16 -07:00
Álvaro Velad Galván 8623a5d030 feat: Add AAC transmuxer (#4632) 2022-10-28 15:43:02 -07:00
Martin Stark 7166f0c1d0 feat: enable uninstalling PatchedMediaKeysApple (#4471)
Close #4469
2022-09-23 09:52:42 +02:00
Joey Parrish 46b27f19e0 fix: Update main branch Cast receiver ID (#4364)
This ID points to the nightly build, and so is appropriate for the
main branch.
2022-07-19 11:59:29 -07:00
Álvaro Velad Galván 5b18069430 feat: Add fallback to TextDecoder and TextEncoder (#4324)
Related to https://github.com/shaka-project/shaka-player/commit/a72a1e91023a33c777a6001a64f818ea2e469914
2022-07-11 10:24:11 -07:00
Álvaro Velad Galván 5441f932fd feat: Add support for Modern EME and legacy Apple Media Keys for FairPlay (#4309) 2022-06-29 07:13:53 +02:00
Joey Parrish 80d1072e7c docs: Deprecate the mailing list for releases (#4323)
Releases will no longer be announced on the mailing list.  Instead,
users can subscribe directly through GitHub.
2022-06-28 09:46:14 -07:00
Álvaro Velad Galván 5e107d584f feat: Add keySystemsMapping to drm config (#4254)
This allows, for example, users to use com.microsoft.playready.recommendation
instead of com.microsoft.playready.

Closes #4243
2022-05-31 15:41:00 -07:00
Álvaro Velad Galván ff310e91e5 fix(fairplay): Re-add initDataTransform config (#4231)
Some FairPlay providers still need this part, so we should never have removed it.

The default is to do no transformation.

Co-authored-by: Joey Parrish <joeyparrish@google.com>
2022-05-17 11:53:52 -07:00
Joey Parrish 87b6b1d519 docs: Add note to upgrade guide about manifest.hls.useFullSegmentsForStartTime (#4213)
This was removed in the release, but we failed to note this in the
upgrade guide.

Closes #4210
2022-05-11 10:54:22 -07:00
Álvaro Velad Galván dbba571c6b feat(cast): Add Android receiver support (#4183)
Closes https://github.com/shaka-project/shaka-player/pull/3773 
Closes https://github.com/shaka-project/shaka-player/issues/3772
2022-05-05 09:18:47 -07:00
Joey Parrish a392c02e0e chore: Drop GSOC ideas list (#4182)
This is very outdated and should not appear in our docs
2022-05-02 20:01:03 -07:00
Álvaro Velad Galván 0fd19997dd feat!: Remove small/large gap config, always jump gaps (#4125)
We get rid of the "small/large" gap concept, to always jump gaps by default

Related to issue https://github.com/shaka-project/shaka-player/issues/3188#issuecomment-788173036
2022-04-13 11:00:47 -07:00
Joey Parrish ead344fe1f chore: Drop MS EME polyfill (#4123)
The MS EME polyfill has been unused since v3.1 and removal of IE support, and isn't needed for Edge or Xbox One support.

Closes #4113
2022-04-12 21:15:14 -07:00
Joey Parrish d8b3341720 test: Run tests on a custom Selenium grid (#4117)
Includes a YAML config file for our lab, and documentation on how to
create a custom config for another Selenium grid.

A workflow will run tests nightly in the Shaka lab, using a
self-hosted runner with access to our private grid.

The workflow can also be triggered manually by maintainers to test a
PR in the lab.  This will report status back to the PR.
2022-04-12 11:32:59 -07:00
Joey Parrish ac5acc80cb feat!: Remove deprecated features, update upgrade guides (#4089)
Below are the changelog entries for each deprecated feature removed by this commit.

-----

feat(config)!: `manifest.dash.defaultPresentationDelay` has been replaced by `manifest.defaultPresentationDelay` (deprecated in v3.0.0)

feat(config)!: Configuration of factories should be plain factory functions, not constructors; these will not be invoked with `new` (deprecated in v3.1.0)

feat(player)!: `shaka.Player.prototype.addTextTrack()` has been replaced by `addTextTrackAsync()`, which returns a `Promise` (deprecated in v3.1.0)

feat(ui)!: `shaka.ui.TrackLabelFormat` has been renamed to `shaka.ui.Overlay.TrackLabelFormat` (deprecated in v3.1.0)

feat(ui)!: `shaka.ui.FailReasonCode` has been renamed to `shaka.ui.Overlay.FailReasonCode` (deprecated in v3.1.0)

feat(offline)!: `shaka.offline.Storage.prototype.store()` returns `AbortableOperation` instead of `Promise` (deprecated in v3.0.0)

feat(offline)!: `shaka.offline.Storage.prototype.getStoreInProgress()` has been removed; concurrent operations are supported, so callers don't need to check this (deprecated in v3.0.0)

feat!: `shaka.util.Uint8ArrayUtils.equal` has been replaced by `shaka.util.BufferUtils.equal`, which can handle multiple types of buffers (deprecated in v3.0.0)

feat(manifest)!: `shaka.media.SegmentIndex.prototype.destroy()` has been replaced by `release()`, which is synchronous (deprecated in v3.0.0)

feat(manifest)!: `shaka.media.SegmentIterator.prototype.seek()`, which mutates the iterator, has been replaced by `shaka.media.SegmentIndex.getIteratorForTime()` (deprecated in v3.1.0)

feat(manifest)!: `shaka.media.SegmentIndex.prototype.merge()` has become private; use `mergeAndEvict()` instead (deprecated in v3.2.0)

feat(plugin)!: `AbrManager` plugins must implement the `playbackRateChanged()` method (deprecated in v3.0.0)

feat(plugin)!: `shaka.extern.Cue.prototype.spacer` has been replaced by the more clearly-named `lineBreak` (deprecated in v3.1.0)

feat(plugin)!: `IUIElement` plugins must have a `release()` method (not `destroy()`) (deprecated in v3.0.0)
2022-04-11 17:11:40 -07:00
Álvaro Velad Galván 8bb70449d3 feat!: Remove support for Safari 12 and iOS 12 (#4112)
1. Remove support for Safari 12
2. Support modern EME in Safari 13
3. Remove EME Apple polyfill
4. Update documentation
2022-04-11 16:17:51 -07:00
António César Júnior 925de1995e docs: Add Dockerfile and docker build instructions (#3547)
Many devs using Shaka and wishing to compile the library are required to install all prerequisites on their machine. For docker devs, this is extremely bad as it requires installing Java and Python on OS.
This commit adds a basic configuration for quick compilation via Docker, without requiring any other prerequisites. Improvements can be made in order to allow all Shaka workflow inside Docker.

Suggested in #181
2022-03-21 10:04:16 -07:00
Joey Parrish 1507b1e844 chore: Update URLs after moving projects (#4008) 2022-03-03 14:34:40 -08:00
Michelle Zhuo 36d0b5484f feat(HLS): Containerless format support
This adds code to allow Shaka Player to play media in sequence
mode, an alternate playback mode that makes the browser ignore
media timestamps, when playing HLS media.
This is important for containerless media formats, as they do not
contain such timestamps.
Changing HLS to not require timestamps also means that we no
longer need to fetch media segments in order to get the start
time, which should lower bandwidth usage and startup delay.
In initial tests, on a simulated 3G network, load latency went down
from an average 3.16s to 2.61s on the HLS version of "Big Buck Bunny:
the Dark Truths of a Video Dev Cartoon"; an improvement of about 17%.

Issue #2337

Change-Id: I507898d74ae30ddfb1bddf8dce643780949fbd9b
2022-02-08 09:34:03 -08:00
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
Joey Parrish 00106e2304 chore: Update Cast receiver ID for v3.3
Change-Id: I45013462a49b9e1ebfb017371b80bf351f9ee286
2022-01-07 12:01:04 -08:00
Dmitry Savchenkov ff988447cc docs: Fix typo in Fairplay tutorial (#3714) 2021-10-25 10:54:52 -07:00
Joey Parrish 1b2fa840d9 fix: Update Cast receiver ID for v3.2
Change-Id: I6f92d676b35d5236805aea7864fc81f4fb7a223f
2021-10-14 09:06:47 -07:00
Álvaro Velad Galván 34958c81b9 feat(ui): Added Loop and PIP to context menu, and Statistics to overflow menu (#3578) 2021-10-12 01:00:51 -07:00