rx-player 3.33.2 → 3.33.4-dev.2024080600
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1079 -1128
- package/VERSION +1 -1
- package/dist/_esm5.processed/compat/can_rely_on_request_media_key_system_access.d.ts +34 -0
- package/dist/_esm5.processed/compat/can_rely_on_request_media_key_system_access.js +40 -0
- package/dist/_esm5.processed/compat/generate_init_data.d.ts +14 -0
- package/dist/_esm5.processed/compat/generate_init_data.js +61 -0
- package/dist/_esm5.processed/compat/may_media_element_fail_on_undecipherable_data.d.ts +16 -0
- package/dist/_esm5.processed/compat/may_media_element_fail_on_undecipherable_data.js +17 -0
- package/dist/_esm5.processed/compat/should_wait_for_data_before_loaded.d.ts +1 -1
- package/dist/_esm5.processed/compat/should_wait_for_data_before_loaded.js +5 -3
- package/dist/_esm5.processed/config.d.ts +2 -0
- package/dist/_esm5.processed/core/adaptive/adaptive_representation_selector.js +1 -1
- package/dist/_esm5.processed/core/api/debug/buffer_graph.js +3 -3
- package/dist/_esm5.processed/core/api/public_api.d.ts +17 -0
- package/dist/_esm5.processed/core/api/public_api.js +41 -2
- package/dist/_esm5.processed/core/api/tracks_management/media_element_track_choice_manager.js +21 -25
- package/dist/_esm5.processed/core/decrypt/attach_media_keys.js +6 -6
- package/dist/_esm5.processed/core/decrypt/find_key_system.d.ts +10 -0
- package/dist/_esm5.processed/core/decrypt/find_key_system.js +42 -1
- package/dist/_esm5.processed/core/decrypt/session_events_listener.js +2 -2
- package/dist/_esm5.processed/core/fetchers/manifest/manifest_fetcher.js +2 -2
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.js +1 -1
- package/dist/_esm5.processed/core/init/media_source_content_initializer.js +34 -12
- package/dist/_esm5.processed/core/init/utils/get_loaded_reference.js +6 -1
- package/dist/_esm5.processed/core/init/utils/initial_seek_and_play.js +4 -1
- package/dist/_esm5.processed/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.js +24 -25
- package/dist/_esm5.processed/core/segment_buffers/implementations/image/image_segment_buffer.js +1 -1
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/html_text_segment_buffer.js +1 -1
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/text_track_cues_store.js +2 -2
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/utils.d.ts +15 -0
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/utils.js +23 -0
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/native/native_text_segment_buffer.js +1 -1
- package/dist/_esm5.processed/core/segment_buffers/inventory/segment_inventory.d.ts +18 -4
- package/dist/_esm5.processed/core/segment_buffers/inventory/segment_inventory.js +57 -13
- package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.js +3 -0
- package/dist/_esm5.processed/core/stream/representation/utils/append_segment_to_buffer.js +15 -8
- package/dist/_esm5.processed/core/stream/representation/utils/get_buffer_status.js +1 -37
- package/dist/_esm5.processed/core/stream/representation/utils/get_needed_segments.js +19 -11
- package/dist/_esm5.processed/core/stream/representation/utils/push_init_segment.js +6 -6
- package/dist/_esm5.processed/core/stream/representation/utils/push_media_segment.js +9 -9
- package/dist/_esm5.processed/default_config.d.ts +31 -0
- package/dist/_esm5.processed/default_config.js +48 -17
- package/dist/_esm5.processed/errors/assertion_error.d.ts +0 -1
- package/dist/_esm5.processed/errors/assertion_error.js +1 -2
- package/dist/_esm5.processed/errors/custom_loader_error.d.ts +0 -1
- package/dist/_esm5.processed/errors/custom_loader_error.js +1 -2
- package/dist/_esm5.processed/errors/encrypted_media_error.d.ts +0 -1
- package/dist/_esm5.processed/errors/encrypted_media_error.js +1 -2
- package/dist/_esm5.processed/errors/media_error.d.ts +0 -1
- package/dist/_esm5.processed/errors/media_error.js +1 -2
- package/dist/_esm5.processed/errors/network_error.d.ts +0 -1
- package/dist/_esm5.processed/errors/network_error.js +1 -2
- package/dist/_esm5.processed/errors/other_error.d.ts +0 -1
- package/dist/_esm5.processed/errors/other_error.js +1 -2
- package/dist/_esm5.processed/errors/request_error.d.ts +0 -1
- package/dist/_esm5.processed/errors/request_error.js +17 -15
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader_error.d.ts +0 -1
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader_error.js +2 -2
- package/dist/_esm5.processed/experimental/tools/createMetaplaylist/get_duration_from_manifest.js +1 -1
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/decodingInfo.js +4 -4
- package/dist/_esm5.processed/parsers/containers/isobmff/utils.js +3 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/template.js +1 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.js +5 -6
- package/dist/_esm5.processed/parsers/manifest/dash/common/manifest_bounds_calculator.d.ts +6 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/manifest_bounds_calculator.js +7 -3
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_mpd.js +17 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representation_index.js +9 -5
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/utils.d.ts +0 -1
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/utils.js +1 -2
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/ContentComponent.d.ts +1 -1
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/ContentComponent.js +1 -1
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/ContentProtection.d.ts +1 -1
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/ContentProtection.js +1 -1
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/Scheme.d.ts +1 -1
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/Scheme.js +1 -1
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/parsers_stack.d.ts +2 -1
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/types.d.ts +55 -55
- package/dist/_esm5.processed/parsers/manifest/smooth/parse_protection_node.js +1 -1
- package/dist/_esm5.processed/transports/dash/extract_complete_chunks.d.ts +1 -1
- package/dist/_esm5.processed/transports/dash/extract_complete_chunks.js +6 -2
- package/dist/_esm5.processed/transports/dash/low_latency_segment_loader.js +4 -2
- package/dist/_esm5.processed/utils/languages/ISO_639-1_to_ISO_639-3.js +182 -182
- package/dist/_esm5.processed/utils/languages/ISO_639-2_to_ISO_639-3.js +19 -19
- package/dist/_esm5.processed/utils/languages/normalize.js +4 -1
- package/dist/_esm5.processed/utils/resolve_url.d.ts +13 -10
- package/dist/_esm5.processed/utils/resolve_url.js +220 -69
- package/dist/_esm5.processed/utils/string_parsing.d.ts +1 -1
- package/dist/_esm5.processed/utils/string_parsing.js +1 -1
- package/dist/_esm5.processed/utils/task_canceller.d.ts +0 -1
- package/dist/_esm5.processed/utils/task_canceller.js +3 -2
- package/dist/mpd-parser.wasm +0 -0
- package/dist/rx-player.js +3978 -3404
- package/dist/rx-player.min.js +1 -1
- package/package.json +40 -40
package/CHANGELOG.md
CHANGED
|
@@ -1,1809 +1,1763 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## v3.33.3
|
|
4
|
+
|
|
5
|
+
### Bug fixes
|
|
6
|
+
|
|
7
|
+
- DASH: support absolute path in URL resolution with RFC 3986 implementation [#1446]
|
|
8
|
+
- DASH: fix cases of blinking subtitles [#1447]
|
|
9
|
+
- Fix precision issues of the `maxVideoBufferSize` API [#1448]
|
|
10
|
+
- DASH: Prevent multiple loading of the same segment for some DASH low-latency contents
|
|
11
|
+
[#1449]
|
|
12
|
+
- Await some delay before re-attempting to push a segment following an error [#1411]
|
|
13
|
+
- DRM/Compat: on Edge test comprehensively KeySystems before considering them as usable
|
|
14
|
+
[#1450]
|
|
15
|
+
- DRM/DASH: Ignore `0x0` key id found in DASH initialization segments are they are often
|
|
16
|
+
linked to unencrypted data. [#1466, #1458]
|
|
17
|
+
- DRM/Compat: On the PlayStation 5, reload directly when a decryption key become
|
|
18
|
+
unusable to prevent fatal errors [#1451]
|
|
19
|
+
- Directfile/Compat: On safari on iOS no longer stay stuck in buffering when `autoPlay`
|
|
20
|
+
is set to `false` or not set and the video element has the attribute "playsinline"
|
|
21
|
+
[#1406, #1404, #1390]
|
|
22
|
+
- Directfile/compat: On safari mobile in directfile mode, do not stay in an infinite
|
|
23
|
+
`LOADING` state if the `duration` is set to `NaN` (rare issue in a
|
|
24
|
+
normally-unsupported multiple RxPlayer-per-media-element scenario) [#1452]
|
|
25
|
+
- Fix RxPlay error messages not properly displaying in Chrome's inspector since Chrome 126
|
|
26
|
+
[#1474]
|
|
27
|
+
|
|
28
|
+
### Other improvements
|
|
29
|
+
|
|
30
|
+
- Signal an error if multiple active RxPlayer are linked to the same media element
|
|
31
|
+
[#1453]
|
|
32
|
+
- Undetermined audio and text track language now have a `normalized` property equal to
|
|
33
|
+
`"und"` for better ISO 639-3 compatibility [#1454]
|
|
34
|
+
|
|
3
35
|
## v3.33.2 (2024-02-27)
|
|
4
36
|
|
|
5
37
|
### Bug fixes
|
|
6
38
|
|
|
7
|
-
|
|
8
|
-
|
|
39
|
+
- dash: Don't unnecessarily reload external `<UTCTiming>` resources at each refresh if it failed for the first request of the Manifest [#1370]
|
|
40
|
+
- dash: The `DASH_WASM` feature do not rely on WebAssembly's sign-extension operators anymore as that is poorly supported on older Samsung and LG TVs [#1372]
|
|
9
41
|
|
|
10
42
|
### Other improvements
|
|
11
43
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
44
|
+
- build: automatically install Rust and WASM toolchain locally if unavailable when building the RxPlayer WebAssembly file
|
|
45
|
+
- doc: Update our documentation generator and fix all invalid anchors in it
|
|
46
|
+
- npm: prevent the publishing of unnecessary files on the npm registry [#1377, #1378]
|
|
15
47
|
|
|
16
48
|
## v3.33.0 (2024-01-24)
|
|
17
49
|
|
|
18
50
|
### Features
|
|
19
51
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
52
|
+
- Add `getLivePosition` RxPlayer method [#1300]
|
|
53
|
+
- Add `startAt.fromLivePosition` `loadVideo` option [#1300]
|
|
54
|
+
- Add the possibility to set a new `keySystems` option on the `reload` API [#1308]
|
|
23
55
|
|
|
24
56
|
### Bug fixes
|
|
25
57
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
58
|
+
- Fix subtitles "blinking" in some specific conditions, especially with some DASH low-latency contents [#1314]
|
|
59
|
+
- DASH: Fix Period overlap resolution logic for when the first Period is removed [#1311]
|
|
60
|
+
- TTML: Fix handling of the `tts:lineHeight` attribute [#1320]
|
|
61
|
+
- Fix import of the `LOCAL_MANIFEST` experimental feature
|
|
62
|
+
- Avoid very rarely skipping segments which initially were too big to be pushed due to memory limitations [#1323]
|
|
63
|
+
- Fix issue arising when using track APIs at the exact last possible position of a Period with no consecutive Period [#1337]
|
|
64
|
+
- Starting at the end (through a `startAt` `loadVideo` option) or reloading at the end led to the restart of the content [#1338]
|
|
65
|
+
- DRM/Safari: also perform Safari DRM work-arounds when the page is launched from the dock [#1351, #1356]
|
|
34
66
|
|
|
35
67
|
### Other improvements
|
|
36
68
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
69
|
+
- DASH: rely on SCTE214 `supplementalCodecs` instead of `codecs` if it's supported to better support backward compatible Dolby Vision contents [#1307]
|
|
70
|
+
- DASH: Provide better support of the `availabilityTimeOffset` attribute [#1300]
|
|
71
|
+
- DEBUG_ELEMENT: Add unsupported and undecipherable bitrates to the debug element [#1321]
|
|
72
|
+
- DEBUG_ELEMENT: update buffer graph maximum size so it becomes more readable for lengthy contents [#1316]
|
|
73
|
+
- DEBUG_ELEMENT: always synchronize inventory of segments before rendering it [#1317]
|
|
74
|
+
- Remove remaining RxPlayer dependency removing possibility of some application-side bundling errors [#1312]
|
|
75
|
+
- Add exception to text Garbage collection logic to avoid unnecessarily reload text segments frequently [#1325]
|
|
76
|
+
- Avoid logging too much the buffer's content when our debugging UI or the demo is used [#1341]
|
|
77
|
+
- Demo: Fix reporting of live position in demo page [#1313]
|
|
47
78
|
|
|
48
79
|
## v3.32.1 (2023-10-19)
|
|
49
80
|
|
|
50
81
|
### Features
|
|
51
82
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
83
|
+
- DASH: add optional `isSpatialAudio` boolean property to Representation returned by `getAvailableAudioTracks`, `getAudioTrack`, corresponding events, and `trackInfo` optional property of `MediaError` objects to signal Dolby Atmos techology [#1275]
|
|
84
|
+
- `LOCAL`: add `isSpatialAudio` property to Representation of the experiment `"local"` transport (used for offline playback) [#1275]
|
|
85
|
+
- `addFeatures` static method is now available on all RxPlayer builds. It was previously only in the minimal (`rx-player/minimal` import path) [#1287]
|
|
86
|
+
- The `NATIVE_TEXT_BUFFER`, `HTML_TEXT_BUFFER` and `IMAGE_BUFFER` features are now totally optional [#1287, #1293]
|
|
56
87
|
|
|
57
88
|
### Bug fixes
|
|
58
89
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
90
|
+
- Fix `setVideoBitrate` and `setAudioBitrate` API which may have led to a higher quality than wanted in the default `"seamless"` `manualBitrateSwitchingMode` if our buffer-based adaptive logic decided to [#1267, #1271]
|
|
91
|
+
- On the PlayStation 5, only switch to the `"LOADED"` state once the HTMLMediaElement's `readyState` of `4` has been reached, as it seems to switch to `3` too soon there [#1257]
|
|
92
|
+
- DASH: Fix potential track duplication if more than two `AdaptationSet` have an `adaptation-set-switching` `<SupplementalProperty>` between one another [#1279]
|
|
93
|
+
- DASH-WASM: availabilityTimeOffset is actually a floating number [#1278]
|
|
63
94
|
|
|
64
95
|
### Other improvements
|
|
65
96
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
97
|
+
- Do not load the last text segment if the current position goes after it as it is unnecessary [#1256]
|
|
98
|
+
- Implement better `NetworkError` messages [#1274]
|
|
99
|
+
- Set a better error message for when no `keySystems` option is set when playing an encrypted content
|
|
100
|
+
- Fix very small memory leak when reloading a content [#1286]
|
|
101
|
+
- Re-check for segments to load immediately after the manifest has been refreshed [#1282]
|
|
102
|
+
- When "fallbacking" an undecipherable Representation, now empty the whole buffer if we can't make out where content was in the buffer [#1283]
|
|
103
|
+
- Improve segment start detection in buffer when there's unknown data buffered before it [#1284]
|
|
104
|
+
- DRM: Selection of alternative EME API like those used on IE11 or Safari has been refactored to facilitate future developments [#1261]
|
|
74
105
|
|
|
75
106
|
### Deprecated
|
|
76
107
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
108
|
+
- Deprecate the `manifestUpdateUrl` `loadVideo` option as it doesn't seem used anymore [#1288]
|
|
109
|
+
- Deprecate the `NATIVE_TEXT_BUFFER`, `HTML_TEXT_BUFFER` and `IMAGE_BUFFER` features as they are now unneeded [#1287, #1293]
|
|
80
110
|
|
|
81
111
|
## v3.31.0 (2023-06-14)
|
|
82
112
|
|
|
83
113
|
### Features
|
|
84
114
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
115
|
+
- Add `isContentLoaded`, `isBuffering`, `isPaused`, and `getLastStoredContentPosition` methods [#1248]
|
|
116
|
+
- Add `play` and `paused` events [#1253]
|
|
117
|
+
- Add `trackInfo` property to some `MediaError` to expose information on the track that caused the error [#1241]
|
|
88
118
|
|
|
89
119
|
### Bug fixes
|
|
90
120
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
121
|
+
- DASH: Fix issue which could lead to infinite rebuffering when switching between multiple Periods [#1232]
|
|
122
|
+
- Return actual ending duration through the `getVideoDuration` method when playing dynamic contents whose future end is already known [#1235]
|
|
123
|
+
- DASH/WASM: actually reject the `DASH_WASM.initialize`'s Promise if it fails [#1238]
|
|
124
|
+
- On the PlayStation 5, set `Infinity` MediaSource duration for live contents to prevent playback issues [#1250]
|
|
95
125
|
|
|
96
126
|
### Other improvements
|
|
97
127
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
128
|
+
- adaptive: Perform various adaptive tweaks to avoid switching too much between qualities in some conditions [#1237]
|
|
129
|
+
- Directfile: Detect "forced" subtitles on Safari when playing directfile contents (such as HLS) [#1239]
|
|
130
|
+
- Improve `"direct"` `audioTrackSwitchingMode` compatibility by re-seeking [#1246]
|
|
131
|
+
- The `DEBUG_ELEMENT` feature now uses the `monospace` fallback font as a default for a better rendering on apple devices
|
|
132
|
+
- doc: externalize documentation-generator code
|
|
104
133
|
|
|
105
134
|
## v3.30.0 (2023-03-07)
|
|
106
135
|
|
|
107
136
|
### Features
|
|
108
137
|
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
138
|
+
- Add `updateContentUrls` API, allowing to update the Manifest's URL during playback [#1182]
|
|
139
|
+
- DASH: implement forced-subtitles, adding the `forced` property to the audio tracks API and selecting by default a forced text track linked to the audio track's language if present [#1187]
|
|
140
|
+
- DRM: add the `getKeySystemConfiguration` method to the RxPlayer [#1202]
|
|
141
|
+
- add experimental `DEBUG_ELEMENT` feature and `createDebugElement` method to render a default debugging HTML element [#1200]
|
|
113
142
|
|
|
114
143
|
### Deprecated
|
|
115
144
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
145
|
+
- Deprecate the `getVideoLoadedTime` method which can be easily replaced (see Deprecated method documentation)
|
|
146
|
+
- Deprecate the `getVideoPlayedTime` method which can be easily replaced (see Deprecated method documentation)
|
|
147
|
+
- Deprecate the `transportOptions.aggressiveMode` option
|
|
148
|
+
- DRM: Deprecate the `keySystems[].onKeyStatusesChange` callback as no good use case was found for it.
|
|
120
149
|
|
|
121
150
|
### Bug fixes
|
|
122
151
|
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
152
|
+
- Fix segment requesting error when playing a DASH content without an url and without BaseURL elements [#1192]
|
|
153
|
+
- API: Stop sending events if the content is stopped due to a side-effect of one of the event handler [#1197]
|
|
154
|
+
- text-tracks/ttml: fix inconsistent line spacing when resizing the `textTrackElement` [#1191]
|
|
155
|
+
- DRM: Fix race condition leading to a JS error instead of a `NO_PLAYABLE_REPRESENTATION` [#1201]
|
|
156
|
+
- DRM/Compat: Renew MediaKeys at each `loadVideo` on all WebOS (LG TV) platforms to work around issues [#1188]
|
|
128
157
|
|
|
129
158
|
### Other improvements
|
|
130
159
|
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
160
|
+
- DASH: better detect closed captions [#1187]
|
|
161
|
+
- DASH: handle `endNumber` DASH attribute [#1186]
|
|
162
|
+
- DASH: Do not merge AdaptationSet with role "main" anymore [#1214]
|
|
163
|
+
- DASH: parse `transferCharacteristics` property in the MPD to better detect hdr [#1212]
|
|
164
|
+
- Support encrypted contents on Panasonic 2019 TVs [#1226]
|
|
165
|
+
- Better handle SourceBuffer's QuotaExceededError, responsible for `MediaError` with the `BUFFER_FULL_ERROR` code [#1221]
|
|
166
|
+
- API: send available...TracksChange events in the very unlikely scenario where tracks are added after a manifest update [#1197]
|
|
167
|
+
- Completely remove RxJS dependency from the RxPlayer's source code [#1193]
|
|
168
|
+
- DRM: Request PR recommendation when PlayReady is asked and try default recommendation robustnesses [#1189]
|
|
141
169
|
|
|
142
170
|
## v3.29.0 (2022-11-16)
|
|
143
171
|
|
|
144
172
|
### Features
|
|
145
173
|
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
174
|
+
- add `networkConfig.segmentRequestTimeout` and `networkConfig.manifestRequestTimeout` options to loadVideo to configure the timeout of respectively segment and manifest requests [#1156]
|
|
175
|
+
- add `timeout` property to the first argument communicated to a `segmentLoader` (from `loadVideo`'s `transportOptions`) [#1156]
|
|
176
|
+
- add `timeout` property to a new third argument communicated to a `manifestLoader` (from `loadVideo`'s `transportOptions`) [#1156]
|
|
177
|
+
- DRM: add `keySystems[].onKeyExpiration` to `loadVideo` options to configure the behavior the RxPlayer should have on key expiration [#1157]
|
|
178
|
+
- DRM: add `keyStatuses` property to an `EncryptedMediaError` with the `KEY_STATUS_CHANGE_ERROR` code to communicate which key id and key statuses caused issues. [#1157]
|
|
151
179
|
|
|
152
180
|
### Deprecated
|
|
153
181
|
|
|
154
|
-
|
|
182
|
+
- DRM: Deprecate `keySystems[].throwOnLicenseExpiration` `loadVideo` option as this boolean can be replaced with more customizability by the new `keySystems[].onKeyExpiration` `loadVideo` option [#1157]
|
|
155
183
|
|
|
156
184
|
### Bug fixes
|
|
157
185
|
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
186
|
+
- Directfile: Fix long-running issues with rare "directfile" contents and some browsers/platforms (seen on Chrome PC and PlayStation 5) where playback would stay in `LOADING` state indefinitely despite playing [#1174]
|
|
187
|
+
- DRM: Fix undocumented `keySystems[].videoRobustnesses` `loadVideo` option. `audioRobustnesses` was previously used even for video capabilities [#1171]
|
|
188
|
+
- Compat/Directfile: Fix an issue with WebOS (LG TVs) when playing multiple directfile contents with the `stopAtEnd` player option set to `true` [#1154]
|
|
189
|
+
- Compat/DRM: Fix infinite loading on WebOS (LG TVs) 2021 and 2022 when loading more than once an encrypted content by resetting decryption capabilities each time [#1175]
|
|
190
|
+
- Compat: To work around an issue on WebOS (LG TVs), also specify a request timeout manually through a `setTimeout` call when XMLHttpRequests are created for Manifest and segment requests [#1152]
|
|
191
|
+
- Compat/Directfile: Fix an issue on Tizen (Samsung TVs) where playing directfile contents could randomly lead to not having audio [#1170]
|
|
192
|
+
- Compat: Fix issue with Tizen (Samsung TVs) where starting playback on a discontinuity could lead to infinite rebuffering [#1140, #1176]
|
|
193
|
+
- Compat/Directfile: For `"directfile"` contents, also consider `AudioTrack` with a `description` (without an "s") as audio-description audio tracks to work-around what seems to be a Safari typo [#1160]
|
|
194
|
+
- DRM: When using persistent licenses, create new MediaKeySession when `load` resolves with `false`, instead of relying the same, to fix issues with such persistent sessions if the browser cleaned it up [#1139]
|
|
195
|
+
- Only call "MediaSource.endOfStream" once, the most visible side-effect should have been repeated logs [#1163]
|
|
168
196
|
|
|
169
197
|
### Other improvements
|
|
170
198
|
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
199
|
+
- DASH: Improve multi-CDN configurations, by smartly selecting the right CDN depending on past status [#1165]
|
|
200
|
+
- Allow reverse playback use cases by not skipping gaps and most discontinuities when the playback rate has been set to `0` or a negative value [#1138]
|
|
201
|
+
- In the experimental "local" transport, add `incomingRanges` property to signal the time ranges of remaining data, allowing better discontinuity handling and duration estimates for sill-loading dowloaded contents [#1151]
|
|
202
|
+
- Only send, through `"warning"` events, one `EncryptedMediaError` with a `KEY_STATUS_CHANGE_ERROR` code when multiple ones arises at the same time [#1157]
|
|
176
203
|
|
|
177
204
|
## v3.28.0 (2022-07-12)
|
|
178
205
|
|
|
179
206
|
### Features
|
|
180
207
|
|
|
181
|
-
|
|
182
|
-
|
|
208
|
+
- Add `label` to audio, video and text track APIs (such as `getAvailableAudioTracks`) which gives a human-readable description of the corresponding track, if available in the Manifest [#1105, #1109]
|
|
209
|
+
- Automatically set the LogLevel to `"DEBUG"` if a global `__RX_PLAYER_DEBUG_MODE__` constant is set to `true`, to simplify debugging [#1115]
|
|
183
210
|
|
|
184
211
|
### Bug fixes
|
|
185
212
|
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
213
|
+
- Use the first **compatible** codec of the current AdaptationSet when creating a SourceBuffer [#1094]
|
|
214
|
+
- DASH/DRM: Fix potential infinite rebuffering when a KID is not announced in the MPD [#1113]
|
|
215
|
+
- DRM: Fix quality fallback when loading a content whose license has been cached under an extended `singleLicensePer` setting and when starting (and staying) with a quality whose key id is not in it [#1133]
|
|
216
|
+
- DASH: Avoid infinite loop due to rounding errors while parsing multi-Periods MPDs [#1111, #1110]
|
|
217
|
+
- After a `RELOADING` state, stay in `PAUSED` if the media element was paused synchronously before the side-effect which triggered the reloading (usually coming from the API) was perform [#1132]
|
|
218
|
+
- Fix issue with `maxVideoBufferSize` setting which could lead to too much data being buffered [#1125]
|
|
219
|
+
- Prevent possibility of requests loops and infinite rebuffering when a pushed segment is always completely and immediately garbage collected by the browser [#1123]
|
|
220
|
+
- DASH: Fix potential rare memory leak when stopping the content after it has reloaded at least once [#1135]
|
|
221
|
+
- Directfile: Properly announce the audio track's `audioDescription` accessibility attribute in directfile mode on Safari [#1136]
|
|
222
|
+
- DASH: Fix issues that could arise if a segment is calculated to start at a negative position [#1122]
|
|
223
|
+
- DASH: Fix possibility of wrong segments being requested when a SegmentTimeline in a given Period (whose Period@end is set) had an S@r set to `-1` at its end [#1098]
|
|
224
|
+
- DASH: If the first `<S>` has its S@t attribute not set, make as if it is set to `0` [#1118]
|
|
198
225
|
|
|
199
226
|
### Other improvements
|
|
200
227
|
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
228
|
+
- TTML: Add support for percent based thickness for textOutline in TTML Subtitles [#1108]
|
|
229
|
+
- Improve TypeScript's language servers auto import feature with the RxPlayer by better redirecting to the exported type [#1126]
|
|
230
|
+
- If seeking after the last potential position, load last segments before ending [#1097]
|
|
231
|
+
- The duration set on the media element is now only relative to the current chosen tracks (it was previously relative to all potential track). This allows to seek later when switching e.g. to a longer video track [#1102]
|
|
232
|
+
- Errors coming from an HTMLMediaElement now have the browser's error message if it exists [#1112]
|
|
233
|
+
- TTML: Better handle EBU-TT subtitles by handling the `tt` XML namespace in our TTML parser [#1131]
|
|
234
|
+
- DRM: Information on persisted DRM sessions are now automatically updated to their last version when possible [#1096]
|
|
235
|
+
- Only log values which are relatively inexpensive to stringify to reduce the difference between debugging sessions and what is usually seen in production [#1116]
|
|
210
236
|
|
|
211
237
|
## v3.27.0 (2022-03-31)
|
|
212
238
|
|
|
213
239
|
### Features
|
|
214
240
|
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
241
|
+
- Add a `maxVideoBufferSize` constructor option and `{get,set}MaxVideoBufferSize` methods to limit the size of loaded video data buffered at the same time [#1041, #1054]
|
|
242
|
+
- DRM: Add a `"periods"` mode to the `keySystems[].singleLicensePer` `loadVideo` option, allowing to obtain decryption license for groups of Periods allowing a compromise between optimization, features and compatibility [#1028, #1061]
|
|
243
|
+
- Add a `"reload"` `audioTrackSwitchingMode` to work-around rare compatibility issues when switching audio tracks [#1089]
|
|
218
244
|
|
|
219
245
|
### Bug fixes
|
|
220
246
|
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
247
|
+
- subtitles: Fix rare issue where subtitles could be skipped due to a rounding error [#1064]
|
|
248
|
+
- DASH: fix issue where the wrong segments would be requested on $Number$-based MPD with a SegmentTimeline older than the `timeShiftBufferDepth` [#1052, #1060]
|
|
249
|
+
- directfile: disable all audio tracks before enabling one to work-around Safari issue on MacOS Monterey [#1067]
|
|
250
|
+
- avoid performing a small seek when changing the audio track [#1080]
|
|
251
|
+
- api: allow switching to RELOADING state synchronously after LOADED [#1083]
|
|
252
|
+
- Safari Mobile: Improve decryption support on Safari mobile by relying on the vendored `WebKitMediaKeys` API [#1072]
|
|
253
|
+
- DASH: Fix issue which prevented the integrity check of most MP4 DASH segments when `transportOptions.checkMediaSegmentIntegrity` was set to `true`
|
|
254
|
+
- avoid unnecessary warning logs when loading some initialization segments [#1049]
|
|
255
|
+
- TypeScript: Add forgotten TypeScript types in the exposed segment and manifest loader APIs [#1057]
|
|
256
|
+
- DRM: Avoid decryption issues when a license is persisted in a `singleLicensePer` `"init-data"` mode but loaded in a `"content"` mode [#1031, #1042]
|
|
257
|
+
- DRM: Totally avoid the theoretical possibility of leaking MediaKeySessions when a `generateRequest` or `load` call takes multiple seconds [#1093]
|
|
232
258
|
|
|
233
259
|
### Other improvements
|
|
234
260
|
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
261
|
+
- DASH: always consider that the non-last Period is finished when it contains SegmentTimeline elements [#1047]
|
|
262
|
+
- add better buffer cleaning logic on a browser's `QuotaExceededError` to better handle memory limitations [#1065]
|
|
263
|
+
- DASH: Prioritize selectionPriority attribute over a "main" Role when ordering AdaptationSets [#1082]
|
|
264
|
+
- directfile/Safari: use the `getStartDate` method in `getWallClockTime`, `seekTo` and the `positionUpdate` event when available to obtain true offseted "wall-clock" times when playing HLS contents on Safari [#1055]
|
|
265
|
+
- DRM: Improve DRM Session caches performance when `singleLicensePer` is set to `"content"`
|
|
266
|
+
- DRM: Stop retrying closing MediaKeySessions multiple times when it fails, instead doing it only once when it should work [#1093]
|
|
267
|
+
- TypeScript: Add IBitrateEstimate, IPositionUpdate and IPlayerState types to the exported types [#1084]
|
|
268
|
+
- Remove dependency on pinkie's promise ponyfill [#1058, #1090]
|
|
269
|
+
- tests: add performance tests, to better catch and avoid performance regressions [#1053, #1062]
|
|
270
|
+
- DRM: Refactor DRM logic for better maintainability. DRM-linked logs are now prefixed by `DRM:` instead of `EME:` like previously [#1042]
|
|
246
271
|
|
|
247
272
|
## v3.26.2 (2022-01-11)
|
|
248
273
|
|
|
249
274
|
### Bug fixes
|
|
250
275
|
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
276
|
+
- API: re-switch to SEEKING state instead of BUFFERING when seeking to already-buffered data [#1015]
|
|
277
|
+
- DASH: provide default startNumber attribute for number-based SegmentTemplate indexes with a SegmentTimeline [#1009]
|
|
278
|
+
- TTML (subtitles): interpret percentages as relative to the computed cell size and not as the percentage of the inherited font size in the page [#1013]
|
|
279
|
+
- subtitles: Work-around recent Chrome issue where the content of a native `<track>` element would still be visible despite being removed from the DOM (issue only reproducible in the `"native"` `textTrackMode`) [#1039]
|
|
280
|
+
- API: Fix rare issue happening when switching rapidly between Representations, which led to multiple APIs such as `getAvailableVideoBitrate` or `getAvailableAudioTracks` returning either incorrect or empty results [#1018]
|
|
281
|
+
- Improve prevention of rare segment-loading loops by fixing an issue with the clean-up of the short-term buffer history we maintain [#1045]
|
|
257
282
|
|
|
258
283
|
### Other improvements
|
|
259
284
|
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
285
|
+
- DASH-LL: Improve adaptive bitrate logic on low-latency contents by implementing a specific algorithm for those [#1025, #1036]
|
|
286
|
+
- DASH-LL: Improve handling of $Time$-based DASH-LL contents [#1020]
|
|
287
|
+
- DASH: Support UTCTiming element with the `urn:mpeg:dash:utc:http-xsdate:2014` scheme [#1021]
|
|
288
|
+
- DOC: Important refactoring of the RxPlayer API documentation to improve readability, discoverability and to add search capability to it [#1016]
|
|
289
|
+
- DASH: handle ContentProtection elements that have been defined at the Representation-level (and not at the AdaptationSet-level, as defined by the DASH-IF IOP) [#1027]
|
|
290
|
+
- DASH: Be resilient when the resource behind an UTCTiming element leads to an error (usually due to an HTTP-related issue) - instead of failing with an error like now [#1026]
|
|
291
|
+
- Better estimate the duration of ISOBMFF segments with multiple moof boxes [#1037]
|
|
292
|
+
- EME: Add hex-encoded key id to the `KEY_STATUS_CHANGE_ERROR` error message so we can know which key we're talking about when debugging [#1033]
|
|
293
|
+
- dev/scripts: for the "modular" (a.k.a. minimal) RxPlayer build now rely on TypeScript's const enums, instead of uglily using sed, to replace compile-time constants. [#1014]
|
|
294
|
+
- dev/scripts: remove reliance on environment variables when running the RxPlayer build scripts [#1004]
|
|
295
|
+
- dev/scripts: add esbuild devdependency and add "s" script to allow faster checks for RxPlayer developpers [#1003]
|
|
296
|
+
- CI: Rely on Github actions instead of Travis for most CI-related matters [#1046]
|
|
297
|
+
- code/refacto: replace central `Clock` concept (Observable bringing media-related updates to the RxPlayer at a regular pace) by a more flexible `PlaybackObserver` class [#1002]
|
|
274
298
|
|
|
275
299
|
## v3.26.1 (2021-09-14)
|
|
276
300
|
|
|
277
301
|
### Bug fixes
|
|
278
302
|
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
303
|
+
- ttml: Do not throw if a TTML subtitles file doesn't contain any `<body>` tag, just ignore it [#993]
|
|
304
|
+
- Auto-detect when playback is unexplicably frozen and try to unlock it through a small seek [#982]
|
|
305
|
+
- Properly send `available{Audio,Video}BitratesChange` event for multi-Period contents [#983]
|
|
306
|
+
- DASH/MetaPlaylist/Local: fix rare infinite rebuffering issue which could happen when changing or disabling the track of a future Period [#1000]
|
|
307
|
+
- compat: Prevent rare segment-loading loops by automatically detecting when segments are garbage collected by the browser immediately after being pushed [#987, #990]
|
|
308
|
+
- compat/DRM: In some Safari versions, communicating a license as a JS `ArrayBuffer` could throw, this is now fixed [#974]
|
|
309
|
+
- DASH_WASM: Don't stop with a fatal error if an expected ISO8601 duration value is empty in the MPD
|
|
310
|
+
- DASH_WASM: Parse `<Event>` elements which contain an XML namespace defined outside that element [#981]
|
|
311
|
+
- DASH_WASM: Drastically reduce wasm compilation time and file size [#980]
|
|
288
312
|
|
|
289
313
|
### Other improvements
|
|
290
314
|
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
315
|
+
- Request initialization segment and the first media segments at the same time when possible, potentially reducing loading times [#973]
|
|
316
|
+
- Remove cached segment request detection in the adaptive logic, as it is sensible to false positives, leading to a poor bitrate in some short contents [#977]
|
|
317
|
+
- Export more needed types through the `rx-player/types` path [#972, #976]
|
|
318
|
+
- demo: Expose some player options in the demo page [#999]
|
|
319
|
+
- dev: Rewrite build logic from bash to node.js to improve its maintainability
|
|
320
|
+
- dev: Replace internal `info` script by more helpful and interactive `list` script [#991]
|
|
321
|
+
- dev/code: Forbid the usage of TypeScript's type `any` in most of the RxPlayer's code - performing runtime type-checking in some cases (in DEV mode only) [#994]
|
|
322
|
+
- dev/code: Remove RxJS from the transports code [#962]
|
|
300
323
|
|
|
301
324
|
## v3.26.0 (2021-06-10)
|
|
302
325
|
|
|
303
326
|
### Features
|
|
304
327
|
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
328
|
+
- Add HDR information through the `hdrInfo` property on video Representation/tracks as returned by APIs such as `getVideoTrack`, `getAvailableVideoTracks`, the `videoTrackChange` event, `getManifest`, `getCurrentAdaptations` and `getCurrentRepresentations` [#946]
|
|
329
|
+
- Add the `DASH_WASM` experimental feature, allowing faster MPD parsing using WebAssembly [#937]
|
|
330
|
+
- Add the experimental `VideoThumbnailLoader` tool, which uses "trickmodes" DASH AdaptationSet to generate thumbnails [#647]
|
|
331
|
+
- Add `preferTrickModeTracks` option to `setPlaybackRate`, to switch on or off trickmode tracks when available on the Manifest [#940]
|
|
332
|
+
- Add `areTrickModeTracksEnabled` method to indicate whether the RxPlayer is using trickmode tracks in priority [#940]
|
|
333
|
+
- Add `trickModeTracks` and `isTrickModeTrack` properties to video tracks as returned by the `getVideoTrack` and `getAvailableVideoTracks` method and by the `videoTrackChange` event [#940]
|
|
334
|
+
- Add `maxSessionCacheSize` `keySystems` option, to configure the maximum number of decryption sessions that can be kept alive at the same time in a cache [#938]
|
|
335
|
+
- The `manifestLoader` callback defined in `transportOptions` can now ask for a request to be retried [#964]
|
|
336
|
+
- `initialManifest` now accepts the Manifest as an `ArrayBuffer` [#937]
|
|
337
|
+
- The `manifestLoader` callback defined in `transportOptions` can now send the Manifest as an `ArrayBuffer` [#937]
|
|
315
338
|
|
|
316
339
|
### Bug fixes
|
|
317
340
|
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
341
|
+
- DASH: don't ignore new EventStream elements that weren't in the previous MPD update for a given Period [#956]
|
|
342
|
+
- DASH: fix fatal error linked to the `duration` of the `MediaSource` happening when playing a multi-Period live DASH content whose previous (before updating) last Period's segments had been fully generated and fully pushed. [#952]
|
|
343
|
+
- DASH: Avoid loading plain-text subtitles in a loop when playing before the first cue starts or after the last cue ends [#945, #948]
|
|
344
|
+
- DASH: Avoid loading plain-text subtitles in a loop when the `transportOptions.checkMediaSegmentIntegrity` is set to `true` [#947]
|
|
345
|
+
- DASH: avoid ending a dynamic stream if new Periods may be added later to the MPD [#959]
|
|
346
|
+
- DASH: avoid unnecessarily refresh a MPD based on SegmentList elements when they don't perfectly align with the pushed data [#963]
|
|
324
347
|
|
|
325
348
|
### Other improvements
|
|
326
349
|
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
350
|
+
- Improve `audioTrackSwitchingMode` `"direct"` mode by avoiding unnecessary reloading cases [#872, #887, #943]
|
|
351
|
+
- When seeking after the end of an ended content, actually seek just a little before to avoid subtle issues [#941]
|
|
352
|
+
- DASH: limit the postponment of a Manifest refresh due to poor MPD-parsing performance to 6-times the "regular" delay (not impacted by `tansportOptions.minimumManifestUpdateInterval`) [#958]
|
|
353
|
+
- DASH: Avoid loading two times a segment instead of once when that segment is not anounced in the MPD through a SegmentBase, SegmentList nor SegmentTemplate element but just through the Representation's BaseURL. [#949]
|
|
354
|
+
- Update used RxJS version to 7.0.0, which might bring with it a smaller size and better performances [#954]
|
|
355
|
+
- demo: remove Chart.js dependency (we found that its new API documentation and errors were too impenetrable) and replace the "Buffer Size" chart by a homemade one. [#955, #957]
|
|
334
356
|
|
|
335
357
|
## v3.24.0 (2021-04-01)
|
|
336
358
|
|
|
337
359
|
### Features
|
|
338
360
|
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
361
|
+
- Add `inbandEvent` event for when an event is encountered in a media segment [#892]
|
|
362
|
+
- DRM: Add `singleLicensePer` `keySystems` option to be able to signal in advance that the current content has a single license, even if it has multiple encryption keys [#863, #904]
|
|
363
|
+
- DRM: Add `keySystems[].licenseStorage.disableRetroCompatibility` boolean to unlock optimizations when compatibility with EME sessions persisted in older RxPlayer versions is not important [#919]
|
|
342
364
|
|
|
343
365
|
### Bug fixes
|
|
344
366
|
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
367
|
+
- DASH: Fix rounding error that could cause infinite buffering issues when going from a DASH Period to the next [#897, #899]
|
|
368
|
+
- DRM: Always pass on server certificate before any challenge is generated. Contents with multiple licenses previously could lead to the latter being done before the former. [#895]
|
|
369
|
+
- DRM: Fix possible leaks of MediaKeySessions if closed at the wrong time [#920]
|
|
370
|
+
- Fix issue making sudden and acute fall in bandwidth not being considered soon enough [#906]
|
|
371
|
+
- On some devices when `maxBufferAhead` is set, avoid removing the initially loaded data if done before the initial seek could be performed [#907]
|
|
372
|
+
- Avoid cases of infinite rebuffering on Tizen 4 by avoiding pushing segments "on top of others" too close to the current position [#925]
|
|
373
|
+
- Avoid seeking issues on Tizen by not seeking over discontinuities that will be already handled by the browser [#922]
|
|
374
|
+
- Fix initial seek on Tizen (Samsung TVs) on live contents by setting a much lower duration (to work-around a Tizen overflow) [#914]
|
|
375
|
+
- DASH: Consider multiple defined `<Accessibility>` tags for a single AdaptationSet [#903]
|
|
376
|
+
- Fix error that could be thrown on Safari when calling the `getStatusForHDCP` method from the experimental `MediaCapabilitiesProber` tool [#927]
|
|
355
377
|
|
|
356
378
|
### Other improvements
|
|
357
379
|
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
380
|
+
- Avoid to push on top of the current position if there's already a segment there as it can provoke minor decoding issues on some devices [#925]
|
|
381
|
+
- Update video element's duration if the content duration changes [#917]
|
|
382
|
+
- DASH: Improve loading time with encrypted contents by only using the encrypted initialization data found in the Manifest when found in it [#911, #919]
|
|
383
|
+
- Record redirections made on a `manifestUpdateUrl` to request directly the right URL on next update. [#929]
|
|
384
|
+
- Improve loading time when a `serverCertificate` is given by calling the `setServerCertificate` API earlier [#895]
|
|
385
|
+
- Improve loading time when switching contents by fetching the Manifest at the same time the previous content is cleaned-up [#894]
|
|
386
|
+
- Improve loading time on some CPU-constrained devices by not running unnecessary playback checks on the "progress" HTMLMediaElement event anymore [#893]
|
|
387
|
+
- DASH: Consider DASH audio AdaptationSet with a "urn:mpeg:dash:role:2011" schemeIdUri and a "description" role as `audioDescription` tracks [#903]
|
|
388
|
+
- Warn through the logger when the autoplay attribute is enabled on the media element but not on RxPlayer [#924]
|
|
389
|
+
- Avoid switching to a SEEKING state if the seek operation was performed inside the RxPlayer's code [#872, #887]
|
|
390
|
+
- DRM: Wait up to 100 milliseconds after a persistent MediaKeySession has been loaded to wait for possibly late `keyStatuses` updates [#928]
|
|
391
|
+
- DRM: Only store persistent MediaKeySession once at least one key is known [#926]
|
|
392
|
+
- DRM: Reconsider Representations that have been fallbacked from if they become decipherable [#905]
|
|
393
|
+
- DRM: Lower the maximum size of the MediaKeySession cache from 50 to 15 to improve compatibility, even more now that license with multiple keys are properly handled
|
|
394
|
+
- Doc: Move architecture documentation closer to the code it documents [#764, #900]
|
|
395
|
+
- Doc: add "Quick links" to the top of the API documentation [#909]
|
|
375
396
|
|
|
376
397
|
## v3.23.1 (2021-02-01)
|
|
377
398
|
|
|
378
399
|
### Bug fixes
|
|
379
400
|
|
|
380
|
-
|
|
381
|
-
|
|
401
|
+
- Fix support of encrypted contents on Safari (v3.23.0 regression)
|
|
382
402
|
|
|
383
403
|
## v3.23.0 (2021-02-01)
|
|
384
404
|
|
|
385
405
|
### Features
|
|
386
406
|
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
407
|
+
- Add the `reload` method to be able to re-load the last loaded content as fast as possible (e.g. after fatal errors) [#859, #867]
|
|
408
|
+
- Add `onCodecSwitch` loadVideo option, to select a strategy when a new incompatible codec is encountered [#856]
|
|
409
|
+
- Emit `DISCONTINUITY_ENCOUNTERED` warnings when a discontinuity has been seeked over [#862]
|
|
410
|
+
- Add minAudioBitrate and minVideoBitrate constructor options and the {set,get}Minimum{Audio,Video}Bitrate methods to define the minimum quality reachable through adaptive streaming [#876]
|
|
391
411
|
|
|
392
412
|
### Bug fixes
|
|
393
413
|
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
414
|
+
- Fix impossibility to fallback to another Representation (with the `keySystems[].fallbackOn` `loadVideo` options) when a decryption key has been found to be non-usable [#889]
|
|
415
|
+
- Fix DRM-related events being sent twice in a row instead of just once [#850]
|
|
416
|
+
- Stop and throw `MANIFEST_PARSE_ERROR` error again when either audio or video has only unsupported codecs (instead of just playing the other type) [#864]
|
|
417
|
+
- Avoid re-downloading a segment that ends a lot before its expected end [#846]
|
|
418
|
+
- In "native" `textTrackMode`, avoid requesting text segments in a loop [#878]
|
|
419
|
+
- Disable effects of `throttleVideoBitrateWhenHidden`, `limitVideoWidth` and `throttleVideoBitrate` player options on Firefox >= 67 due to how Picture in Picture mode is currently handled in them [#874]
|
|
420
|
+
- Work-around race condition in old Chromium versions where loading a persistent MediaKeySession led to no key statuses right away [#847]
|
|
401
421
|
|
|
402
422
|
### Other improvements
|
|
403
423
|
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
424
|
+
- Skip over most audio or video discontinuities in the stream, even those not announced in the Manifest [#862]
|
|
425
|
+
- When track or bitrate switching lead to a reload, seek back a consistent number of milliseconds to give back context [#848]
|
|
426
|
+
- Don't call `setServerCertificate` API when `keySystems[].serverCertificate` option is set to `null` [#849]
|
|
427
|
+
- On the rare platforms where an undefined initialization data type can be received on encrypted events, retry `generateRequest` with a default "cenc" value if the first one fails due to it being empty [#870]
|
|
428
|
+
- Re-add debug logs logging the principal media properties at each clock tick [#844]
|
|
429
|
+
- Use TextEncoder and TextDecoder interfaces when available to speed-up string conversions [#843, #875]
|
|
430
|
+
- Throw a better error when no EME API is found
|
|
431
|
+
- Reduce default bundles size by switching to webpack 5 to generate them
|
|
432
|
+
- tests: Add conformance tests on the initial seek to help debugging related issues on new platforms [#873]
|
|
433
|
+
- lint/code: Use eslint code linter even for the TypeScript code [#842]
|
|
415
434
|
|
|
416
435
|
## v3.22.0 (2020-11-17)
|
|
417
436
|
|
|
418
437
|
### Features
|
|
419
438
|
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
439
|
+
- Add `audioTrackSwitchingMode` `loadVideo` option to allow different strategies when switching between audio tracks [#801, #806]
|
|
440
|
+
- Add `enableFastSwitching` `loadVideo` option to enable or disable optimizations doing segment replacement in the browser's buffer [#779, #780]
|
|
441
|
+
- Add `initialManifest` `loadVideo` option to provide the Manifest to the RxPlayer when it has already been loaded [#807]
|
|
442
|
+
- tools: Add `StringUtils` utilitary functions to tools to convert bytes to strings and the other way around [#809]
|
|
443
|
+
- tools: The `TextTrackRenderer` tool is not experimental anymore: it now has a stable API [#810]
|
|
444
|
+
- experimental/local-manifest: The RxPlayer now (only) plays the new `"0.2"` format version of the "LocalManifest" (in the experimental `"local"` transport) [#810]
|
|
426
445
|
|
|
427
446
|
### Bug fixes
|
|
428
447
|
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
448
|
+
- directfile: Fix impossibility to play an encrypted content in directfile mode (regression brought in v3.21.1) [#827, #830]
|
|
449
|
+
- subtitles: Display multiple cues with overlapping times [#829]
|
|
450
|
+
- smooth: Fix minimum position in a Smooth live content when fewer segments than the dvr window length are available [#826]
|
|
451
|
+
- dash/metaplaylist: Fix possible playback issues on multi-Period contents, where segments from multiple Periods overlap [#837]
|
|
452
|
+
- Fix very rare race condition which triggered a "setting priority of null" error after synchronous segment requests were done [#817]
|
|
453
|
+
- local-manifest: LocalManifest that transition from not finished to finished while playing now end properly [#818]
|
|
454
|
+
- local-manifest: Fix and clarify the duration and maximum position reported for a playing LocalManifest [#818]
|
|
455
|
+
- compatibility/drm: On some webkit-based browsers, do not require the use of a server certificate for DRM if the key system used is not FairPlay [#833]
|
|
456
|
+
- drm: Properly update to a different server certificate on the MediaKeys or remove it if needed [#835]
|
|
457
|
+
- drm: throw MEDIA_IS_ENCRYPTED_ERROR again when playing an encrypted event without either the `EME` feature, EME APIs or a `keySystems` option [#841]
|
|
439
458
|
|
|
440
459
|
### Other improvements
|
|
441
460
|
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
461
|
+
- subtitles/ttml: Apply default position to TTML subtitles in `"html"` `textTrackMode` when no style is found [#815]
|
|
462
|
+
- subtitles/ttml: Set default text color to white to TTML subtitles in `"html"` textTrackMode [#832]
|
|
463
|
+
- drm: Avoid re-setting a server certificate we know has already been pushed to improve loading performance [#824, #835]
|
|
464
|
+
- dash: Always prefer a "main" AdaptationSet when hesitating between multiple ones [#828]
|
|
465
|
+
- dash: Improve minimum position precision for dynamic DASH contents when less segments are available than what would be guessed from the timeShiftBufferDepth [#826]
|
|
466
|
+
- drm/logs: Better log why a MediaKeySession is not considered as "usable" [#822]
|
|
467
|
+
- drm/logs: Be more verbose with DRM-related logs, even at lower logger levels [#821]
|
|
468
|
+
- tests/conformance: Add "conformance tests", to quickly test the capabilities of new devices and targets [#814]
|
|
469
|
+
- code: avoid circular dependency in `src/features` in original typescript source files [#805]
|
|
470
|
+
- demo: Fix default position for the video track select element in the demo to always be at the currently selected video track [#813]
|
|
471
|
+
- demo/code: Better integrate the RxPlayer to the demo: through a simple import, instead of adding a script tag for the bundled version [#811]
|
|
472
|
+
- dev: Remove all enforced git-hooks (on pre-commit and pre-push) [#808]
|
|
455
473
|
|
|
456
474
|
## v3.21.1 (2020-09-21)
|
|
457
475
|
|
|
458
476
|
### Bug fixes
|
|
459
477
|
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
478
|
+
- compatibility/drm: make switching the current `MediaKeys` work on most platforms by re-ordering browser API calls [#766, #744]
|
|
479
|
+
- compatibility/drm: in Edge and IE11, fix behavior which could lead to not fallbacking from a non-decryptable quality due to a badly parsed key ID [#790]
|
|
480
|
+
- dash: when a Representation depends on multiple SegmentTemplate at the same time, merge all corresponding information instead of just relying on the last one [#767, #768]
|
|
481
|
+
- smooth: skip discontinuity when seeking in the middle of one when playing a smooth content [#792]
|
|
482
|
+
- api: fix `getUrl` and the minimum position calculation after playing for some time a live content with a set `manifestUpdateUrl` [#775, #776]
|
|
483
|
+
- drm/subtitles: better handle UTF-8 and UTF-16 characters in an encrypted initialization data or in subtitles [#791]
|
|
484
|
+
- requests: still retry all the other segment's URLs when a non-retryable error happen on the request for one of them [#798]
|
|
485
|
+
- dash: fix infinite rebuffering when playing multi-Period DASH contents for some time with a `manifestUpdateUrl` set [#797]
|
|
468
486
|
|
|
469
487
|
### Other improvements
|
|
470
488
|
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
489
|
+
- improve seek latency in some rare cases where we could profit from cancelling a request for a needed segment [#752, #769]
|
|
490
|
+
- requests: only download an initialization segment when media segments for that Representation are needed [#773]
|
|
491
|
+
- requests: avoid unnecessary segment requests when segments loaded don't exactly align with what is expected if contiguous segments exist [#772, #771]
|
|
492
|
+
- better time quality switches to avoid having to re-download segments in the new quality [#781, #782, #783]
|
|
493
|
+
- adaptive: limit bandwidth oscillations when the buffer level is low by choosing a lower bitrate by default and limiting fall in bandwidth when in "starvation mode" [#796]
|
|
494
|
+
- compatibility/drm: filter out badly-formed CENC PSSH when found, if some well-formed exist [#788]
|
|
495
|
+
- isobmff: support rare but possible occurence where an ISOBMFF box size is stored on 8 bytes [#784]
|
|
496
|
+
- logs: when logs are set to `"DEBUG"`, now regularly print visual representations of which segments live currently in the buffer(s) [#795]
|
|
497
|
+
- demo: change separator in the demo's generated links from "\" to "!" to not change its form when percent-encoded [#758, #759]
|
|
498
|
+
- project: better document changes in changelog and release notes, mostly by linking to related issues and PRs
|
|
499
|
+
- code: rename "Buffer" module to "Stream" in the code, documentation and logs to better reflect what that code does [#793]
|
|
500
|
+
- tests: add "global" unit tests for a more a module-oriented testing strategy (when compared to our existing function-oriented unit tests) to our EME (DRM) related code [#753]
|
|
484
501
|
|
|
485
502
|
## v3.21.0 (2020-06-17)
|
|
486
503
|
|
|
487
504
|
### Features
|
|
488
505
|
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
506
|
+
- api/events: add `"streamEvent"` event for when a DASH EventStream's event is reached
|
|
507
|
+
- api/events: add `"streamEventSkip"` event for when a DASH EventStream's event is "skipped"
|
|
508
|
+
- types/events: add `IStreamEvent` and `IStreamEventData` - which define the payload emitted by both a `"streamEvent"` and `"streamEventSkip"` events to the exported types
|
|
509
|
+
- api/tracks: add second argument to `setPreferredAudioTracks`, `setPreferredTextTracks` and `setPreferredVideoTracks` to be able to also apply them to the currently loaded Periods / content
|
|
510
|
+
- text/webvtt: parse settings attributes of WebVTT subtitles when in HTML mode
|
|
511
|
+
- api/tracks: add codec information to `getAvailableAudioTracks` and `getAudioTrack`
|
|
495
512
|
|
|
496
513
|
### Bug fixes
|
|
497
514
|
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
515
|
+
- dash: do not reduce the minimum position when using the `manifestUpdateUrl` `transportOptions` in `loadVideo`
|
|
516
|
+
- local-manifest: consider `language` property from a "local" Manifest
|
|
517
|
+
- local-manifest: refresh the Manifest even if we dont have a Manifest URL, as is often the case when playing locally-stored contents
|
|
518
|
+
- local-manifest: allow the "expired" property of a local-manifest to be updated
|
|
519
|
+
- compat/eme/fairplay: for fairplay contents, better format the initialization data given to the CDM. The previous behavior could lead to invalid license requests
|
|
520
|
+
- eme: re-allow serialization into a JSON string of the persisted session data, as presented in the DRM tutorial
|
|
521
|
+
- compat/low-latency: fix compilation of async/await when playing low-latency contents with the default bundled builds
|
|
522
|
+
- eme: ensure that the previous MediaKeySystemAccess used had `persistentState` to "required" when a new content needs it to be
|
|
523
|
+
- eme: fix `closeSessionsOnStop` `keySystems` option actually not removing any MediaKeySession when stopping a content (v3.20.1 regression).
|
|
507
524
|
|
|
508
525
|
### Other improvements
|
|
509
526
|
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
527
|
+
- dash: emit minor errors arising when parsing the DASH MPD through warning events (whose payload will be an error with the `PIPELINE_PARSE_ERROR` code)
|
|
528
|
+
- dash: consider AdaptationSet@selectionPriority in our initial track choice if the user preferences lead to multiple compatible tracks
|
|
529
|
+
- misc: do not download video segments when playing on an "audio" element.
|
|
530
|
+
- eme: replace the MediaKeySession's cache entry based on the least recently used instead of on the least recently created to improve cache effectiveness.
|
|
531
|
+
- eme/persistent sessions: Limit the maximum of stored persistent MediaKeySessions to 1000 to avoid the storage to grow indefinitely (higher than that, the least-recently used will be evicted)
|
|
516
532
|
|
|
517
533
|
## v3.20.1 (2020-05-06)
|
|
518
534
|
|
|
519
535
|
### Bug fixes
|
|
520
536
|
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
537
|
+
- eme: fix `OTHER_ERROR` issue arising when loading a new encrypted media when a previous since-disposed instance of the RxPlayer played encrypted contents on the same media element
|
|
538
|
+
- eme: fix `OTHER_ERROR` issue arising on Internet Explorer 11 when playing more than one encrypted content
|
|
539
|
+
- eme: fix issue where more than 50 active MediaKeySessions at the same time could lead to infinite rebuffering when playing back a previous content with multiple encryption keys
|
|
540
|
+
- directfile: for directfile contents, don't reset to the preferred audio, text or video track when the track list changes
|
|
541
|
+
- eme: remove any possibility of collision in the storage of EME initialization data. The previous behavior could theorically lead some initialization data to be ignored.
|
|
542
|
+
- eme: fix typo which conflated an EME "internal-error" key status and an "output-restricted" one.
|
|
528
543
|
|
|
529
544
|
## v3.20.0 (2020-04-22)
|
|
530
545
|
|
|
531
546
|
### Features
|
|
532
547
|
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
548
|
+
- api: add `disableVideoTrack` method
|
|
549
|
+
- api: add the `preferredVideoTrack` constructor option and `setPreferredVideoTracks` / `getPreferredVideoTracks` methods to set a video track preference (or to start with the video track disabled).
|
|
550
|
+
- api: add optional `codec` property to preferred audio tracks APIs, allowing applications to communicate a codec preference.
|
|
551
|
+
- api: make the `language` and `audioDescription` properties in `preferredAudioTracks`' objects optional.
|
|
552
|
+
- api: add `signInterpreted` to `getVideoTrack` and `getAvailableVideoTracks` return objects to know when a track contains sign language interpretation
|
|
538
553
|
|
|
539
554
|
### Deprecated
|
|
540
555
|
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
556
|
+
- api: deprecate the `getManifest()` method
|
|
557
|
+
- api: deprecate the `getCurrentAdaptations()` method
|
|
558
|
+
- api: deprecate the `getCurrentRepresentations()` method
|
|
544
559
|
|
|
545
560
|
### Bug fixes
|
|
546
561
|
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
562
|
+
- compat/eme: Set proper EME Safari implementation, to play contents with DRM on it without issues
|
|
563
|
+
- compat/directfile/iOS: On Safari iOS, fix auto-play warnings when a directfile content is played with the `playsinline` attribute set.
|
|
564
|
+
- directfile: In Directfile mode, always disable the current text track when a `null` is encountered in the preferredTextTracks array
|
|
550
565
|
|
|
551
566
|
### Other improvements
|
|
552
567
|
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
568
|
+
- abr: ignore requests that may have directly hit the cache in our adaptive logic
|
|
569
|
+
- dash/perf: improve parsing efficiency for very large MPDs, at the expense of a very small risk of de-synchronization. Mechanisms still allow for regular re-synchronization.
|
|
556
570
|
|
|
557
571
|
## v3.19.0 (2020-03-11)
|
|
558
572
|
|
|
559
573
|
### Features
|
|
560
574
|
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
575
|
+
- dash: handle multiple URL per segment announced through multiple BaseURL elements in the MPD
|
|
576
|
+
- dash/smooth/metaplaylist: add `manifestUpdateUrl` to loadVideo's `transportOptions` to provide a shorter version of the Manifest, used for more resource-efficient Manifest updates
|
|
577
|
+
- tools/createMetaplaylist: add the experimental `createMetaplaylist` tool, which allows to generate Metaplaylist contents from given Manifests
|
|
578
|
+
- tools/TextTrackRenderer: add the optional `language` property to the `setTextTrack` method of the experimental `TextTrackRenderer` tool as it could be needed when parsing SAMI subtitles
|
|
579
|
+
- types: export IAvailableAudioTrack, IAvailableTextTrack and IAvailableVideoTrack types
|
|
580
|
+
- types: export IAudioTrack, ITextTrack and IVideoTrack types
|
|
567
581
|
|
|
568
582
|
### Bug fixes
|
|
569
583
|
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
584
|
+
- dash/smooth: fix segment url resolution when there is query parameters in the Manifest URL and/or segment path, themselves containing "/" characters
|
|
585
|
+
- local-manifest: fix videoElement's duration and `getVideoDuration` for contents in the experimental `local` transport
|
|
586
|
+
- tools/parseBifThumbnails: do not return an un-displayable ArrayBuffer of the whole thing in each `image` property in the experimental `parseBifThumbnails` function
|
|
573
587
|
|
|
574
588
|
### Other improvements
|
|
575
589
|
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
590
|
+
- compat: avoid pushing a segment on top of the current position in Safari, as it can sometime lead to green macro-blocks
|
|
591
|
+
- dash: add multiple performance improvements related to MPD parsing on embedded devices
|
|
592
|
+
- dash/smooth/metaplaylist/local: refresh less often the Manifest when parsing it takes too much time to improve performance
|
|
593
|
+
- smooth: filter unsupported video and audio QualityLevels when parsing a Smooth Manifest
|
|
594
|
+
- build: greatly reduce the time needed to produce a modular build through the `npm run build:modular` script
|
|
595
|
+
- build: remove Object.assign dependency
|
|
583
596
|
|
|
584
597
|
## v3.18.0 (2020-01-30)
|
|
585
598
|
|
|
586
599
|
### Features
|
|
587
600
|
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
601
|
+
- directfile: support most audio tracks API when playing a directfile content
|
|
602
|
+
- directfile: support most text tracks API when playing a directfile content
|
|
603
|
+
- directfile: support most video tracks API when playing a directfile content
|
|
604
|
+
- api: add `seeking` and `seeked` events which announce the beginning and end of a seek, even when seeking to an already buffered part
|
|
605
|
+
- subtitles/ttml: handle styles inheriting other styles in TTML subtitles
|
|
606
|
+
- local-manifest: add experimental `local` transport to allow the playback of downloaded contents (even when offline)
|
|
607
|
+
- tools: add the experimental `TextTrackRenderer` tool to be able to add a custom text track to any content
|
|
608
|
+
- tools: add the experimental `parseBifThumbnails` tool to easily parse thumbnails in the BIF format
|
|
596
609
|
|
|
597
610
|
### Deprecated
|
|
598
611
|
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
612
|
+
- api: deprecate the `supplementaryTextTracks` loadVideo option in profit of the external TextTrackRenderer tool
|
|
613
|
+
- api: aeprecate the `supplementaryImageTracks` loadVideo option in profit of the external parseBifThumbnails tool
|
|
614
|
+
- api: deprecate the `getImageTrackData` method in profit of the external `parseBifThumbnails` tool
|
|
615
|
+
- api: deprecate the `imageTrackUpdate` event in profit of the external `parseBifThumbnails` tool
|
|
616
|
+
- api: deprecate `hideNativeSubtitles` (officially)
|
|
604
617
|
|
|
605
618
|
### Bug fixes
|
|
606
619
|
|
|
607
|
-
|
|
608
|
-
|
|
620
|
+
- subtitles/ttml: Correctly handle alpha information in the rgba values included in a TTML file
|
|
621
|
+
- images/bif: fix sometimes incorrect "ts" value on thumbnails returned by the `getImageTrackData` method and the `imageTrackUpdate` event
|
|
609
622
|
|
|
610
623
|
### Other improvements
|
|
611
624
|
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
625
|
+
- node: allow the RxPlayer to be imported from Node.js for server-side-rendering
|
|
626
|
+
- images/bif: throw a better error when an invalid BIF file is received
|
|
627
|
+
- api: be more "generous" with player events by ditching the deep-equal npm module due to package size and some edge-case behavior
|
|
628
|
+
- demo: avoid re-rendering multiple ui components when unnecessary
|
|
617
629
|
|
|
618
630
|
## v3.17.1 (2019-12-20)
|
|
619
631
|
|
|
620
632
|
### Bug fixes
|
|
621
633
|
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
634
|
+
- dash/metaplaylist: fix infinite rebuffering issue when refreshing multi-Period contents under specific conditions
|
|
635
|
+
- buffer: be less aggressive when garbage collecting subtitles (if the maxBufferAhead/maxBufferBehind options are set) to avoid useful subtitles being removed
|
|
636
|
+
- directfile/compat: for directfile contents, trigger directly the LOADED state on iOS/iPad/iPod browsers as those are not preloaded there
|
|
625
637
|
|
|
626
638
|
### Other improvements
|
|
627
639
|
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
640
|
+
- demo: display clickable "play" button on the video element when autoplay is blocked due to browser policies - to help users unlock the situation
|
|
641
|
+
- demo: add "Other" key system to allow specifying a custom key system in the demo page
|
|
631
642
|
|
|
632
643
|
## v3.17.0 (2019-12-09)
|
|
633
644
|
|
|
634
645
|
### Features
|
|
635
646
|
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
647
|
+
- eme/api: add keySystems.fallbackOn property to `loadVideo` to allow fallbacking to other qualities when encountering various key errors
|
|
648
|
+
- eme/api: allow to set `fallbackOnLastTry` on a `getLicense` Error to be able to fallback on other qualities when a license request is on error
|
|
649
|
+
- eme/api: add `NO_PLAYABLE_REPRESENTATION` `MediaError` for when every video or audio quality cannot be played
|
|
650
|
+
- manifest/api: add `decipherable` property to a Representation object
|
|
651
|
+
- api: add `decipherabilityUpdate` event triggered when a Representation's decipherability status is updated
|
|
652
|
+
- languages/api: add `dub` boolean to audio tracks (through `getAudioTrack` and `getAvailableAudioTracks`) to tell if this is a dubbed track
|
|
653
|
+
- languages/ttml: with TTML subtitles, support length relative to the Computed Cell Size for `tts:fontSize`, `tts:padding`, `tts:extent`, `tts:origin` and `tts:lineHeight`
|
|
654
|
+
- transports/api: add `checkMediaSegmentIntegrity` `transportOptions` to automatically retry media segments which appear corrupted
|
|
655
|
+
- transports/api: add `minimumManifestUpdateInterval` `transportOptions` to limit the Manifest update frequency
|
|
656
|
+
- transports/api: add "progress" callback to a custom segmentLoader to improve adaptive streaming when an external segment loader is used
|
|
646
657
|
|
|
647
658
|
### Bug fixes
|
|
648
659
|
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
660
|
+
- dash/metaplaylist: download the first segment of a new Period when the last downloaded segment from the previous Period ends after that segment ends
|
|
661
|
+
- smooth/metaplaylist: consider `serverSyncInfos` `transportOptions` for Smooth and MetaPlaylist contents
|
|
662
|
+
- buffers: completely clean a previous audio/text track from the SourceBuffer when switching to a different audio/text track
|
|
663
|
+
- dash: avoid requesting an inexistent segment when downloading a multi-Period DASH content with a number-based SegmentTemplate with the `agressiveMode` option set to `true`
|
|
664
|
+
- eme: do not wait for a previous invalid MediaKeySession to be closed before re-creating a valid one for the same content, to work around a widevine issue
|
|
665
|
+
- eme: avoid race condition issue arising when multiple init data are received before the MediaKeys have been attached to the media element
|
|
666
|
+
- dash: do not consider "trickmodes" AdaptationSet as directly playable video tracks
|
|
667
|
+
- directfile: begin directly at the end (instead of the beginning) when setting a `startAt` loadVideo option with a `fromLastPosition` property set to `0` on directfile contents
|
|
668
|
+
- metaplaylist: fix playback for non-live MetaPlaylist contents not starting at a `0` time
|
|
658
669
|
|
|
659
670
|
### Other improvements
|
|
660
671
|
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
672
|
+
- abr: better estimate a lower bitrate after a sudden fall in bandwidth
|
|
673
|
+
- dash/low-latency: properly use @availabilityTimeOffset when playing a low-latency DASH content
|
|
674
|
+
- code: use only strict boolean expressions in the code (do not rely on falsy or truthy values anymore).
|
|
675
|
+
- demo: add buffer content graphs to the demo page to vizualize exactly what have been buffered
|
|
676
|
+
- demo: improve accessibility of the demo page for the english-speaking visually impaired
|
|
677
|
+
- misc: replace uglifyJS by terser for minification purposes
|
|
669
678
|
|
|
670
679
|
## v3.16.1 (2019-10-03)
|
|
671
680
|
|
|
672
681
|
### Bug fixes
|
|
673
682
|
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
683
|
+
- dash: update timeshiftBufferDepth considered when refreshing the MPD
|
|
684
|
+
- dash: fix infinite rebuffering issue when refreshing a Multi-Period MPD with the oldest Periods removed
|
|
685
|
+
- api: go to `"SEEKING"` state instead of `"BUFFERING"` when seeking while the player is in the "BUFFERING" state
|
|
686
|
+
- api: Avoid reinitializing the video, audio and text track choice after a `"RELOADING"` state
|
|
687
|
+
- api: When going back to a Period on which `disableTextTracks` was called, keep the text track disabled even if different `preferredTextTracks` are set
|
|
688
|
+
- smooth: Replace `{CustomAttributes}` token in a segment URL
|
|
689
|
+
- dash: load the last segment of a Period when it is declared in a SegmentTemplate (with no SegmentTimeline) and when its end is exactly equal to the end of the Period
|
|
681
690
|
|
|
682
691
|
### Other improvements
|
|
683
692
|
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
693
|
+
- dash/metaplaylist: be more tolerant with the appendWindows set as the previous behavior could lead to infinite rebuffering and segments re-downloading
|
|
694
|
+
- dash/metaplaylist/smooth: Better handle discontinuities in a VoD content
|
|
695
|
+
- dash/metaplaylist: Handle discontinuities between DASH Periods and between MetaPlaylist contents
|
|
696
|
+
- dash/smooth: Avoid requesting multiple time the last segment when the duration given in the Manifest are inexact
|
|
697
|
+
- smooth: Skip without throwing Manifest's StreamIndex with an unrecognized type
|
|
698
|
+
- dash: Improve prediction of when to update a dynamic MPD with xlinks
|
|
699
|
+
- dash: Be more tolerant of differences between a segment's time announced by the Manifest and the reality to avoid multiple cases of segment re-downloading
|
|
700
|
+
- dash: Guess initialization range for segments defined in a SegmentBase without an Initialization element
|
|
701
|
+
- dash: Throw better error when a sidx with a reference_type `1` is encountered
|
|
702
|
+
- api: Throw a better error when setting a `preferredAudioTracks` or `preferredTextTracks` value in the wrong format
|
|
703
|
+
- demo: Allow to export and share demo links with custom contents
|
|
704
|
+
- demo: Fix video track switching in the demo page
|
|
705
|
+
- demo: Fix spinner not hiding when playing on very specific conditions
|
|
706
|
+
- demo: reset playback rate before loading a content
|
|
699
707
|
|
|
700
708
|
## v3.16.0 (2019-09-16)
|
|
701
709
|
|
|
702
710
|
### Features
|
|
703
711
|
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
712
|
+
- dash: add `lowLatencyMode` `loadVideo` option to play low-latency DASH contents with chunk-encoded CMAF and chunked transfer encoding close to the live edge efficiently
|
|
713
|
+
- metaplaylist: add the experimental `metaplaylist` transport, which allows to smoothly play a concatenation of multiple contents
|
|
714
|
+
- api: add `serverSyncInfos` to `transportOptions` (`loadVideo` option)
|
|
715
|
+
- errors: add `code` property to a `NetworkError` indicating the corresponding HTTP status
|
|
708
716
|
|
|
709
717
|
### Bug fixes
|
|
710
718
|
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
719
|
+
- dash: fix minimum time calculation for Multi-Period MPDs with SegmentTemplate segment indexes but no SegmentTimeline
|
|
720
|
+
- dash: play static MPD not declaring any segment for a time of 0 seconds at the minimum possible time by default
|
|
721
|
+
- dash: fix maximum position calculation for live Multi-Period contents where the currently generated period is not the last one declared in the MPD
|
|
714
722
|
|
|
715
723
|
### Other improvements
|
|
716
724
|
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
725
|
+
- api: authorize to set no `url` to `loadVideo` if the `manifestLoader` `transportOption` is set
|
|
726
|
+
- smooth: the `aggressiveMode` option now only allows requests for segments which had time to at least begin to be generated to avoid too much HTTP 412
|
|
727
|
+
- dash: the `aggressiveMode` now also have an effect for some SegmentTemplate DASH contents (download segments even if they're not finished)
|
|
728
|
+
- code: add pre-commit and pre-push git hooks to automate checking and facilitate bisecting
|
|
729
|
+
- dash: better handle live Multi-Period contents where the currently broadcasted period is not the last one declared in the MPD
|
|
730
|
+
- dash: better infer the end of a Period if the start of the next one is defined
|
|
731
|
+
- api: always start live contents at the live edge if one is defined and not just before the last available segments
|
|
732
|
+
- ci: run integration tests with Travis and appveyor again
|
|
726
733
|
|
|
727
734
|
## v3.15.1 (2019-08-07)
|
|
728
735
|
|
|
729
736
|
### Bug fixes
|
|
730
737
|
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
738
|
+
- api: fix `networkConfig.segmentRetry` `loadVideo` option. Due to a typo, it was forced to the default value (4)
|
|
739
|
+
- api/abr: when the `throttleVideoBitrateWhenHidden` option is set to true, wait 60 seconds (as documented) after the page is hidden before switching to a lower bitrate
|
|
740
|
+
- dash: fix segment indexing for SegmentList-based MPD with a period start different than 0
|
|
734
741
|
|
|
735
742
|
### Other improvements
|
|
736
743
|
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
744
|
+
- dash/smooth: check if the segment should still be available before retrying it (avoid unnecessary HTTP 404 errors)
|
|
745
|
+
- dash/smooth: the Manifest can now be refreshed due to unexpected 404 HTTP errors on a segment request (only on particular conditions)
|
|
746
|
+
- dash: better handle segments overlapping multiple periods by using the data that is only within the concerned Period's bounds
|
|
747
|
+
- demo: authorize to play stored contents with an HTTP Manifest in the HTTPS demo
|
|
742
748
|
|
|
743
749
|
## v3.15.0 (2019-07-24)
|
|
744
750
|
|
|
745
751
|
### Features
|
|
746
752
|
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
753
|
+
- eme: add `getLicenseConfig` property to the `keySystems` `loadVideo` option, to be able to have much more control over getLicense's behavior
|
|
754
|
+
- eme: add `noRetry` to `getLicense` errors to abort retries when the licence request fails
|
|
755
|
+
- eme: add `message` to `getLicense` and `onKeyStatusesChange` errors to allow custom errors when the license request fails
|
|
756
|
+
- eme: add a new `ENCRYPTED_MEDIA_ERROR` with the code `CREATE_MEDIA_KEYS_ERROR` for when we cannot create a MediaKeys instance (seen on some Android devices).
|
|
751
757
|
|
|
752
758
|
### Bug fixes
|
|
753
759
|
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
760
|
+
- api: avoid sending {audio,video...}BitrateChange with a `-1` value when starting to play a content
|
|
761
|
+
- api/abr: a call to `setAudioBitrate` or `setVideoBitrate` could be ignored for a content if it was still loading. This is now fixed.
|
|
762
|
+
- api/abr: a call to `setMaxAutoBitrate` or `setMaxVideoBitrate` could be ignored for a content if it was still loading. This is now fixed.
|
|
763
|
+
- dash: fix maximum position calculation when refreshing a live MPD with a UTCTiming element and no SegmentTimeline.
|
|
764
|
+
- dash/smooth: a MPD/Manifest request failing could still be retried when loading another content
|
|
765
|
+
- eme/compat: on Safari, depend on WebKitMediaKeys even if MediaKeys is defined because of differences of implementations
|
|
766
|
+
- pipelines: always send `PIPELINE_LOAD_ERROR` warnings when a segment request or a Manifest request is retried
|
|
767
|
+
- errors: replace undocumented `PIPELINE_RESOLVE_ERROR` code into the proper documented `PIPELINE_LOAD_ERROR` code
|
|
768
|
+
- errors: replace undocumented `PIPELINE_PARSING_ERROR` code into the proper documented `PIPELINE_PARSE_ERROR` code
|
|
769
|
+
- errors: add to the `ErrorCodes` static property the previously forgotten `NONE`, `INVALID_KEY_SYSTEM` and `INVALID_ENCRYPTED_EVENT` codes.
|
|
764
770
|
|
|
765
771
|
### Other improvements
|
|
766
772
|
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
+
- abr: make use of another adaptive algorithm, buffer-based, when enough buffer has been built.
|
|
774
|
+
- demo: allow the user to save custom contents to local storage to be able to reuse them when the page is refreshed
|
|
775
|
+
- eme: throw a better error in `onKeyStatusesChange` if the Promise is rejected without an Error
|
|
776
|
+
- errors: refactore error management to better correlate the `fatal` boolean to a playback stop and to better ensure a documented error is always thrown
|
|
777
|
+
- scripts: make our build script compatible with MacOS (handle BSD sed)
|
|
773
778
|
|
|
774
779
|
## v3.14.0 (2019-06-26)
|
|
775
780
|
|
|
776
781
|
### Features
|
|
777
782
|
|
|
778
|
-
|
|
783
|
+
- api/abr: add `throttleVideoBitrateWhenHidden` which unlike `throttleWhenHidden` does not throttle the video bitrate if the media element is in picture-in-picture mode
|
|
779
784
|
|
|
780
785
|
### Deprecated
|
|
781
786
|
|
|
782
|
-
|
|
787
|
+
- api/abr: deprecate `throttleWhenHidden` in profit of `throttleVideoBitrateWhenHidden` which has a better API definition for some edge cases
|
|
783
788
|
|
|
784
789
|
### Bug fixes
|
|
785
790
|
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
791
|
+
- api/abr: `limitVideoWidth` now also considers if the video is in picture-in-picture mode
|
|
792
|
+
- buffer: better prevent the `BUFFER_FULL_ERROR` `MediaError` on some memory-constrained devices
|
|
793
|
+
- dash: consider the buffer depth as infinite (until `availabilityStartTime`) if the `timeShiftBufferDepth` is not set
|
|
794
|
+
- smooth: consider the buffer depth as infinite if the `DVRWindowLength` is not set or set to 0
|
|
795
|
+
- init: start live contents that just began (less than 10 seconds ago) at the minimum position instead of throwing a STARTING_TIME_NOT_FOUND MEDIA_ERROR.
|
|
796
|
+
- tests: use web server (local by default) instead of stubbed XHRs to serve tests contents to our integration and memory tests
|
|
793
797
|
|
|
794
798
|
## v3.13.0 (2019-05-15)
|
|
795
799
|
|
|
796
800
|
### Features
|
|
797
801
|
|
|
798
|
-
|
|
802
|
+
- eme: add `disableMediaKeysAttachmentLock` key system option to bypass a deadlock (with possible tradeoffs) when playing encrypted contents on some peculiar devices
|
|
799
803
|
|
|
800
804
|
### Bug fixes
|
|
801
805
|
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
806
|
+
- dash/smooth: never rely on Date.now when calculating time differences to avoid issues when the user adjusts the system clock while playing a live content
|
|
807
|
+
- eme: throw a better error (avoid `toString is not a function` messages) for a `KEY_LOAD_ERROR` when the `getLicense` function provided fails without a proper error
|
|
808
|
+
- api: fix rare situation with DASH multi-period contents where we reported no available bitrate, Adaptation nor Representation when switching to another Period.
|
|
805
809
|
|
|
806
810
|
### Other improvements
|
|
807
811
|
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
+
- eme: add other default contentTypes when calling requestMediaKeySystemAccess to improve device support
|
|
813
|
+
- demo: update the demo UI
|
|
814
|
+
- code: change indentation style of a big chunk of the code to increase readability
|
|
812
815
|
|
|
813
816
|
## v3.12.0 (2019-04-10)
|
|
814
817
|
|
|
815
818
|
### Features
|
|
816
819
|
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
+
- dash: add UTCTiming support
|
|
821
|
+
- smooth: add `aggressiveMode` transportOption to requests segments in advance
|
|
822
|
+
- dash/smooth: add `referenceDateTime` transportOption to set a default reference time for live contents
|
|
820
823
|
|
|
821
824
|
### Bug fixes
|
|
822
825
|
|
|
823
|
-
|
|
826
|
+
- buffer: work around firefox bug leading to infinite rebuffering when seeking many times in a content
|
|
824
827
|
|
|
825
828
|
### Other improvements
|
|
826
829
|
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
830
|
+
- dash/smooth: add optional `url`, `sendingTime` and `receivingTime` properties in the response given by manifestLoader transportOption
|
|
831
|
+
- misc: deploy documentation pages and demos from our previous versions
|
|
832
|
+
- misc: add new RxPlayer logo to README.md and the demo
|
|
831
833
|
|
|
832
834
|
## v3.11.1 (2019-03-11)
|
|
833
835
|
|
|
834
836
|
### Bug fixes
|
|
835
837
|
|
|
836
|
-
|
|
837
|
-
|
|
838
|
+
- npm: publish package again. An error in the previous release led to some files missing on npm
|
|
838
839
|
|
|
839
840
|
## v3.11.0 (2019-03-07)
|
|
840
841
|
|
|
841
842
|
### Features
|
|
842
843
|
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
844
|
+
- languages/api: add `preferredAudioTracks` and `preferredTextTracks` player options
|
|
845
|
+
- languages/api: add `setPreferredAudioTracks`, `getPreferredAudioTracks`, `setPreferredTextTracks` and `getPreferredTextTracks` methods
|
|
846
|
+
- languages/api: add `availableAudioTracksChange`, `availableTextTracksChange` and `availableVideoTracksChange` events
|
|
847
|
+
- abr/api: add `availableAudioBitratesChange` and `availableVideoBitratesChange` events
|
|
848
|
+
- eme: allow playback of mixed encrypted and unencrypted contents on Chrome
|
|
849
|
+
- types: export the new `IAudioTrackPreference` and `ITextTrackPreference` types
|
|
849
850
|
|
|
850
851
|
### Deprecated
|
|
851
852
|
|
|
852
|
-
|
|
853
|
-
|
|
853
|
+
- languages/api: deprecate the `defaultAudioTrack` `loadVideo` option in favor of the `preferredAudioTracks` player option.
|
|
854
|
+
- languages/api: deprecate the `defaultTextTrack` `loadVideo` option in favor of the `preferredTextTracks` player option.
|
|
854
855
|
|
|
855
856
|
### Bug fixes
|
|
856
857
|
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
858
|
+
- dash: fix `minimumUpdatePeriod` management for DASH contents
|
|
859
|
+
- smooth: better prevent 412 HTTP errors for smooth streaming contents
|
|
860
|
+
- subtitles: ensure subtitles are not visible in Firefox when disabling them in the `"native"` textTrack mode.
|
|
861
|
+
- errors: avoid sending multiple `MEDIA_TIME_BEFORE_MANIFEST` or `MEDIA_TIME_AFTER_MANIFEST` warnings instead of just one
|
|
862
|
+
- api: fix (deprecated) option `hideNativeSubtitles`
|
|
862
863
|
|
|
863
864
|
### Other improvements
|
|
864
865
|
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
866
|
+
- errors: set a readable error message for every error and warnings thrown
|
|
867
|
+
- tools/mediaCapabilitiesProber: set logs about unimportant missing APIs as debug-level instead of warn-level
|
|
868
|
+
- types: provide type safety to `addEventListener` and `removeEventListener`
|
|
869
869
|
|
|
870
870
|
## v3.10.3 (2019-01-30)
|
|
871
871
|
|
|
872
872
|
### Bug fixes
|
|
873
873
|
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
874
|
+
- dash/api: fix `getMinimumPosition` for MPDs with an availabilityStartTime superior to unix epoch
|
|
875
|
+
- smooth: be more tolerant on downloaded segments (accept ISOBMFF with boxes in any order)
|
|
876
|
+
- buffers/abr: fix issue infrequently leading to a delay in quality changes
|
|
877
|
+
- buffers: improve synchronisation to the SourceBuffer's buffer to avoid cases where the same segment could be downloaded multiple times
|
|
878
|
+
- subtitles: fix bug in the clean-up logic of subtitles in the `"html"` texttrack mode that would lead to removed subtitles still being displayed
|
|
879
|
+
- pipelines: retry a segment request with a backoff instead of stopping when receiving a HTTP 412
|
|
880
|
+
- compat/subtitles: work-around firefox issue in the `"native"` texttrack mode to ensure track cues are removed when the content is stopped
|
|
881
|
+
- subtitles/webvtt: support default classes in the WebVTT specification
|
|
882
|
+
- subtitles/webvtt: multiple styles for the same element are now merged into one (instead of considering only the last one)
|
|
883
|
+
- subtitles/webvtt: fix styling issues when both styles applied globally and styles applied on a selector are defined
|
|
884
|
+
- subtitles/webvtt: do not remove whitespaces in styles to keep a sane formatting for some complex values
|
|
885
885
|
|
|
886
886
|
### Other improvements
|
|
887
887
|
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
888
|
+
- dash: warn through logs when fields are not in the expected format
|
|
889
|
+
- drm: throw more explicative error messages when DRM are not supported in the current target
|
|
890
|
+
- dash/smooth: get more precize duration from ISOBMFF by better handling the default duration taken from the tfhd box
|
|
891
|
+
- tests: continue unit test coverage improvements (from 22% in the `v3.10.2` to 33.6%)
|
|
892
|
+
- demo: fix initial text-track selection
|
|
894
893
|
|
|
895
894
|
## v3.10.2 (2019-01-08)
|
|
896
895
|
|
|
897
896
|
### Bug fixes
|
|
898
897
|
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
898
|
+
- dash/smooth: fix manifest updates for some DASH contents (SegmentTimeline without SegmentTemplate) and for some Smooth usages
|
|
899
|
+
- compat/drm: adopt a new strategy for malfunctioning CENC PSSH on Edge by moving them at the end of the initialization data
|
|
900
|
+
- dash/smooth: update deprecated Manifest.adaptations property when updating the manifest
|
|
903
901
|
|
|
904
902
|
## Other improvements
|
|
905
903
|
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
904
|
+
- dash: refresh the MPD less often
|
|
905
|
+
- dash/smooth: improve precision of `getMaximumPosition` when the Manifest is updated
|
|
906
|
+
- tests: use the Jest library for unit tests
|
|
907
|
+
- tests: add a lot of unit tests to sensitive code (from a coverage of 13% in the v3.10.1 to 22% in the v3.10.2)
|
|
908
|
+
- npm: reduce size of the npm package
|
|
912
909
|
|
|
913
910
|
## v3.10.1 (2019-01-03)
|
|
914
911
|
|
|
915
912
|
### Bug fixes
|
|
916
913
|
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
914
|
+
- abr: always consider the last quality estimation
|
|
915
|
+
- drm: work-arround Edge bug where the browser does not accept a valid CENC PSSH (DRM-related information in an ISOBMFF)
|
|
916
|
+
- dash: handle `S` nodes (segments) with an @r attribute at `-1` in an MPD
|
|
917
|
+
- dash: handle `SegmentTimeline` which have as a first `S` node (segment) an undefined @t attribute in an MPD
|
|
918
|
+
- dash: Representation.index.getLastPosition() for SegmentBase-based DASH Representations now returns the end of the last segment (it returned the start of the last segment before)
|
|
919
|
+
- dash/smooth: throw better error (`MANIFEST_PARSE_ERROR`) if none of the audio or video tracks of a content can be played (e.g. none have supported codecs)
|
|
923
920
|
|
|
924
921
|
### Other improvements
|
|
925
922
|
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
923
|
+
- manifest: better infer the minimum time of a Manifest
|
|
924
|
+
- code: refresh code architecture (rename and move modules, remove some dependencies...)
|
|
925
|
+
- tests: add coverage reports for both unit and "integration" tests, to check where tests are lacking and better pin down our hot-spots
|
|
926
|
+
- tests: add appveyor countinous integration service for unit tests
|
|
931
927
|
|
|
932
928
|
## v3.10.0 (2018-12-11)
|
|
933
929
|
|
|
934
930
|
### Features
|
|
935
931
|
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
932
|
+
- dash: Manage xlinks in "onLoad" resolution model
|
|
933
|
+
- dash: Implement AdaptationSet switching by merging similar and switchable AdaptationSet into a single track
|
|
934
|
+
- compat: add `MEDIA_ERR_METADATA_NOT_LOADED` warning, triggered when the browser has issues with loading the initial data (only seen on the Samsung mobile browser in directfile mode)
|
|
935
|
+
- compat: add `MEDIA_ERR_PLAY_NOT_ALLOWED` warning, triggered when the application tries to `play` but the current browser doesn't allow it (often due to autoplay policy)
|
|
936
|
+
- api: the `play` API now returns a Promise, mirroring the original browser's `play` API
|
|
941
937
|
|
|
942
938
|
### Deprecated
|
|
943
939
|
|
|
944
|
-
|
|
940
|
+
- api: The `xhr` property from a `NetworkError` is now deprecated
|
|
945
941
|
|
|
946
942
|
### Bug fixes
|
|
947
943
|
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
944
|
+
- compat/smooth: fix fatal error `BUFFER_APPEND_ERROR` happening on some HSS contents with Edge
|
|
945
|
+
- dash/smooth: never refresh the manifest if its content is not dynamic
|
|
946
|
+
- dash/smooth: use new URL if the initial manifest request is redirected (again :/ - thanks @fnatte)
|
|
947
|
+
- api: do not go out of the `LOADING` state if the metadata could not be fetched (even if the browser tells us otherwise) - to work around Samsung Browser bug
|
|
948
|
+
- api: avoid going out of the `LOADED` state until the initial seek is done and metadata is fetched
|
|
949
|
+
- compat: use Promise ponyfill to improve IE11 compatibility with the MediaCapabilitiesProber and some EME functionalities
|
|
950
|
+
- api: translate most IETF language tags into corresponding ISO639-3 codes for the `normalizedLanguage` property - given from APIs such as `getAvailableAudioTracks`
|
|
951
|
+
- tools: fix `mediaCapabilitiesProber.getCompatibleDRMConfigurations` experimental tool on Safari
|
|
952
|
+
- api: filter out duplicates in `getAvailableVideoBitrates` and `getAvailableAudioBitrates`
|
|
957
953
|
|
|
958
954
|
### Other improvements
|
|
959
955
|
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
956
|
+
- dash: better infer unknown Period durations
|
|
957
|
+
- dash: better manage overlapping Periods by giving more importance to the last chronological one
|
|
958
|
+
- memory: clean-up `Adaptation` and `Representation` information on Periods which are not considered anymore
|
|
959
|
+
- log: warn through our logs every time a warning event is sent by the API
|
|
960
|
+
- demo: authorize DRMs in IE11 or Safari when in HTTP in the demo page
|
|
961
|
+
- demo: fix time indication for non-live contents
|
|
967
962
|
|
|
968
963
|
## v3.9.3 (2018-11-23)
|
|
969
964
|
|
|
970
965
|
### Bug fixes
|
|
971
966
|
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
967
|
+
- compat: fix `undefined Object.values function` issue happening in some older browsers (mainly encountered in IE11 and old webkit versions)
|
|
968
|
+
- compat: remove side-effects relative to DRM on Safari
|
|
969
|
+
- tools: fix issue about an undefined Array.prototype.find method in some older browsers when calling mediaCapabilitiesProber.getCompatibleDRMConfigurations (mainly encountered in IE11)
|
|
975
970
|
|
|
976
971
|
### Other improvements
|
|
977
972
|
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
973
|
+
- eme: activate MediaKeys caching on Edge
|
|
974
|
+
- compat: add in our validation process a ban of methods and functions unavailable in older browsers
|
|
975
|
+
- tests/smooth: reinforce our Smooth Streaming integration tests
|
|
982
976
|
|
|
983
977
|
## v3.9.2 (2018-11-14)
|
|
984
978
|
|
|
985
979
|
### Bug fixes
|
|
986
980
|
|
|
987
|
-
|
|
988
|
-
|
|
981
|
+
- smooth: authorize empty tracks ("StreamIndex") in Smooth manifests
|
|
989
982
|
|
|
990
983
|
## v3.9.1 (2018-11-13)
|
|
991
984
|
|
|
992
985
|
### Bug fixes
|
|
993
986
|
|
|
994
|
-
|
|
995
|
-
|
|
987
|
+
- smooth: fix issue preventing emergency manifest updates
|
|
988
|
+
- dash: fix timeout for minimumUpdatePeriod in cases where the time at which the manifest was last requested is not known (like when setting a customManifestLoader argument)
|
|
996
989
|
|
|
997
990
|
### Other improvements
|
|
998
991
|
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
992
|
+
- smooth: keep supplementary segment information when updating the manifest
|
|
993
|
+
- smooth: when updating segment information, perform garbage-collection of those concerning unreachable segments
|
|
1002
994
|
|
|
1003
995
|
## v3.9.0 (2018-11-08)
|
|
1004
996
|
|
|
1005
997
|
### Features
|
|
1006
998
|
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
999
|
+
- dash: consider `minimumUpdatePeriod` attribute in MPDs
|
|
1000
|
+
- buffer: add codec-switching for browsers supporting the `SourceBuffer.prototype.changeType` API
|
|
1001
|
+
- dash/smooth: accept and parse segments with a "stpp.ttml.im1t" codec (TTML IMSC1 in MP4)
|
|
1010
1002
|
|
|
1011
1003
|
### Bug fixes
|
|
1012
1004
|
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1005
|
+
- smooth: fix calculations of the initial time, duration and minimum position for HSS VOD contents not starting at a '0' time
|
|
1006
|
+
- buffer: fix priority updates for segment requests
|
|
1007
|
+
- dash: calculate VOD duration from the last period if undefined in the MPD's root
|
|
1008
|
+
- dash: remove possibility of obtaining two periods with the same id
|
|
1009
|
+
- typings: make `manualBitrateSwitchingMode` `loadVideo` option an optional TypeScript typing (thanks @fnatte again!)
|
|
1018
1010
|
|
|
1019
1011
|
### Other improvements
|
|
1020
1012
|
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
1013
|
+
- abr: do not always cancel pending requests when switching to a new bitrate
|
|
1014
|
+
- abr: re-estimate the bandwidth immediately after each request
|
|
1015
|
+
- buffer: remove automatic garbage-collection of the "image" source-buffer (its rules should be more complex than those in place)
|
|
1016
|
+
- tools/mediaCapabilitiesProber: Make `getCompatibleDRMConfigurations` work under IE11 and old webkit versions
|
|
1017
|
+
- tools/mediaCapabilitiesProber: Add a multitude of bug fixes to the experimental mediaCapabilitiesProber
|
|
1018
|
+
- package: divide by more than 2 the size of our package published in `npm` (thanks @necccc)
|
|
1019
|
+
- tests: add memory tests to detect memory leaks
|
|
1020
|
+
- demo: add 'favicon' to the demo page
|
|
1030
1021
|
|
|
1031
1022
|
## v3.8.1 (2018-10-17)
|
|
1032
1023
|
|
|
1033
1024
|
### Bug fixes
|
|
1034
1025
|
|
|
1035
|
-
|
|
1036
|
-
|
|
1026
|
+
- abr: fix memory leak in ABR Management
|
|
1027
|
+
- eme: avoid re-attaching a server certificate at each encrypted event
|
|
1037
1028
|
|
|
1038
1029
|
### Other improvements
|
|
1039
1030
|
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1031
|
+
- buffer: lower the "paddings" applied to the video buffer when raising the quality
|
|
1032
|
+
- abr: when pratical, avoid relying on the "Content-Length" header to protect against miscalculations when downloading from misconfigured servers
|
|
1033
|
+
- abr: lower the minimum number of bytes we wait to download before we evaluate the bandwidth
|
|
1034
|
+
- abr: use performance.now instead of Date.now for better precision
|
|
1035
|
+
- module: move express from the dependencies to the devDependencies
|
|
1036
|
+
- demo: fix standalone demo and add possibility to launch it via HTTPS
|
|
1047
1037
|
|
|
1048
1038
|
## v3.8.0 (2018-10-11)
|
|
1049
1039
|
|
|
1050
1040
|
### Features
|
|
1051
1041
|
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1042
|
+
- api/dash/smooth: add representationFilter API to prevent Representations (i.e. media qualities) from being played
|
|
1043
|
+
- api/buffer: add `manualBitrateSwitchingMode` option to allow a direct representation switch when calling `setVideoBitrate` and `setAudioBitrate`
|
|
1044
|
+
- api/buffer: emit a `MEDIA_TIME_BEFORE_MANIFEST` warning when the wanted time is before what is announced in the manifest
|
|
1045
|
+
- api/buffer: emit a `MEDIA_TIME_AFTER_MANIFEST` warning when the wanted time is after what is announced in the manifest
|
|
1056
1046
|
|
|
1057
1047
|
### Bug fixes
|
|
1058
1048
|
|
|
1059
|
-
|
|
1049
|
+
- remove export of undeclared `ICompatVTTCue` from modular build
|
|
1060
1050
|
|
|
1061
1051
|
### Other improvements
|
|
1062
1052
|
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
|
|
1053
|
+
- buffer: to avoid taking too much memory, regularly clean-up text and image buffer 5 hours ahead/behind the current position (customizable)
|
|
1054
|
+
- demo: add HTTPS capabilities on local full demo
|
|
1055
|
+
- rxjs: update rxjs to 6.3.3
|
|
1056
|
+
- typescript: update typescript to 3.1.2
|
|
1068
1057
|
|
|
1069
1058
|
## v3.7.0 (2018-09-21)
|
|
1070
1059
|
|
|
1071
1060
|
### Features
|
|
1072
1061
|
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1062
|
+
- eme: add `throwOnLicenseExpiration` boolean to `keySystems` (`loadVideo` option) to allow better expiration management
|
|
1063
|
+
- eme: in the `getLicense` property of `keySystems` (`loadVideo` option), it is now possible to resolve with `null` to avoid a license update.
|
|
1064
|
+
- eme: in the `onKeyStatusesChange` property of `keySystems` (`loadVideo` option), it is now possible to resolve with `null` to avoid a license update.
|
|
1065
|
+
- tools: replace experimental tool `mediaCapabilitiesProber.isDRMSupported` by the more useful `mediaCapabilitiesProber.getCompatibleDRMConfigurations`
|
|
1077
1066
|
|
|
1078
1067
|
### Deprecated
|
|
1079
1068
|
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1069
|
+
- smooth: giving a WSX URL instead of the Manifest URL for a smooth content is now deprecated.
|
|
1070
|
+
- smooth: giving a _publishing point definition_ URL (.isml) instead of the Manifest URL for a smooth content is now deprecated.
|
|
1071
|
+
- smooth: giving a _Smooth Streaming server manifest_ URL (.ism) instead of the Manifest URL for a smooth content is now deprecated.
|
|
1083
1072
|
|
|
1084
1073
|
### Bug fixes
|
|
1085
1074
|
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
|
|
1075
|
+
- api: switch state to "ENDED" if seeking to the end while the player is in the "LOADED" state.
|
|
1076
|
+
- api: switch state to "SEEKING" if seeking in the content while the player is in the "LOADED" state.
|
|
1077
|
+
- dash: consider multiple `Role` nodes for an AdaptationSet.
|
|
1078
|
+
- typescript: fix typings error when an application build us without the `skipLibCheck` TypeScript option enabled.
|
|
1079
|
+
- smooth: fix Manifest URL generation when a ".ism" or a ".isml" URL is given.
|
|
1080
|
+
- doc: document deprecation of the `adaptations` property returned from a `Manifest` object (as returned from the `getManifest` method).
|
|
1092
1081
|
|
|
1093
1082
|
### Other improvements
|
|
1094
1083
|
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
|
|
1084
|
+
- doc: add quick start tutorial.
|
|
1085
|
+
- doc: add player states documentation.
|
|
1086
|
+
- demo: add possibility to play encrypted contents.
|
|
1087
|
+
- demo: update demo page.
|
|
1088
|
+
- tests: consolidate our integration tests.
|
|
1101
1089
|
|
|
1102
1090
|
## v3.6.1 (2018-09-03)
|
|
1103
1091
|
|
|
1104
1092
|
### Bug fixes
|
|
1105
1093
|
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
|
|
1094
|
+
- directfile: send `LOADED` event again for directfile contents - thanks @Fnatte
|
|
1095
|
+
- dash: don't merge "main" AdaptationSet if they are not of a video type
|
|
1096
|
+
- eme: fix bug which prevented the `closeSessionsOnStop` keySystem option to work properly
|
|
1097
|
+
- typescript: export types compatible with project references
|
|
1111
1098
|
|
|
1112
1099
|
### Other improvements
|
|
1113
1100
|
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1101
|
+
- directfile/tests: add basic directfile integration tests
|
|
1102
|
+
- build: update to Babel 7
|
|
1103
|
+
- rxjs: update to RxJS 6.3.1
|
|
1118
1104
|
|
|
1119
1105
|
## v3.6.0 (2018-08-24)
|
|
1120
1106
|
|
|
1121
1107
|
### Features
|
|
1122
|
-
|
|
1123
|
-
|
|
1124
|
-
|
|
1125
|
-
|
|
1126
|
-
|
|
1127
|
-
|
|
1128
|
-
|
|
1129
|
-
|
|
1108
|
+
|
|
1109
|
+
- api: add video track switching
|
|
1110
|
+
- dash: add webm support
|
|
1111
|
+
- api: Emit warning if autoPlay is blocked on the current browser
|
|
1112
|
+
- api: add `getAvailableVideoTracks` method to retrieve every video tracks
|
|
1113
|
+
- api: add `getVideoTrack` method to get the active video track
|
|
1114
|
+
- api: add `setVideoTrack` method to switch the video track
|
|
1115
|
+
- api: add `videoTrackChange` event to know when a video track has been switched
|
|
1116
|
+
- api: add `RELOADING` event for cases where the player needs to reload (such as during a video track switch)
|
|
1130
1117
|
|
|
1131
1118
|
### Deprecated
|
|
1132
1119
|
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
|
|
1138
|
-
|
|
1120
|
+
- api: the method `isFullscreen` has been deprecated
|
|
1121
|
+
- api: the method `setFullscreen` has been deprecated
|
|
1122
|
+
- api: the method `exitFullscreen` has been deprecated
|
|
1123
|
+
- api: the method `getNativeTextTrack` has been deprecated
|
|
1124
|
+
- api: the event `fullscreenChange` has been deprecated
|
|
1125
|
+
- api: the event `nativeTextTrackChange` has been deprecated
|
|
1139
1126
|
|
|
1140
1127
|
### Bug Fixes
|
|
1141
1128
|
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1129
|
+
- ttml: display forbidden characters (such as ">") in a `"native"` `textTrackMode`
|
|
1130
|
+
- ttml: process `xml:space` even if it is not defined at the top level
|
|
1131
|
+
- buffer: perform a better clean-up of previous media in a SourceBuffer when switching audio or text track
|
|
1132
|
+
- manifest/dash: throw a MANIFEST_PARSE_ERROR when no AdaptationSet of a given type in a Period is in a compatible codec
|
|
1146
1133
|
|
|
1147
1134
|
### Other improvements
|
|
1148
1135
|
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
|
|
1136
|
+
- types: export and document main typings used internally such as ILoadVideoOptions (the loadVideo argument)
|
|
1137
|
+
- misc: log every fatal errors
|
|
1138
|
+
- misc: remove dumb npm inclusion as a project dependency
|
|
1139
|
+
- doc: improve architecture documentation
|
|
1154
1140
|
|
|
1155
1141
|
## v3.5.2 (2018-08-06)
|
|
1156
1142
|
|
|
1157
1143
|
### Bug fixes
|
|
1158
1144
|
|
|
1159
|
-
-
|
|
1160
|
-
-
|
|
1161
|
-
-
|
|
1162
|
-
-
|
|
1145
|
+
- dash: Manage presentationTimeOffset completely (allow advanced multi-period configurations)
|
|
1146
|
+
- dash: Fix Adaptations bug when the first DASH adaptation was a "main" one
|
|
1147
|
+
- smooth: Remove the limitation of a minimum bitrate in Smooth Streaming
|
|
1148
|
+
- dash: Fix condition which prevented to play audio-only live DASH streams
|
|
1163
1149
|
|
|
1164
1150
|
### Other improvements
|
|
1165
1151
|
|
|
1166
|
-
-
|
|
1167
|
-
-
|
|
1168
|
-
-
|
|
1169
|
-
-
|
|
1170
|
-
-
|
|
1171
|
-
|
|
1152
|
+
- typescript: add typescript declaration files
|
|
1153
|
+
- abr: update ABR mechanisms when the estimated bandtwidth fall suddenly
|
|
1154
|
+
- api: warn in the log when the browser reject a wanted autoplay
|
|
1155
|
+
- drm: Add keyId information to the internal Manifest structure
|
|
1156
|
+
- typescript: update typescript to v3.0.1
|
|
1172
1157
|
|
|
1173
1158
|
## v3.5.1 (2018-07-11)
|
|
1174
1159
|
|
|
1175
1160
|
### Bug fixes
|
|
1176
1161
|
|
|
1177
|
-
|
|
1178
|
-
|
|
1162
|
+
- parsers: fix wrong computation of segment time in template index
|
|
1163
|
+
- abr: get concerned request in starvation mode
|
|
1179
1164
|
|
|
1180
1165
|
## v3.5.0 (2018-07-03)
|
|
1181
1166
|
|
|
1182
1167
|
### Added
|
|
1183
1168
|
|
|
1184
|
-
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
|
-
|
|
1169
|
+
- tools: add `mediaCapabilitiesProber` tool as an experimental tool
|
|
1170
|
+
- builds: add minimal import with feature selection (allowing cleaner feature switching or lazy-loading)
|
|
1171
|
+
- dash: allow multiple "main" adaptation
|
|
1172
|
+
- api: add static `version` property to the RxPlayer API
|
|
1188
1173
|
|
|
1189
1174
|
### Bug fixes
|
|
1190
1175
|
|
|
1191
|
-
|
|
1192
|
-
|
|
1193
|
-
|
|
1194
|
-
|
|
1195
|
-
|
|
1176
|
+
- vtt: fix `line` setting for vtt tracks in `"native"` textTrackMode
|
|
1177
|
+
- dash: always play "main" adaptation first
|
|
1178
|
+
- misc: don't interfere with a client's RxJS implementation by switching to RxJS 6
|
|
1179
|
+
- dash: presentationTimeOffset doesn't have an influence on requested segment anymore
|
|
1180
|
+
- smooth/dash: throw a `"MANIFEST_PARSE_ERROR"` if no audio and video adaptations/StreamIndex are available in the current content
|
|
1196
1181
|
|
|
1197
1182
|
### Other improvements
|
|
1198
1183
|
|
|
1199
|
-
|
|
1200
|
-
|
|
1201
|
-
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
|
|
1206
|
-
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
|
|
1210
|
-
|
|
1184
|
+
- builds: Reduce size of the builds
|
|
1185
|
+
- builds: use uglifyJS instead of Closure-compiler
|
|
1186
|
+
- builds: update to typescript 2.9
|
|
1187
|
+
- rxjs: update to RxJS version 6 (v6.2.1)
|
|
1188
|
+
- code: set complete URL in segment's media property
|
|
1189
|
+
- demo: add time indicator on the progress bar
|
|
1190
|
+
- demo: update fullscreen mode to also display the text track element
|
|
1191
|
+
- misc: moved demo server scripts to the respective demo directories
|
|
1192
|
+
- misc: moved manifest parsers to the `src/parsers` directory
|
|
1193
|
+
- misc: moved scripts from `./tools` to `./scripts`
|
|
1194
|
+
- misc: moved webpack configs to the root of the project
|
|
1211
1195
|
|
|
1212
1196
|
## v3.4.1 (2018-05-31)
|
|
1213
1197
|
|
|
1214
1198
|
### Bug fixes
|
|
1215
1199
|
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
|
|
1222
|
-
|
|
1200
|
+
- buffer: fix several bugs happening when calling `endOfStream` to announce the end of the current content. Especially prevalent on Chrome.
|
|
1201
|
+
- net: use redirected URL as a base for further requests when the manifest request led to a HTTP redirect.
|
|
1202
|
+
- vtt/srt: ignore silently (do not throw) when an unknown block has been detected in a vtt or srt file
|
|
1203
|
+
- vtt/srt: support styling spans (like b, i and u XML tags) spanning multiple lines
|
|
1204
|
+
- api: `getAvailableTextTracks` and `getAvailableAudioTracks` now always return an array (and never null) as announced in the API documentation
|
|
1205
|
+
- api: set default log level to `"NONE"` instead of `"INFO"`
|
|
1206
|
+
- misc: remove development-only code from the non-minified code
|
|
1223
1207
|
|
|
1224
1208
|
### Other improvements
|
|
1225
1209
|
|
|
1226
|
-
|
|
1227
|
-
|
|
1210
|
+
- misc: move some dev dependencies from `dependencies` to `devDependencies` in `package.json`
|
|
1228
1211
|
|
|
1229
1212
|
## v3.4.0 (2018-05-17)
|
|
1230
1213
|
|
|
1231
1214
|
### Added
|
|
1232
1215
|
|
|
1233
|
-
|
|
1234
|
-
|
|
1216
|
+
- eme: allow multiple licenses per content
|
|
1217
|
+
- eme: allow different MediaKeys to be attached on multiple media elements
|
|
1235
1218
|
|
|
1236
1219
|
### Bug fixes
|
|
1237
1220
|
|
|
1238
|
-
|
|
1239
|
-
|
|
1240
|
-
|
|
1221
|
+
- eme: limit simultaneous loaded MediaKeySession to 50 by default (configurable)
|
|
1222
|
+
- source-buffer: clean properly the text SourceBuffer on deactivation
|
|
1223
|
+
- buffer: perform discontinuity seeks only for native source buffers
|
|
1241
1224
|
|
|
1242
1225
|
### Other improvements
|
|
1243
1226
|
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
|
|
1227
|
+
- doc: generate documentation pages
|
|
1228
|
+
- misc: add sonarqube quality pass
|
|
1229
|
+
- code: set a clearer private state for the API
|
|
1230
|
+
- tools: update to webpack v4.8.3
|
|
1231
|
+
- tools: update to typescript v2.8.3
|
|
1250
1232
|
|
|
1251
1233
|
## v3.3.2 (2018-04-17)
|
|
1252
1234
|
|
|
1253
1235
|
### Bug Fixes
|
|
1254
1236
|
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
|
|
1258
|
-
|
|
1259
|
-
|
|
1237
|
+
- api: emit SEEKING state instead of BUFFERING when the user seeks to an unbuffered part just after resuming playback
|
|
1238
|
+
- api: work around bug found in old versions of Chrome where the ENDED state would never be triggered at the end of the stream
|
|
1239
|
+
- api/language: fix bug where an audio or text language would not be switched to on certain conditions in live contents
|
|
1240
|
+
- smooth: fix frequent manifest refreshing happening immediately when changing audio/text language
|
|
1241
|
+
- eme/error: fix reason string and error message for KEY_STATUS_CHANGE_ERROR
|
|
1260
1242
|
|
|
1261
1243
|
### Other improvements
|
|
1262
1244
|
|
|
1263
|
-
|
|
1264
|
-
|
|
1265
|
-
|
|
1266
|
-
|
|
1245
|
+
- buffer: update download queue immediately when seeking to an already-buffered part, to always prioritize needed segments
|
|
1246
|
+
- buffer: schedule segments per level of priority to lower some buffering/seeking/loading time
|
|
1247
|
+
- demo: fix "Big Buck Bunny WEBM"'s URL
|
|
1267
1248
|
|
|
1268
1249
|
## v3.3.1 (2018-03-13)
|
|
1269
1250
|
|
|
1270
1251
|
### Bug Fixes
|
|
1271
1252
|
|
|
1272
|
-
|
|
1273
|
-
|
|
1253
|
+
- misc: fix missing browser API on IE11
|
|
1254
|
+
- buffer: end correctly streams which experienced a custom sourcebuffer (text/image) crash
|
|
1274
1255
|
|
|
1275
1256
|
### Other improvements
|
|
1276
1257
|
|
|
1277
|
-
|
|
1278
|
-
|
|
1258
|
+
- tools: support development on windows
|
|
1279
1259
|
|
|
1280
1260
|
## v3.3.0 (2018-03-05)
|
|
1281
1261
|
|
|
1282
1262
|
### Added
|
|
1283
1263
|
|
|
1284
|
-
|
|
1264
|
+
- api: add directfile API to allow the playback of files natively managed by the browser
|
|
1285
1265
|
|
|
1286
1266
|
### Bug Fixes
|
|
1287
1267
|
|
|
1288
|
-
|
|
1289
|
-
|
|
1290
|
-
|
|
1291
|
-
|
|
1268
|
+
- api: fix player state when seeking after the video ended
|
|
1269
|
+
- text/api: fix getTextTrack API which could return the current audio track instead
|
|
1270
|
+
- text: clean-up custom HTML text track SourceBuffer's buffered when the text track is disabled
|
|
1292
1271
|
|
|
1293
1272
|
## v3.2.0 (2018-02-23)
|
|
1294
1273
|
|
|
1295
1274
|
### Added
|
|
1296
1275
|
|
|
1297
|
-
|
|
1298
|
-
|
|
1299
|
-
|
|
1300
|
-
|
|
1276
|
+
- dash: Handle multi-periods DASH manifests
|
|
1277
|
+
- api: add `periodChange` event
|
|
1278
|
+
- api: add `stopAtEnd` option to the constructor, to deactivate automatic content un-loading when it ends
|
|
1279
|
+
- api: add `manifestLoader` to the `transportOptions` of a `loadVideo` call
|
|
1301
1280
|
|
|
1302
1281
|
### Bug Fixes
|
|
1303
1282
|
|
|
1304
|
-
|
|
1305
|
-
|
|
1306
|
-
|
|
1307
|
-
|
|
1308
|
-
|
|
1309
|
-
|
|
1283
|
+
- stream: call `endOfStream` for better end detection and to allow the Chrome browser to display the last frames of a video
|
|
1284
|
+
- buffer: always play the last possible milliseconds of a content (removed END_OF_PLAY config attribute)
|
|
1285
|
+
- eme: workaround a bug found on Chrome where setting a `keySystems` option in `loadVideo` would always throw on HTTP (not HTTPS) pages.
|
|
1286
|
+
- vtt: fix WebVTT parsing when the last line of a WebVTT file is not a new line
|
|
1287
|
+
- dash: ignore availabilityStartTime settings for a static MPD
|
|
1288
|
+
- buffer: ignore segments for a duration inferior to the MINIMUM_SEGMENT_SIZE (200ms by default) to avoid infinite re-downloading
|
|
1310
1289
|
|
|
1311
1290
|
### Other improvements
|
|
1312
1291
|
|
|
1313
|
-
|
|
1314
|
-
|
|
1315
|
-
|
|
1292
|
+
- update RxJS to v5.5.6
|
|
1293
|
+
- update TypeScript to v2.7.2
|
|
1316
1294
|
|
|
1317
1295
|
## v3.1.0 (2018-01-30)
|
|
1318
1296
|
|
|
1319
1297
|
### Added
|
|
1320
1298
|
|
|
1321
|
-
|
|
1322
|
-
|
|
1299
|
+
- api: add `networkConfig` to `loadVideo` options
|
|
1300
|
+
- eme: add `closeSessionsOnStop` to the `keySystems` `loadVideo` option
|
|
1323
1301
|
|
|
1324
1302
|
### Bug Fixes
|
|
1325
1303
|
|
|
1326
|
-
|
|
1327
|
-
|
|
1328
|
-
|
|
1304
|
+
- dash: fix Range request ranges for representations based on a SegmentList index
|
|
1305
|
+
- smooth: allows smooth Manifests for non-live contents to begin at a timestamp != 0
|
|
1329
1306
|
|
|
1330
1307
|
## v3.0.7 (2018-01-19)
|
|
1331
1308
|
|
|
1332
1309
|
### Bug fixes
|
|
1333
1310
|
|
|
1334
|
-
|
|
1335
|
-
|
|
1311
|
+
- eme: fix bug which prevented to play encrypted contents on IE11
|
|
1336
1312
|
|
|
1337
1313
|
## v3.0.6 (2018-01-11)
|
|
1338
1314
|
|
|
1339
1315
|
### Bug Fixes
|
|
1340
1316
|
|
|
1341
|
-
|
|
1342
|
-
|
|
1343
|
-
|
|
1344
|
-
|
|
1317
|
+
- buffer: fix issue which could led to multiple video or audio segments being downloaded at the same time
|
|
1318
|
+
- dash/text: support MPD AdaptationSet with a "caption" Role as text Adaptations
|
|
1319
|
+
- dash/text: remove offset set for subtitles on live contents, which led to unsynchronized subtitles
|
|
1320
|
+
- dash: fix issue which could led to segments being re-downloaded too much in a SegmentTemplate scheme
|
|
1345
1321
|
|
|
1346
1322
|
### Other improvements
|
|
1347
1323
|
|
|
1348
|
-
|
|
1349
|
-
|
|
1324
|
+
- demo: set "html" textTrackMode by default to have a better stylization of closed captions.
|
|
1350
1325
|
|
|
1351
1326
|
## v3.0.5 (2017-12-11)
|
|
1352
1327
|
|
|
1353
1328
|
### Bug Fixes
|
|
1354
1329
|
|
|
1355
|
-
|
|
1356
|
-
|
|
1330
|
+
- eme: consider unknown errors (e.g. errors coming from the user of the library) as fatal eme errors
|
|
1357
1331
|
|
|
1358
1332
|
## v3.0.4 (2017-12-05)
|
|
1359
1333
|
|
|
1360
1334
|
### Bug Fixes
|
|
1361
1335
|
|
|
1362
|
-
|
|
1363
|
-
|
|
1336
|
+
- text/webvtt: authorize header options without parsing them
|
|
1337
|
+
- text/webvtt: authorize timestamps without hours
|
|
1364
1338
|
|
|
1365
1339
|
### Other improvements
|
|
1366
1340
|
|
|
1367
|
-
|
|
1368
|
-
|
|
1369
|
-
|
|
1341
|
+
- misc: remove multiple unneeded assertions in DEV mode
|
|
1342
|
+
- misc: update DEV mode default debug level from DEBUG to INFO
|
|
1370
1343
|
|
|
1371
1344
|
## v3.0.3 (2017-11-24)
|
|
1372
1345
|
|
|
1373
1346
|
### Bug Fixes
|
|
1374
1347
|
|
|
1375
|
-
|
|
1376
|
-
|
|
1348
|
+
- text/ttml: apply correctly a style if directly set on an attribute
|
|
1349
|
+
- eme: load new video even if the last EME clean-up failed
|
|
1377
1350
|
|
|
1378
1351
|
### Other improvements
|
|
1379
1352
|
|
|
1380
|
-
|
|
1381
|
-
|
|
1382
|
-
|
|
1383
|
-
|
|
1384
|
-
|
|
1353
|
+
- misc: set better work arround for typescript issue [20104](https://github.com/Microsoft/TypeScript/issues/20104) to make building npm scripts usable again
|
|
1354
|
+
- tools: update the update-version npm script
|
|
1355
|
+
- demo: `npm run start` and `npm run standalone` now build the rx-player in the "development" environment
|
|
1356
|
+
- tools: add more logs in DEBUG mode
|
|
1385
1357
|
|
|
1386
1358
|
## v3.0.2 (2017-11-17)
|
|
1387
1359
|
|
|
1388
1360
|
### Bug Fixes
|
|
1389
1361
|
|
|
1390
|
-
|
|
1391
|
-
|
|
1362
|
+
- misc: work around typescript issue [20104](https://github.com/Microsoft/TypeScript/issues/20104) temporarly to launch in Chrome in HTTP
|
|
1392
1363
|
|
|
1393
1364
|
## v3.0.1 (2017-11-17)
|
|
1394
1365
|
|
|
1395
1366
|
### Bug Fixes
|
|
1396
1367
|
|
|
1397
|
-
|
|
1398
|
-
|
|
1368
|
+
- abr: adopt a less agressive strategy to avoid re-bufferings
|
|
1369
|
+
- smooth: avoid most of the manifest refresh requests
|
|
1399
1370
|
|
|
1400
1371
|
### Other improvements
|
|
1401
1372
|
|
|
1402
|
-
|
|
1403
|
-
|
|
1404
|
-
|
|
1373
|
+
- Switch codebase to TypeScript
|
|
1374
|
+
- Add Travis CI
|
|
1405
1375
|
|
|
1406
1376
|
## v3.0.0 (2017-11-10)
|
|
1407
1377
|
|
|
1408
1378
|
### Added
|
|
1409
1379
|
|
|
1410
|
-
|
|
1411
|
-
|
|
1412
|
-
|
|
1413
|
-
|
|
1414
|
-
|
|
1415
|
-
|
|
1416
|
-
|
|
1417
|
-
|
|
1418
|
-
|
|
1419
|
-
|
|
1420
|
-
|
|
1421
|
-
|
|
1422
|
-
|
|
1423
|
-
|
|
1424
|
-
|
|
1425
|
-
|
|
1426
|
-
|
|
1427
|
-
|
|
1428
|
-
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
|
|
1432
|
-
|
|
1433
|
-
|
|
1434
|
-
|
|
1380
|
+
- misc: add possibility to do custom builds through environment variables, to remove unwanted features from minified code.
|
|
1381
|
+
- languages: add support for segmented VTT subtitles
|
|
1382
|
+
- languages/dash: add support for plain text TTML, SAMI, SRT, VTT and MP4-embedded VTT subtitles in DASH manifests
|
|
1383
|
+
- languages/smooth: add support for MP4-embedded VTT subtitles in Smooth manifests
|
|
1384
|
+
- languages: add possibility to show fragmented or not TTML, SAMI, SRT and VTT text tracks in a <track> element, even for browser that do not support the VTTCue API
|
|
1385
|
+
- languages: add possibility to show TTML, SRT, VTT and SAMI text tracks in HTML tags for richer stylisation.
|
|
1386
|
+
- api: add `textTrackElement` option to `loadVideo`
|
|
1387
|
+
- api: add `textTrackMode` option to `loadVideo`
|
|
1388
|
+
- api: add `nativeTextTracksChange` event
|
|
1389
|
+
- eme: it is now possible to directly set the reverse domain name of the wanted key system in the `type` property of `loadVideo`'s `keySystems` option.
|
|
1390
|
+
- api: add property `percentage` to the `startAt` argument of `loadVideo`.
|
|
1391
|
+
- abr: add `bitrateEstimationChange` event
|
|
1392
|
+
- api: add `LogLevel` static property
|
|
1393
|
+
- api: a Date object can now be given to the `loadVideo` argument `startAt.wallClockTime`. It will be automatically converted into seconds.
|
|
1394
|
+
- languages: add `normalizedLanguage` property in manifest-related-APIs to expose the ISO 639-3 language code of the audio and text tracks
|
|
1395
|
+
- languages: add `normalized` property in language-related-API to expose the ISO 639-3 language code of the audio and text tracks
|
|
1396
|
+
- loadVideo: add `codecs` property to supplementaryTextTracks
|
|
1397
|
+
- api: add `wantedBufferAhead` constructor option
|
|
1398
|
+
- api: add `maxBufferAhead` constructor option
|
|
1399
|
+
- api: add `maxBufferBehind` constructor option
|
|
1400
|
+
- api: add `getVideoBufferGap` method
|
|
1401
|
+
- api: add `isMute` method
|
|
1402
|
+
- api: add `getManualAudioBitrate` method
|
|
1403
|
+
- api: add `getManualVideoBitrate` method
|
|
1404
|
+
- config: add a global config file (src/config.js) to easily tweak the player behavior
|
|
1435
1405
|
|
|
1436
1406
|
### Changed
|
|
1437
1407
|
|
|
1438
|
-
|
|
1439
|
-
|
|
1440
|
-
|
|
1441
|
-
|
|
1442
|
-
|
|
1443
|
-
|
|
1444
|
-
|
|
1445
|
-
|
|
1446
|
-
|
|
1447
|
-
|
|
1448
|
-
|
|
1449
|
-
|
|
1450
|
-
|
|
1408
|
+
- languages: switch from ISO 639-2 to ISO 639-3 language codes in various APIs
|
|
1409
|
+
- languages: the `language` property returned by language and manifest related APIs now reflect the exact language as set in the manifest
|
|
1410
|
+
- api: `setVideoBitrate` can now be called even when no content is playing
|
|
1411
|
+
- api: `setAudioBitrate` can now be called even when no content is playing
|
|
1412
|
+
- api: `setVideoBitrate` can now be called even when no video track has the exact same bitrate
|
|
1413
|
+
- api: `setAudioBitrate` can now be called even when no audio track has the exact same bitrate
|
|
1414
|
+
- api: giving a number to `seekTo` now has the same effect than setting a position option in argument (`seekTo({ position }) === seekTo(position)`)
|
|
1415
|
+
- api: `getUrl` now do not throw if no content is playing
|
|
1416
|
+
- api: `isLive` now do not throw if no content is playing
|
|
1417
|
+
- api: `loadVideo` does not return anything anymore
|
|
1418
|
+
- api: private (undocumented) variables have been isolated on a player instance to a `_priv` object.
|
|
1419
|
+
- api: the constructor option `throttleWhenHidden` is now set to false by default
|
|
1420
|
+
- api: the constructor option `limitVideoWidth` is now set to false by default
|
|
1451
1421
|
|
|
1452
1422
|
### Removed
|
|
1453
1423
|
|
|
1454
|
-
|
|
1455
|
-
|
|
1456
|
-
|
|
1457
|
-
|
|
1458
|
-
|
|
1459
|
-
|
|
1460
|
-
|
|
1461
|
-
|
|
1462
|
-
|
|
1463
|
-
|
|
1464
|
-
|
|
1465
|
-
|
|
1466
|
-
|
|
1467
|
-
|
|
1468
|
-
|
|
1469
|
-
|
|
1470
|
-
|
|
1471
|
-
|
|
1472
|
-
|
|
1473
|
-
|
|
1474
|
-
|
|
1475
|
-
|
|
1476
|
-
|
|
1477
|
-
|
|
1478
|
-
|
|
1479
|
-
|
|
1480
|
-
|
|
1481
|
-
|
|
1482
|
-
|
|
1483
|
-
|
|
1484
|
-
|
|
1485
|
-
|
|
1486
|
-
|
|
1487
|
-
|
|
1488
|
-
|
|
1489
|
-
|
|
1490
|
-
|
|
1491
|
-
|
|
1492
|
-
|
|
1493
|
-
|
|
1494
|
-
|
|
1495
|
-
|
|
1496
|
-
|
|
1497
|
-
|
|
1498
|
-
|
|
1499
|
-
|
|
1424
|
+
- api: remove `defaultAudioTrack` constructor option
|
|
1425
|
+
- api: remove `defaultTextTrack` constructor option
|
|
1426
|
+
- api: remove `transportOptions` constructor option
|
|
1427
|
+
- api: remove `transport` constructor option
|
|
1428
|
+
- api: remove `nativeTextTrackChange` event in favor of `nativeTextTracksChange` event (notice the "s")
|
|
1429
|
+
- api: remove `goToStart` method
|
|
1430
|
+
- api: remove `getStartTime` method
|
|
1431
|
+
- api: remove `getEndTime` method
|
|
1432
|
+
- api: remove `toggleDebug` method
|
|
1433
|
+
- api: remove `hideDebug` method
|
|
1434
|
+
- api: remove `showDebug` method
|
|
1435
|
+
- api: remove `getDebug` method
|
|
1436
|
+
- api: remove `getImageTrack` method
|
|
1437
|
+
- api: remove `setVideoBufferSize` method in favor of `setWantedBufferAhead` method
|
|
1438
|
+
- api: remove `getVideoBufferSize` method in favor of `getWantedBufferAhead` method
|
|
1439
|
+
- api: remove `setAudioBufferSize` method in favor of `setWantedBufferAhead` method
|
|
1440
|
+
- api: remove `getAudioBufferSize` method in favor of `getWantedBufferAhead` method
|
|
1441
|
+
- api: remove `maximumBufferTime` property from `positionUpdate` events
|
|
1442
|
+
- api: remove `getCurrentTime` method
|
|
1443
|
+
- api: remove `asObservable` method
|
|
1444
|
+
- api: remove `loadVideo` option `manifests` in favor of `url` and `keySystems` options
|
|
1445
|
+
- api: remove `loadVideo` option `subtitles` in favor of `supplementaryTextTracks` option
|
|
1446
|
+
- api: remove `loadVideo` option `images` in favor of `supplementaryImageTracks` option
|
|
1447
|
+
- api: remove constructor option `initVideoBitrate` in favor of `initialVideoBitrate` option
|
|
1448
|
+
- api: remove constructor option `initAudioBitrate` in favor of `initialVideoBitrate` option
|
|
1449
|
+
- api: remove constructor option `defaultLanguage` in favor of `defaultAudioTrack` option
|
|
1450
|
+
- api: remove constructor option `defaultSubtitle` in favor of `defaultTextTrack` option
|
|
1451
|
+
- position: remove `subtitleChange` event
|
|
1452
|
+
- position: remove `languageChange` event
|
|
1453
|
+
- position: remove `progress` event
|
|
1454
|
+
- position: remove `currentTimeChange` event in favor of `positionUpdate` event
|
|
1455
|
+
- adaptive: remove `getMetrics` method
|
|
1456
|
+
- adaptive: remove `getAverageBitrates` method
|
|
1457
|
+
- adaptive: remove `getVideoMaxBitrate` method in favor of `getMaxVideoBitrate` method
|
|
1458
|
+
- adaptive: remove `getAudioMaxBitrate` method in favor of `getMaxAudioBitrate` method
|
|
1459
|
+
- errors: remove static method `getErrorTypes` in favor of the static property `errorTypes`
|
|
1460
|
+
- errors: remove static method `getErrorCodes` in favor of the static property `errorCodes`
|
|
1461
|
+
- languages: remove `normalizeLanguageCode` method
|
|
1462
|
+
- languages: remove `getAvailableLanguages` method
|
|
1463
|
+
- languages: remove `getAvailableSubtitles` method
|
|
1464
|
+
- languages: remove `isLanguageAvailable` method
|
|
1465
|
+
- languages: remove `isSubtitleAvailable` method
|
|
1466
|
+
- languages: remove `getLanguage` method
|
|
1467
|
+
- languages: remove `getSubtitle` method
|
|
1468
|
+
- languages: remove `setLanguage` method
|
|
1469
|
+
- languages: remove `setSubtitle` method
|
|
1500
1470
|
|
|
1501
1471
|
### Bug Fixes:
|
|
1502
1472
|
|
|
1503
|
-
|
|
1504
|
-
|
|
1505
|
-
|
|
1506
|
-
|
|
1507
|
-
|
|
1508
|
-
|
|
1509
|
-
|
|
1510
|
-
|
|
1511
|
-
|
|
1512
|
-
|
|
1513
|
-
|
|
1514
|
-
|
|
1515
|
-
|
|
1516
|
-
|
|
1517
|
-
|
|
1518
|
-
|
|
1519
|
-
|
|
1520
|
-
|
|
1521
|
-
|
|
1473
|
+
- dash: fix bug that prevented to play most dash contents with SegmentTemplate-based manifests
|
|
1474
|
+
- dash: it's now possible to play SegmentTimeline-based contents with a numbering scheme
|
|
1475
|
+
- dash/text: calculate the text track time offset for dynamic DASH contents (prevented most text tracks from live DASH contents to be displayed)
|
|
1476
|
+
- eme: fix EME issues when loading multiple videos in IE/Edge
|
|
1477
|
+
- api: The state of the player when ready to play with autoPlay === false is now `"LOADED"` and not `"PAUSED"`
|
|
1478
|
+
- api: fix infinite loading bug when a new content is synchronously launched as soon as the previous one is ended or fell on error
|
|
1479
|
+
- dash: allow absolute BaseURL in Periods
|
|
1480
|
+
- languages: avoid excessive re-downloads if a `supplementaryTextTracks` is provided and either a `maxBufferBehind` or a `maxBufferAhead` is set.
|
|
1481
|
+
- eme: the `reason` for the eme error `KEY_STATUS_CHANGE_ERROR` is now correctly filled in
|
|
1482
|
+
- eme: do not set widevine robustnesses for non-widevine key systems
|
|
1483
|
+
- languages: fix bug which led the text buffer to _crash_ when the `wantedBufferBehind` option is set
|
|
1484
|
+
- languages: fix bug which led to TextTracks chunks being re-downloaded multiple times
|
|
1485
|
+
- speed: fix playback rate bug when setting it while the player is stalled
|
|
1486
|
+
- smooth: fix "fallback" callback in the segmentLoader API for smooth contents.
|
|
1487
|
+
- smooth: fix some minor risks of infinite rebuffering for live contents, when the isobmff's tfrf box is not well parsed.
|
|
1488
|
+
- buffer: avoid infinite player rebuffering when the manifest is not exactly aligned with the real duration of the content
|
|
1489
|
+
- buffer: avoid multiple causes of infinite player rebuffering by managing segment garbage collection
|
|
1490
|
+
- languages: getAudioTrack now always returns the currently set audio track
|
|
1491
|
+
- languages: getTextTrack now always returns the currently set text track
|
|
1522
1492
|
|
|
1523
1493
|
### Other improvements
|
|
1524
1494
|
|
|
1525
|
-
|
|
1526
|
-
|
|
1527
|
-
|
|
1528
|
-
|
|
1529
|
-
|
|
1530
|
-
|
|
1531
|
-
|
|
1532
|
-
|
|
1533
|
-
|
|
1534
|
-
|
|
1495
|
+
- manifest: improve manifest refreshing logic, by not downloading it when unnecessary
|
|
1496
|
+
- smooth: begin to play arround 10s before the live edge instead of 20 seconds for smooth contents
|
|
1497
|
+
- network: the backoff algorithm has been refactored for better network error resilience
|
|
1498
|
+
- adaptive: improved ABR management to provide a better, faster and more stable bandwidth estimation
|
|
1499
|
+
- adaptive: add strategies for abrupt changes of bandwidth to avoid excessive re-buffering on network fluctuations
|
|
1500
|
+
- adaptive: the adaptive algorithm now take into account the current playback rate
|
|
1501
|
+
- doc: added file architecture documentation
|
|
1502
|
+
- tests: fixed and added integration tests
|
|
1503
|
+
- demo: the demo now manages most languages defined by in the ISO 639-3 standard
|
|
1535
1504
|
|
|
1536
1505
|
## v2.3.2 (2017-07-25)
|
|
1537
1506
|
|
|
1538
1507
|
### Bug Fixes
|
|
1539
1508
|
|
|
1540
|
-
|
|
1541
|
-
|
|
1509
|
+
- eme: update EME workflow to improve support (especially chromebooks)
|
|
1542
1510
|
|
|
1543
1511
|
## v2.3.1 (2017-07-10)
|
|
1544
1512
|
|
|
1545
1513
|
### Bug Fixes
|
|
1546
1514
|
|
|
1547
|
-
|
|
1548
|
-
|
|
1515
|
+
- buffer: improve buffer ranges "bookeeping" logic to avoid re-downloading the same segments
|
|
1549
1516
|
|
|
1550
1517
|
## v2.3.0 (2017-07-07)
|
|
1551
1518
|
|
|
1552
1519
|
### Added
|
|
1553
1520
|
|
|
1554
|
-
|
|
1555
|
-
|
|
1556
|
-
|
|
1557
|
-
|
|
1558
|
-
|
|
1559
|
-
|
|
1521
|
+
- eme: add audioRobustnesses to loadVideo's keySystems argument (/!\ undocumented API - can break without official notice)
|
|
1522
|
+
- eme: add videoRobustnesses to loadVideo's keySystems argument (/!\ undocumented API - can break without official notice)
|
|
1523
|
+
- eme: add serverCertificate to loadVideo's keySystems argument
|
|
1524
|
+
- buffer: add {set,get}MaxBufferAhead methods
|
|
1525
|
+
- buffer: add {set,get}MaxBufferBehind methods
|
|
1526
|
+
- buffer: add {set,get}WantedBufferAhead methods replacing the deprecated buffer size methods
|
|
1560
1527
|
|
|
1561
1528
|
### Deprecated
|
|
1562
1529
|
|
|
1563
|
-
|
|
1564
|
-
|
|
1565
|
-
|
|
1566
|
-
|
|
1530
|
+
- setVideoBufferSize has been deprecated in favor of setWantedBufferAhead
|
|
1531
|
+
- getVideoBufferSize has been deprecated in favor of getWantedBufferAhead
|
|
1532
|
+
- setAudioBufferSize has been deprecated in favor of setWantedBufferAhead
|
|
1533
|
+
- getAudioBufferSize has been deprecated in favor of getWantedBufferAhead
|
|
1567
1534
|
|
|
1568
1535
|
### Bug Fixes
|
|
1569
1536
|
|
|
1570
|
-
|
|
1571
|
-
|
|
1572
|
-
|
|
1573
|
-
|
|
1574
|
-
|
|
1537
|
+
- buffer: avoid some infinite re-buffering by re-calculating buffer ranges at every tick
|
|
1538
|
+
- eme: add eme support for some legacy browser without video or audio capabilities
|
|
1539
|
+
- general: add support for older browsers (which does not support array.prototype.{find,findIndex,includes})
|
|
1540
|
+
- general: use Object.assign ponyfill instead of the previous polyfill to avoid malicious interferences with other codebases
|
|
1575
1541
|
|
|
1576
1542
|
## v2.2.1 (2017-06-27)
|
|
1577
1543
|
|
|
1578
1544
|
### Bug fixes
|
|
1579
1545
|
|
|
1580
|
-
|
|
1581
|
-
|
|
1546
|
+
- adaptive: fix width limitation bug. Impacted limitVideoWidth + setMaxVideoBitrate APIs
|
|
1582
1547
|
|
|
1583
1548
|
## v2.2.0 (2017-06-19)
|
|
1584
1549
|
|
|
1585
1550
|
### Added
|
|
1586
1551
|
|
|
1587
|
-
|
|
1552
|
+
- position: add maximumBufferPosition to the positionUpdate event's payload to replace the previous "liveGap" from currentTimeChange event
|
|
1588
1553
|
|
|
1589
1554
|
### Bug fixes
|
|
1590
1555
|
|
|
1591
|
-
|
|
1592
|
-
|
|
1593
|
-
|
|
1556
|
+
- upgrade to rxjs 5.4.1 to escape memory leak
|
|
1557
|
+
- position: "liveGap" from currentTimeChange event now means the difference to the maximum "bufferisable" position to keep compatibility with the old API
|
|
1594
1558
|
|
|
1595
1559
|
## v2.1.3 (2017-06-15)
|
|
1596
1560
|
|
|
1597
1561
|
### Bug fixes
|
|
1598
1562
|
|
|
1599
|
-
|
|
1600
|
-
|
|
1563
|
+
- api: fix timeFragment.start handling
|
|
1601
1564
|
|
|
1602
1565
|
## v2.1.2 (2017-06-14)
|
|
1603
1566
|
|
|
1604
1567
|
### Bug fixes
|
|
1605
1568
|
|
|
1606
|
-
|
|
1607
|
-
|
|
1608
|
-
|
|
1609
|
-
|
|
1610
|
-
|
|
1611
|
-
|
|
1612
|
-
|
|
1613
|
-
|
|
1569
|
+
- stream: the BUFFER_APPEND_ERROR error, happening when a SourceBuffer.appendBuffer failed for an unknown reason, is now a fatal error for audio/video segments
|
|
1570
|
+
- eme: fix rxjs timeout management which prevented from playing DRM-protected contents
|
|
1571
|
+
- api: add securities to avoid useless errors to be thrown when the player (already) encounter an error
|
|
1572
|
+
- position: fix bug which prevented to seek at the beginning of the content with the new api
|
|
1573
|
+
- position: fix typo which prevented to perform absolute seeks with the new api
|
|
1574
|
+
- buffer: automatically seek if there is discontinuity in a live stream
|
|
1575
|
+
- adaptive: take the lowest bitrate (instead of the initial/default one) when the player is not displayed/too small
|
|
1614
1576
|
|
|
1615
1577
|
## v2.1.1 (2017-06-02)
|
|
1616
1578
|
|
|
1617
1579
|
### Bug fixes
|
|
1618
1580
|
|
|
1619
|
-
|
|
1620
|
-
|
|
1621
|
-
|
|
1622
|
-
|
|
1623
|
-
|
|
1624
|
-
|
|
1625
|
-
|
|
1626
|
-
|
|
1627
|
-
|
|
1628
|
-
|
|
1581
|
+
- hotfix: fixed rxjs imports
|
|
1582
|
+
- hotfix: the player can now be imported through a commonjs require
|
|
1583
|
+
- hotfix: the player could not play if the video element's width was too short
|
|
1584
|
+
- manifest: segment id were not always the same on a segmentLoader and on the API calls.
|
|
1585
|
+
- adaptive: setVideoBitrate now throw a more meaningful error if no content is playing
|
|
1586
|
+
- adaptive: setAudioBitrate now throw a more meaningful error if no content is playing
|
|
1587
|
+
- language: setSubtitle now throw a more meaningful error if no content is playing
|
|
1588
|
+
- language: setLanguage now throw a more meaningful error if no content is playing
|
|
1589
|
+
- language: isLanguageAvailable do not throw and return false if no content is playing
|
|
1590
|
+
- language: isSubtitleAvailable do not throw and return false if no content is playing
|
|
1629
1591
|
|
|
1630
1592
|
### Other improvements
|
|
1631
1593
|
|
|
1632
|
-
|
|
1633
|
-
|
|
1634
|
-
|
|
1635
|
-
|
|
1594
|
+
- api: deprecated api now only warn once
|
|
1595
|
+
- tests: integration tests have been added
|
|
1596
|
+
- manifest: the manifest object and the management of its index has been refactored for future improvements
|
|
1636
1597
|
|
|
1637
1598
|
## v2.1.0 (2017-05-29)
|
|
1638
1599
|
|
|
1639
1600
|
### Added
|
|
1640
1601
|
|
|
1641
|
-
-
|
|
1642
|
-
-
|
|
1643
|
-
-
|
|
1644
|
-
-
|
|
1645
|
-
-
|
|
1646
|
-
-
|
|
1647
|
-
-
|
|
1648
|
-
-
|
|
1649
|
-
-
|
|
1650
|
-
-
|
|
1651
|
-
-
|
|
1652
|
-
-
|
|
1653
|
-
-
|
|
1654
|
-
-
|
|
1655
|
-
-
|
|
1656
|
-
-
|
|
1657
|
-
-
|
|
1658
|
-
-
|
|
1659
|
-
-
|
|
1660
|
-
-
|
|
1661
|
-
-
|
|
1662
|
-
-
|
|
1663
|
-
-
|
|
1664
|
-
-
|
|
1665
|
-
-
|
|
1666
|
-
-
|
|
1667
|
-
-
|
|
1668
|
-
-
|
|
1669
|
-
-
|
|
1670
|
-
-
|
|
1602
|
+
- images/dash: add BIF support in DASH MPD
|
|
1603
|
+
- subtitles/smooth: add support for closed captions in smooth manifest
|
|
1604
|
+
- subtitles: add closed caption support in supplementaryTextTracks loadVideo arguments
|
|
1605
|
+
- position: add getMinimumPosition and getMaximumPosition methods
|
|
1606
|
+
- position: add startAt loadVideo argument (replace the timeFragment API)
|
|
1607
|
+
- position: add positionUpdate event
|
|
1608
|
+
- images: add getImageTrackData method
|
|
1609
|
+
- images: add imageTrackUpdate event
|
|
1610
|
+
- position: add possibility to use relative, absolute and wall-clock time on seekTo API
|
|
1611
|
+
- transport: add segmentLoader transportOption for constructor and loadVideo API
|
|
1612
|
+
- api: add setMaxAudioBitrate and setMaxVideoBitrate method
|
|
1613
|
+
- api: add exitFullscreen method
|
|
1614
|
+
- api: add ErrorTypes and ErrorCodes static properties
|
|
1615
|
+
- api: add getPosition method
|
|
1616
|
+
- api: add getWallClockTime method
|
|
1617
|
+
- manifest: add getCurrentRepresentations method
|
|
1618
|
+
- manifest: add getCurrentAdaptations method
|
|
1619
|
+
- api: add throttleWhenHidden option to constructor (to disable throttling when the current page is hidden for an extended time)
|
|
1620
|
+
- api: add limitVideoWidth option to constructor (to disable throttling to match the video element's width)
|
|
1621
|
+
- api: add initialAudioBitrate and initialVideoBitrate to constructor's options
|
|
1622
|
+
- api: add defaultTextTrack and defaultAudioTrack to loadVideo and constructor's options
|
|
1623
|
+
- languages: add getAvailableAudioTracks method with audio description support
|
|
1624
|
+
- languages: add getAvailableTextTracks method with closed caption support
|
|
1625
|
+
- languages: add getAudioTrack method with audio description support
|
|
1626
|
+
- languages: add getTextTrack method with closed caption support
|
|
1627
|
+
- languages: add setAudioTrack method with audio description support
|
|
1628
|
+
- languages: add setTextTrack method with closed caption support
|
|
1629
|
+
- audiotrack/dash: add audio description support in DASH MPD
|
|
1630
|
+
- subtitles/dash: add closed captions support in DASH MPD
|
|
1631
|
+
- subtitles/dash: add subtitles support in DASH MPD (only ttml for now)
|
|
1671
1632
|
|
|
1672
1633
|
### Deprecated
|
|
1673
1634
|
|
|
1674
|
-
-
|
|
1675
|
-
-
|
|
1676
|
-
-
|
|
1677
|
-
-
|
|
1678
|
-
-
|
|
1679
|
-
-
|
|
1680
|
-
-
|
|
1681
|
-
-
|
|
1682
|
-
-
|
|
1683
|
-
-
|
|
1684
|
-
-
|
|
1685
|
-
-
|
|
1686
|
-
-
|
|
1687
|
-
-
|
|
1688
|
-
-
|
|
1689
|
-
-
|
|
1690
|
-
-
|
|
1691
|
-
-
|
|
1692
|
-
-
|
|
1693
|
-
-
|
|
1694
|
-
-
|
|
1695
|
-
-
|
|
1696
|
-
-
|
|
1697
|
-
-
|
|
1698
|
-
-
|
|
1699
|
-
-
|
|
1700
|
-
-
|
|
1701
|
-
-
|
|
1702
|
-
-
|
|
1703
|
-
-
|
|
1704
|
-
-
|
|
1705
|
-
-
|
|
1706
|
-
-
|
|
1707
|
-
-
|
|
1635
|
+
- position: the timeFragment API is deprecated (loadVideo's timeFragment argument, getStartTime, getEndTime and goToStart)
|
|
1636
|
+
- api: currentTimeChange event is replaced by the positionUpdate event
|
|
1637
|
+
- api: progress event is deprecated and not replaced
|
|
1638
|
+
- api: getImageTrack is replaced by the imageTrackUpdate event
|
|
1639
|
+
- api: loadVideo parameter subtitles is replaced by supplementaryTextTracks
|
|
1640
|
+
- api: loadVideo parameter images is replaced by supplementaryImageTracks
|
|
1641
|
+
- api: getVideoMaxBitrate is replaced by getMaxVideoBitrate
|
|
1642
|
+
- api: getAudioMaxBitrate is replaced by getMaxAudioBitrate
|
|
1643
|
+
- api: toggleDebug is deprecated and not replaced
|
|
1644
|
+
- api: hideDebug is deprecated and not replaced
|
|
1645
|
+
- api: showDebug is deprecated and not replaced
|
|
1646
|
+
- api: getDebug is deprecated and not replaced
|
|
1647
|
+
- api: asObservable is deprecated and not replaced
|
|
1648
|
+
- api: getAverageBitrates is deprecated and not replaced
|
|
1649
|
+
- api: getMetrics is deprecated and not replaced
|
|
1650
|
+
- position: using seekTo with a Number argument is deprecated.
|
|
1651
|
+
- position: getCurrentTime is deprecated in favor of getWallClockTime
|
|
1652
|
+
- api: setVideoMaxBitrate is replaced by setMaxVideoBitrate
|
|
1653
|
+
- api: setAudioMaxBitrate is replaced by setMaxAudioBitrate
|
|
1654
|
+
- api: using setFullscreen(false) is replaced by exitFullscreen
|
|
1655
|
+
- api: getErrorTypes method has been deprecated in favor of the ErrorTypes property
|
|
1656
|
+
- api: getErrorCodes method has been deprecated in favor of the ErrorCodes property
|
|
1657
|
+
- languages: initAudioBitrate option in constructor is deprecated in favor of initialAudioBitrate
|
|
1658
|
+
- languages: initVideoBitrate option in constructor is deprecated in favor of initialVideoBitrate
|
|
1659
|
+
- languages: defaultSubtitle option in constructor and loadVideo is deprecated in favor of defaultTextTrack
|
|
1660
|
+
- languages: defaultLanguage option in constructor and loadVideo is deprecated in favor of defaultAudioTrack
|
|
1661
|
+
- languages: getAvailableLanguages is deprecated in favor of getAvailableAudioTracks
|
|
1662
|
+
- languages: getAvailableSubtitles is deprecated in favor of getAvailableTextTracks
|
|
1663
|
+
- languages: getLanguage is deprecated in favor of getAudioTrack
|
|
1664
|
+
- languages: getSubtitle is deprecated in favor of getTextTrack
|
|
1665
|
+
- languages: isLanguageAvailable is deprecated and not replaced
|
|
1666
|
+
- languages: isSubtitleAvailable is deprecated and not replaced
|
|
1667
|
+
- languages: setLanguage is deprecated in favor of setAudioTrack
|
|
1668
|
+
- languages: setSubtitle is deprecated in favor of setTextTrack
|
|
1708
1669
|
|
|
1709
1670
|
### Bug fixes
|
|
1710
1671
|
|
|
1711
|
-
-
|
|
1712
|
-
-
|
|
1713
|
-
-
|
|
1714
|
-
-
|
|
1715
|
-
-
|
|
1716
|
-
-
|
|
1717
|
-
-
|
|
1718
|
-
-
|
|
1719
|
-
-
|
|
1720
|
-
-
|
|
1721
|
-
-
|
|
1722
|
-
-
|
|
1723
|
-
-
|
|
1724
|
-
-
|
|
1725
|
-
-
|
|
1726
|
-
-
|
|
1727
|
-
-
|
|
1728
|
-
-
|
|
1672
|
+
- adaptive: fix a bug where it was impossible to switch between multiple videos representations with the same width
|
|
1673
|
+
- languages: fix bug where the user could switch to a closed caption track unknowngly
|
|
1674
|
+
- languages: fix bug where the user could switch to an audio description track unknowngly
|
|
1675
|
+
- manifest: improved and documented getManifest's return value
|
|
1676
|
+
- manifest: defined and documented a generic manifest object structure (slowly replacing the old object).
|
|
1677
|
+
- images: image playlists are now not re-fetched if the request failed (no retry)
|
|
1678
|
+
- dash: lowered security time raising the startup time for SegmentTemplate-based contents
|
|
1679
|
+
- api: getLanguage/getSubtitle returns now the language of the last chunk received, not the last set
|
|
1680
|
+
- manifest: fixed manifest-refreshing logic (mainly for live contents)
|
|
1681
|
+
- dash: fixed support for dash SegmentTimeline-based contents
|
|
1682
|
+
- api: differentiate unset default languages from empty strings
|
|
1683
|
+
- languages: handle undefined languages (to an empty string)
|
|
1684
|
+
- api: allow the player to be instanciated with no option
|
|
1685
|
+
- mp4: fix minor bugs with isobmff parsing
|
|
1686
|
+
- images: keep externally-given BIF track when the manifest is refreshed
|
|
1687
|
+
- timings: fix timeFragment arguments RegExp
|
|
1688
|
+
- subtitles: fix webVTT management for unsupported user agents
|
|
1689
|
+
- timings: fix calculation of the position and duration for non-dynamic contetns
|
|
1729
1690
|
|
|
1730
1691
|
### Other improvements
|
|
1731
1692
|
|
|
1732
|
-
-
|
|
1733
|
-
-
|
|
1734
|
-
-
|
|
1735
|
-
-
|
|
1736
|
-
-
|
|
1737
|
-
-
|
|
1738
|
-
-
|
|
1739
|
-
|
|
1693
|
+
- documentation: The API documentation has been completely rewritten
|
|
1694
|
+
- manifest: The DASH manifest handling has been refactored
|
|
1695
|
+
- smooth: Smooth index handling has been completely separated from the DASH logic
|
|
1696
|
+
- tests: fix and re-wrote unit tests
|
|
1697
|
+
- documentation: Code documentation has been added
|
|
1698
|
+
- demo: The Demo has been completely rewritten
|
|
1699
|
+
- demo: The bundle has been removed from the code committed.
|
|
1740
1700
|
|
|
1741
1701
|
## v2.0.0-alpha1 (2016-02-09)
|
|
1742
1702
|
|
|
1743
|
-
-
|
|
1744
|
-
-
|
|
1745
|
-
|
|
1703
|
+
- RxJS: use RxJS5.beta1
|
|
1704
|
+
- Promise: remove es6-promise dependency and stop relying completely
|
|
1705
|
+
on promises
|
|
1746
1706
|
|
|
1747
|
-
-
|
|
1748
|
-
-
|
|
1749
|
-
-
|
|
1750
|
-
-
|
|
1751
|
-
-
|
|
1752
|
-
-
|
|
1753
|
-
-
|
|
1754
|
-
-
|
|
1755
|
-
-
|
|
1756
|
-
|
|
1757
|
-
- lint: add new rules (no-var, prefer-const, enforce brackets)
|
|
1707
|
+
- eme: improve IE11 and Edge support on EME
|
|
1708
|
+
- smooth: activate patch in place on non IE targets for less memory allocation
|
|
1709
|
+
- player: deprecate directFile api and skip MediaSource assert for directfile
|
|
1710
|
+
- player: clone array for getAvailableBitrates methods
|
|
1711
|
+
- player: fix when no adaptation or no representation
|
|
1712
|
+
- player: record subtitle state as empty string
|
|
1713
|
+
- buffer: start with buffer infos to cache infos asap
|
|
1714
|
+
- stream: start stalling system after having first metadata
|
|
1715
|
+
- refacto: clean pipelined objects and POO where needed
|
|
1758
1716
|
|
|
1717
|
+
- lint: add new rules (no-var, prefer-const, enforce brackets)
|
|
1759
1718
|
|
|
1760
1719
|
## v1.4.0 (2016-01-26)
|
|
1761
1720
|
|
|
1762
1721
|
### Added
|
|
1763
1722
|
|
|
1764
|
-
-
|
|
1765
|
-
-
|
|
1766
|
-
-
|
|
1767
|
-
-
|
|
1723
|
+
- buffer: add garbage collector
|
|
1724
|
+
- player: emit currentTimeChange synchronously
|
|
1725
|
+
- player: add {defaultLanguage,defaultSubtitle} api
|
|
1726
|
+
- log: warn to info for some logs
|
|
1768
1727
|
|
|
1769
1728
|
### Bug fixes
|
|
1770
1729
|
|
|
1771
|
-
-
|
|
1772
|
-
-
|
|
1773
|
-
-
|
|
1774
|
-
-
|
|
1775
|
-
-
|
|
1776
|
-
-
|
|
1777
|
-
-
|
|
1778
|
-
|
|
1779
|
-
Demo
|
|
1780
|
-
----
|
|
1730
|
+
- player: fix getAvailable\* for direct files
|
|
1731
|
+
- player: fix subtle race on loadedmetadata after retry
|
|
1732
|
+
- eme: remove compat code for old chrome versions with eme flags
|
|
1733
|
+
- eme: always ask for temporary session type
|
|
1734
|
+
- eme: fix template error message
|
|
1735
|
+
- eme: improve persistent license support and compat
|
|
1736
|
+
- smooth: fix index timeline if no duration
|
|
1781
1737
|
|
|
1782
|
-
|
|
1738
|
+
## Demo
|
|
1783
1739
|
|
|
1740
|
+
- allow to pass query parameters
|
|
1784
1741
|
|
|
1785
1742
|
## v1.3.1 (2015-10-14)
|
|
1786
1743
|
|
|
1787
1744
|
### Bug fixes
|
|
1788
1745
|
|
|
1789
|
-
-
|
|
1790
|
-
|
|
1746
|
+
- smooth: fix parseBoolean causing isLive to be always true
|
|
1791
1747
|
|
|
1792
1748
|
## v1.3.0 (2015-10-14)
|
|
1793
1749
|
|
|
1794
1750
|
### Added
|
|
1795
1751
|
|
|
1796
|
-
-
|
|
1797
|
-
-
|
|
1798
|
-
-
|
|
1799
|
-
|
|
1752
|
+
- eme: license persistency support
|
|
1753
|
+
- timings: add progress sampling
|
|
1754
|
+
- compat: add firefox workaround for autoplay
|
|
1800
1755
|
|
|
1801
1756
|
## v1.2.1 (2015-09-23)
|
|
1802
1757
|
|
|
1803
1758
|
### Bug fixes
|
|
1804
1759
|
|
|
1805
|
-
-
|
|
1806
|
-
|
|
1760
|
+
- stream: do not stall on loadedmetadata event
|
|
1807
1761
|
|
|
1808
1762
|
## v1.2.0 (2015-09-23)
|
|
1809
1763
|
|
|
@@ -1815,41 +1769,38 @@ We also started using eslint as our main linter instead of jshint.
|
|
|
1815
1769
|
|
|
1816
1770
|
### Added
|
|
1817
1771
|
|
|
1818
|
-
-
|
|
1819
|
-
-
|
|
1820
|
-
-
|
|
1821
|
-
-
|
|
1822
|
-
-
|
|
1823
|
-
|
|
1772
|
+
- smooth: customizable parser (7b50ce9)
|
|
1773
|
+
- smooth: add application/smil as SAMI content-type (e0aa2bb)
|
|
1774
|
+
- improve video start time by ticking on loadedmetadata (27bd43c)
|
|
1775
|
+
- dash: incremental id from adaptations/representations (c24fecb)
|
|
1776
|
+
- stream: discontinuity check on each stalled tick (3a5b796)
|
|
1824
1777
|
|
|
1825
1778
|
### Bug fixes
|
|
1826
1779
|
|
|
1827
|
-
-
|
|
1828
|
-
-
|
|
1829
|
-
-
|
|
1830
|
-
-
|
|
1831
|
-
-
|
|
1832
|
-
-
|
|
1833
|
-
-
|
|
1834
|
-
-
|
|
1835
|
-
|
|
1780
|
+
- fix missing new on Promise (4679632)
|
|
1781
|
+
- compat: fix IE11 compat for setMediaKeys (2ccb11f)
|
|
1782
|
+
- player: fix synchronous dispose on loadVideo (dc79bd1)
|
|
1783
|
+
- pipelines: fix audio/video init segment caches (ea3422f)
|
|
1784
|
+
- stream: remove initial seek hack (ae0ac23)
|
|
1785
|
+
- player: fix getVideoLoaded/PlayedTime (63bf304)
|
|
1786
|
+
- player: fix getUrl (577ce87)
|
|
1787
|
+
- manifest: enforce id setting to parsers (927d275)
|
|
1836
1788
|
|
|
1837
1789
|
## v1.1.0 (2015-08-14)
|
|
1838
1790
|
|
|
1839
1791
|
### Added
|
|
1840
1792
|
|
|
1841
|
-
-
|
|
1842
|
-
-
|
|
1843
|
-
-
|
|
1844
|
-
-
|
|
1793
|
+
- smoothstreaming transport support
|
|
1794
|
+
- api for initial aubio/video bitrate choice
|
|
1795
|
+
- simplify WebVTT support and implementation
|
|
1796
|
+
- allow percentage values on start/end time values
|
|
1845
1797
|
|
|
1846
1798
|
### Bug fixes
|
|
1847
1799
|
|
|
1848
|
-
-
|
|
1849
|
-
-
|
|
1850
|
-
-
|
|
1851
|
-
-
|
|
1852
|
-
|
|
1800
|
+
- fix local buffer representation out-of-sync with native ones
|
|
1801
|
+
- fix no retry for > 500 http codes
|
|
1802
|
+
- fix no MediaKeySession reuse on Chrome
|
|
1803
|
+
- fix quota error with MediaKeys attached to multiple video elements on Chrome
|
|
1853
1804
|
|
|
1854
1805
|
## v1.0.0 (2015-06-16)
|
|
1855
1806
|
|