mirror of
https://github.com/shaka-project/shaka-player.git
synced 2026-06-15 16:06:41 +03:00
570fec9d31
Add preferredVideoRole config `preferredVariantRole` has been renamed to `preferredAudioRole` Related to https://github.com/shaka-project/shaka-player/issues/8943
137 lines
7.3 KiB
Markdown
137 lines
7.3 KiB
Markdown
# Shaka Player Upgrade Guide
|
|
|
|
If you are upgrading from **v1 or v2**, these releases are no longer supported,
|
|
and upgrade guides are no longer maintained. You can use these old upgrades
|
|
guides to upgrade in stages:
|
|
|
|
- {@link https://v2-4-7-dot-shaka-player-demo.appspot.com/docs/api/tutorial-upgrade.html Upgrade to v2.4}
|
|
- {@link https://v2-5-23-dot-shaka-player-demo.appspot.com/docs/api/tutorial-upgrade-v2-4.html Upgrade v2.4 => v2.5}
|
|
- {@link https://v3-0-15-dot-shaka-player-demo.appspot.com/docs/api/tutorial-upgrade-v2-5.html Upgrade v2.5 => v3.0}
|
|
|
|
Since v3.0, Shaka Player has been following semantic versioning. (The
|
|
IE11 deprecation announced before v3.0 happened in v3.1, which technically
|
|
breaks semantic versioning guarantees. It is the only intentional exception.)
|
|
|
|
Upgrading from any v3 release to a newer v3 release should be backward
|
|
compatible. The same is true of all major version numbers (v4 => v4, etc).
|
|
|
|
Here is a summary of breaking changes that might require upgrades to your
|
|
application:
|
|
|
|
|
|
## v3.1
|
|
|
|
- New dependencies:
|
|
- TextDecoder/TextEncoder platform support or polyfill required (affects
|
|
Xbox One, but not evergreen browsers); we suggest the polyfill
|
|
[https://github.com/anonyco/FastestSmallestTextEncoderDecoder](fastestsmallesttextencoderdecoder/EncoderDecoderTogether.min.js)
|
|
Fallback included by default in v4.2
|
|
|
|
- Support removed:
|
|
- IE11 support removed
|
|
|
|
|
|
## v4.0
|
|
|
|
- Support removed:
|
|
- Older TVs and set-top boxes that do not support MediaSource sequence mode
|
|
can no longer play HLS content (since we now use sequence mode for that)
|
|
- Support for iOS 12 and Safari 12 has been removed
|
|
|
|
- Configuration changes:
|
|
- `manifest.dash.defaultPresentationDelay` has been replaced by
|
|
`manifest.defaultPresentationDelay` (deprecated in v3.0.0)
|
|
- Configuration of factories should be plain factory functions, not
|
|
constructors; these will not be invoked with `new` (deprecated in v3.1.0)
|
|
- `drm.initDataTransform` now defaults to a no-op
|
|
- `streaming.smallGapLimit` and `streaming.jumpLargeGaps` have been removed;
|
|
all gaps will now be jumped
|
|
- `manifest.hls.useFullSegmentsForStartTime` has been removed; this setting
|
|
is no longer necessary, as we no longer fetch segments for start times in
|
|
the HLS parser
|
|
|
|
- Player API changes:
|
|
- `shaka.Player.prototype.addTextTrack()` has been replaced by
|
|
`addTextTrackAsync()`, which returns a `Promise` (deprecated in v3.1.0)
|
|
|
|
- UI API changes:
|
|
- `shaka.ui.TrackLabelFormat` has been renamed to
|
|
`shaka.ui.Overlay.TrackLabelFormat` (deprecated in v3.1.0)
|
|
- `shaka.ui.FailReasonCode` has been renamed to
|
|
`shaka.ui.Overlay.FailReasonCode` (deprecated in v3.1.0)
|
|
|
|
- Offline API changes:
|
|
- `shaka.offline.Storage.prototype.store()` returns `AbortableOperation`
|
|
instead of `Promise`; callers should change `.then()` to
|
|
`.promise.then()` and `await rv` to `await rv.promise` (deprecated in
|
|
v3.0.0)
|
|
- `shaka.offline.Storage.prototype.getStoreInProgress()` has been removed;
|
|
concurrent operations are supported since v3, so callers don't need to
|
|
check this (deprecated in v3.0.0)
|
|
|
|
- Utility API changes:
|
|
- `shaka.util.Uint8ArrayUtils.equal` has been replaced by
|
|
`shaka.util.BufferUtils.equal`, which can handle multiple types of
|
|
buffers (deprecated in v3.0.0)
|
|
|
|
- Manifest API changes:
|
|
- `shaka.media.SegmentIndex.prototype.destroy()` has been replaced by
|
|
`release()`, which is synchronous (deprecated in v3.0.0)
|
|
- `shaka.media.SegmentIterator.prototype.seek()`, which mutates the
|
|
iterator, has been replaced by
|
|
`shaka.media.SegmentIndex.getIteratorForTime()` (deprecated in v3.1.0)
|
|
- `shaka.media.SegmentIndex.prototype.merge()` has become private; use
|
|
`mergeAndEvict()` instead (deprecated in v3.2.0)
|
|
|
|
- Plugin changes:
|
|
- `AbrManager` plugins must implement the `playbackRateChanged()` method
|
|
(deprecated in v3.0.0)
|
|
- `shaka.extern.Cue.prototype.spacer` has been replaced by the more
|
|
clearly-named `lineBreak` (deprecated in v3.1.0)
|
|
- `IUIElement` plugins must have a `release()` method (not `destroy()`)
|
|
(deprecated in v3.0.0)
|
|
|
|
## v5.0 (unreleased)
|
|
|
|
- Configuration changes:
|
|
- `streaming.forceTransmuxTS` has been renamed to `streaming.forceTransmux`
|
|
(deprecated in v4.3.0)
|
|
- `manifest.dash.manifestPreprocessor` and `manifest.mss.manifestPreprocessor`
|
|
have been replaced with `manifest.dash.manifestPreprocessorTXml` and
|
|
`manifest.mss.manifestPreprocessorTXml` callbacks. This new callbacks now
|
|
accept `shaka.externs.xml.Node`. `getAttribute()` and `textContent` results
|
|
must now be decoded if they might contain escape sequences. You can use
|
|
`shaka.util.StringUtils.htmlUnescape` for this purpose.
|
|
- `streaming.useNativeHlsOnSafari` has removed. Now we have another config to do the same for FairPlay `streaming.useNativeHlsForFairPlay` or for HLS (any browser) `streaming.preferNativeHls`.
|
|
- `mediaSource.sourceBufferExtraFeatures` has been replaced with `mediaSource.addExtraFeaturesToSourceBuffer` callback.
|
|
- `streaming.liveSyncMinLatency` and `streaming.liveSyncMaxLatency` have
|
|
been removed in favor of `streaming.liveSync.targetLatency`. (deprecated
|
|
in v4.10.0)
|
|
- The following options on `streaming` have been removed: `liveSync`,
|
|
`liveSyncTargetLatency`, `liveSyncTargetLatencyTolerance`,
|
|
`liveSyncPlaybackRate`, `liveSyncMinPlaybackRate`, `liveSyncPanicMode`
|
|
`liveSyncPanicThreshold`. `streaming.liveSync` is now an options object
|
|
with the relevant options: `enabled`, `targetLatency`,
|
|
`targetLatencyTolerance`, `maxPlaybackRate`, `minPlaybackRate`, `panicMode`
|
|
`panicThreshold`. (deprecated in v4.10.0)
|
|
- `useSafariBehaviorForLive` has been removed.
|
|
- `parsePrftBox` has been removed.
|
|
- `videoRobustness` and `audioRobustness` are now only an array of strings. (deprecated in v4.13.0)
|
|
- `streaming.forceHTTP` has been renamed to `networking.forceHTTP` (deprecated in v4.15.0)
|
|
- `streaming.forceHTTPS` has been renamed to `networking.forceHTTPS` (deprecated in v4.15.0)
|
|
- `streaming.minBytesForProgressEvents` has been renamed to `networking.minBytesForProgressEvents` (deprecated in v4.15.0)
|
|
- `manifest.dash.enableAudioGroups` has been renamed to `manifest.enableAudioGroups`
|
|
- `preferredVariantRole` has been renamed to `preferredAudioRole` (deprecated in v4.16.0)
|
|
|
|
- Plugin changes:
|
|
- `TextDisplayer` plugins must implement the `configure()` method.
|
|
- `TextParser` plugins must implement the `setManifestType()` and `setSequenceMode()` methods.
|
|
- `Transmuxer` plugins now has three new parameters in `transmux()` method.
|
|
|
|
- Player API Changes:
|
|
- The constructor no longer takes `mediaElement` as a parameter; use the `attach` method to attach to a media element instead. (Deprecated in v4.6)
|
|
- The `TimelineRegionInfo.eventElement` has been replaced with `TimelineRegionInfo.eventNode` property, the new property type is `shaka.externs.xml.Node` instead of `Element`
|
|
- New API for audio: `getAudioTracks` and `selectAudioTrack`, we also deprecated in v4.14 `getAudioLanguages`, `getAudioLanguagesAndRoles` and `selectAudioLanguage`.
|
|
- `shaka.util.FairPlayUtils` is moved to `shaka.drm.FairPlay` (Deprecated in v4.14)
|
|
- `getChapters` is replaced by `getChaptersAsync` (Deprecated in v4.15)
|