shaka-player 4.9.13 → 4.10.1
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/README.md +4 -0
- package/dist/controls.css +2 -2
- package/dist/controls.css.map +1 -1
- package/dist/deps.js +24 -19
- package/dist/locales.js +46 -35
- package/dist/shaka-player.compiled.d.ts +291 -12
- package/dist/shaka-player.compiled.debug.d.ts +291 -12
- package/dist/shaka-player.compiled.debug.externs.js +443 -6
- package/dist/shaka-player.compiled.debug.js +651 -556
- package/dist/shaka-player.compiled.debug.map +4 -4
- package/dist/shaka-player.compiled.externs.js +443 -6
- package/dist/shaka-player.compiled.js +1325 -1270
- package/dist/shaka-player.compiled.map +4 -4
- package/dist/shaka-player.ui.d.ts +306 -13
- package/dist/shaka-player.ui.debug.d.ts +306 -13
- package/dist/shaka-player.ui.debug.externs.js +477 -18
- package/dist/shaka-player.ui.debug.js +799 -681
- package/dist/shaka-player.ui.debug.map +4 -4
- package/dist/shaka-player.ui.externs.js +477 -18
- package/dist/shaka-player.ui.js +1600 -1533
- package/dist/shaka-player.ui.map +4 -4
- package/externs/shaka/ads.js +21 -1
- package/externs/shaka/manifest.js +20 -1
- package/externs/shaka/manifest_parser.js +18 -1
- package/externs/shaka/player.js +164 -50
- package/lib/ads/ad_manager.js +225 -10
- package/lib/ads/ad_utils.js +323 -0
- package/lib/ads/ads_stats.js +24 -0
- package/lib/ads/client_side_ad_manager.js +42 -34
- package/lib/ads/interstitial_ad.js +292 -0
- package/lib/ads/interstitial_ad_manager.js +772 -0
- package/lib/ads/media_tailor_ad_manager.js +19 -22
- package/lib/ads/server_side_ad_manager.js +12 -15
- package/lib/cast/cast_utils.js +1 -0
- package/lib/cea/cea_utils.js +12 -0
- package/lib/cea/mp4_cea_parser.js +17 -0
- package/lib/dash/dash_parser.js +81 -28
- package/lib/dash/segment_base.js +3 -0
- package/lib/hls/hls_parser.js +429 -121
- package/lib/hls/manifest_text_parser.js +1 -0
- package/lib/media/adaptation_set_criteria.js +31 -1
- package/lib/media/drm_engine.js +16 -2
- package/lib/media/manifest_filterer.js +7 -5
- package/lib/media/preload_manager.js +8 -10
- package/lib/media/presentation_timeline.js +37 -5
- package/lib/media/quality_observer.js +68 -2
- package/lib/media/segment_reference.js +1 -1
- package/lib/media/segment_utils.js +33 -1
- package/lib/media/streaming_engine.js +120 -43
- package/lib/mss/mss_parser.js +13 -2
- package/lib/net/networking_engine.js +1 -0
- package/lib/offline/manifest_converter.js +3 -0
- package/lib/offline/offline_manifest_parser.js +5 -0
- package/lib/offline/storage.js +2 -0
- package/lib/player.js +498 -165
- package/lib/util/fake_event.js +1 -0
- package/lib/util/manifest_parser_utils.js +9 -2
- package/lib/util/mp4_box_parsers.js +32 -0
- package/lib/util/player_configuration.js +21 -9
- package/lib/util/stats.js +43 -0
- package/package.json +1 -1
- package/shaka-player.uncompiled.js +2 -0
- package/ui/ad_counter.js +3 -3
- package/ui/ad_position.js +3 -3
- package/ui/ad_statistics_button.js +237 -0
- package/ui/audio_language_selection.js +8 -4
- package/ui/controls.js +6 -3
- package/ui/element.js +3 -3
- package/ui/enums.js +1 -0
- package/ui/externs/ui.js +3 -0
- package/ui/language_utils.js +48 -3
- package/ui/less/containers.less +32 -0
- package/ui/less/thumbnails.less +13 -0
- package/ui/locales/en.json +2 -0
- package/ui/locales/es-419.json +2 -0
- package/ui/locales/es.json +3 -0
- package/ui/locales/fr.json +1 -0
- package/ui/locales/pl.json +1 -0
- package/ui/locales/pt-BR.json +1 -0
- package/ui/locales/pt-PT.json +1 -0
- package/ui/locales/source.json +8 -0
- package/ui/mute_button.js +4 -4
- package/ui/overflow_menu.js +3 -3
- package/ui/play_button.js +5 -7
- package/ui/presentation_time.js +3 -3
- package/ui/save_video_frame_button.js +196 -0
- package/ui/seek_bar.js +75 -20
- package/ui/skip_ad_button.js +4 -4
- package/ui/statistics_button.js +14 -2
- package/ui/ui.js +15 -0
- package/ui/volume_bar.js +4 -4
package/externs/shaka/ads.js
CHANGED
|
@@ -12,9 +12,11 @@
|
|
|
12
12
|
/**
|
|
13
13
|
* @typedef {{
|
|
14
14
|
* loadTimes: !Array.<number>,
|
|
15
|
+
* averageLoadTime: number,
|
|
15
16
|
* started: number,
|
|
16
17
|
* playedCompletely: number,
|
|
17
|
-
* skipped: number
|
|
18
|
+
* skipped: number,
|
|
19
|
+
* errors: number
|
|
18
20
|
* }}
|
|
19
21
|
*
|
|
20
22
|
* @description
|
|
@@ -22,12 +24,16 @@
|
|
|
22
24
|
*
|
|
23
25
|
* @property {number} loadTimes
|
|
24
26
|
* The set of amounts of time it took to get the final manifest.
|
|
27
|
+
* @property {number} averageLoadTime
|
|
28
|
+
* The average time it took to get the final manifest.
|
|
25
29
|
* @property {number} started
|
|
26
30
|
* The number of ads started.
|
|
27
31
|
* @property {number} playedCompletely
|
|
28
32
|
* The number of ads played completely.
|
|
29
33
|
* @property {number} skipped
|
|
30
34
|
* The number of ads skipped.
|
|
35
|
+
* @property {number} errors
|
|
36
|
+
* The number of ads with errors.
|
|
31
37
|
* @exportDoc
|
|
32
38
|
*/
|
|
33
39
|
shaka.extern.AdsStats;
|
|
@@ -77,6 +83,13 @@ shaka.extern.IAdManager = class extends EventTarget {
|
|
|
77
83
|
|
|
78
84
|
onAssetUnload() {}
|
|
79
85
|
|
|
86
|
+
/**
|
|
87
|
+
* @param {?HTMLElement} adContainer
|
|
88
|
+
* @param {!shaka.Player} basePlayer
|
|
89
|
+
* @param {!HTMLMediaElement} baseVideo
|
|
90
|
+
*/
|
|
91
|
+
initInterstitial(adContainer, basePlayer, baseVideo) {}
|
|
92
|
+
|
|
80
93
|
/**
|
|
81
94
|
* @param {!HTMLElement} adContainer
|
|
82
95
|
* @param {!HTMLMediaElement} video
|
|
@@ -170,6 +183,13 @@ shaka.extern.IAdManager = class extends EventTarget {
|
|
|
170
183
|
* @param {shaka.extern.MetadataFrame} value
|
|
171
184
|
*/
|
|
172
185
|
onCueMetadataChange(value) {}
|
|
186
|
+
|
|
187
|
+
/**
|
|
188
|
+
* @param {!shaka.Player} basePlayer
|
|
189
|
+
* @param {!HTMLMediaElement} baseVideo
|
|
190
|
+
* @param {shaka.extern.Interstitial} interstitial
|
|
191
|
+
*/
|
|
192
|
+
onInterstitialMetadata(basePlayer, baseVideo, interstitial) {}
|
|
173
193
|
};
|
|
174
194
|
|
|
175
195
|
|
|
@@ -22,7 +22,10 @@
|
|
|
22
22
|
* ignoreManifestTimestampsInSegmentsMode: boolean,
|
|
23
23
|
* type: string,
|
|
24
24
|
* serviceDescription: ?shaka.extern.ServiceDescription,
|
|
25
|
-
* nextUrl: ?string
|
|
25
|
+
* nextUrl: ?string,
|
|
26
|
+
* periodCount: number,
|
|
27
|
+
* gapCount: number,
|
|
28
|
+
* isLowLatency: boolean
|
|
26
29
|
* }}
|
|
27
30
|
*
|
|
28
31
|
* @description
|
|
@@ -96,6 +99,18 @@
|
|
|
96
99
|
* decrease latency.
|
|
97
100
|
* @property {?string} nextUrl
|
|
98
101
|
* The next url to play.
|
|
102
|
+
* @property {number} periodCount
|
|
103
|
+
* Number of periods found in a manifest. For DASH, it represents number of
|
|
104
|
+
* Period elements in a manifest. If streaming protocol does not implement
|
|
105
|
+
* period-like structure, it should be set to 1.
|
|
106
|
+
* <i>Defaults to <code>1</code>.</i>
|
|
107
|
+
* @property {number} gapCount
|
|
108
|
+
* The amount of gaps found in a manifest. For DASH, it represents number of
|
|
109
|
+
* discontinuities found between periods. For HLS, it is a number of EXT-X-GAP
|
|
110
|
+
* and GAP=YES occurrences. For MSS, it is always set to 0.
|
|
111
|
+
* If in src= mode or nothing is loaded, NaN.
|
|
112
|
+
* @property {bolean} isLowLatency
|
|
113
|
+
* If true, the manifest is Low Latency.
|
|
99
114
|
*
|
|
100
115
|
* @exportDoc
|
|
101
116
|
*/
|
|
@@ -188,6 +203,7 @@ shaka.extern.ServiceDescription;
|
|
|
188
203
|
* @typedef {{
|
|
189
204
|
* keySystem: string,
|
|
190
205
|
* encryptionScheme: string,
|
|
206
|
+
* keySystemUris: (Set.<string>|undefined),
|
|
191
207
|
* licenseServerUri: string,
|
|
192
208
|
* distinctiveIdentifierRequired: boolean,
|
|
193
209
|
* persistentStateRequired: boolean,
|
|
@@ -209,6 +225,9 @@ shaka.extern.ServiceDescription;
|
|
|
209
225
|
* @property {string} encryptionScheme
|
|
210
226
|
* <i>Required.</i> <br>
|
|
211
227
|
* The encryption scheme, e.g., "cenc", "cbcs", "cbcs-1-9".
|
|
228
|
+
* @property {(Set.<string>|undefined)} keySystemUris
|
|
229
|
+
* <i>Optional.</i> <br>
|
|
230
|
+
* The key system uri, e.g., "skd://" for fairplay.
|
|
212
231
|
* @property {string} licenseServerUri
|
|
213
232
|
* <i>Filled in by DRM config if missing.</i> <br>
|
|
214
233
|
* The license server URI.
|
|
@@ -111,6 +111,14 @@ shaka.extern.ManifestParser = class {
|
|
|
111
111
|
* @exportDoc
|
|
112
112
|
*/
|
|
113
113
|
banLocation(uri) {}
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Set media element.
|
|
117
|
+
*
|
|
118
|
+
* @param {HTMLMediaElement} mediaElement
|
|
119
|
+
* @exportDoc
|
|
120
|
+
*/
|
|
121
|
+
setMediaElement(mediaElement) {}
|
|
114
122
|
};
|
|
115
123
|
|
|
116
124
|
|
|
@@ -128,7 +136,10 @@ shaka.extern.ManifestParser = class {
|
|
|
128
136
|
* updateDuration: function(),
|
|
129
137
|
* newDrmInfo: function(shaka.extern.Stream),
|
|
130
138
|
* onManifestUpdated: function(),
|
|
131
|
-
* getBandwidthEstimate: function():number
|
|
139
|
+
* getBandwidthEstimate: function():number,
|
|
140
|
+
* onMetadata: function(string, number, ?number,
|
|
141
|
+
* !Array.<shaka.extern.MetadataFrame>),
|
|
142
|
+
* disableStream: function(!shaka.extern.Stream)
|
|
132
143
|
* }}
|
|
133
144
|
*
|
|
134
145
|
* @description
|
|
@@ -167,6 +178,12 @@ shaka.extern.ManifestParser = class {
|
|
|
167
178
|
* Should be called when the manifest is updated.
|
|
168
179
|
* @property {function():number} getBandwidthEstimate
|
|
169
180
|
* Get the estimated bandwidth in bits per second.
|
|
181
|
+
* @property {function(string, number, ?number,
|
|
182
|
+
* !Array.<shaka.extern.MetadataFrame>)} onMetadata
|
|
183
|
+
* Called when an metadata is found in the manifest.
|
|
184
|
+
* @property {function(!shaka.extern.Stream)} disableStream
|
|
185
|
+
* Called to temporarily disable a stream i.e. disabling all variant
|
|
186
|
+
* containing said stream.
|
|
170
187
|
* @exportDoc
|
|
171
188
|
*/
|
|
172
189
|
shaka.extern.ManifestParser.PlayerInterface;
|
package/externs/shaka/player.js
CHANGED
|
@@ -85,8 +85,13 @@ shaka.extern.StateChange;
|
|
|
85
85
|
* gapsJumped: number,
|
|
86
86
|
* stallsDetected: number,
|
|
87
87
|
*
|
|
88
|
+
* manifestSizeBytes: number,
|
|
88
89
|
* bytesDownloaded: number,
|
|
89
90
|
*
|
|
91
|
+
* nonFatalErrorCount: number,
|
|
92
|
+
* manifestPeriodCount: number,
|
|
93
|
+
* manifestGapCount: number,
|
|
94
|
+
*
|
|
90
95
|
* switchHistory: !Array.<shaka.extern.TrackChoice>,
|
|
91
96
|
* stateHistory: !Array.<shaka.extern.StateChange>
|
|
92
97
|
* }}
|
|
@@ -163,9 +168,25 @@ shaka.extern.StateChange;
|
|
|
163
168
|
* The presentation's max segment duration in seconds. If nothing is loaded,
|
|
164
169
|
* NaN.
|
|
165
170
|
*
|
|
171
|
+
* @property {number} manifestSizeBytes
|
|
172
|
+
* Size of the manifest payload. For DASH & MSS it will match the latest
|
|
173
|
+
* downloaded manifest. For HLS, it will match the lastly downloaded playlist.
|
|
174
|
+
* If nothing is loaded or in src= mode, NaN.
|
|
166
175
|
* @property {number} bytesDownloaded
|
|
167
176
|
* The bytes downloaded during the playback. If nothing is loaded, NaN.
|
|
168
177
|
*
|
|
178
|
+
* @property {number} nonFatalErrorCount
|
|
179
|
+
* The amount of non fatal errors that occurred. If nothing is loaded, NaN.
|
|
180
|
+
* @property {number} manifestPeriodCount
|
|
181
|
+
* The amount of periods occurred in the manifest. For DASH it represents
|
|
182
|
+
* number of Period elements in a manifest. For HLS & MSS it is always 1.
|
|
183
|
+
* In src= mode or if nothing is loaded, NaN.
|
|
184
|
+
* @property {number} manifestGapCount
|
|
185
|
+
* The amount of gaps found in a manifest. For DASH, it represents number of
|
|
186
|
+
* discontinuities found between periods. For HLS, it is a number of EXT-X-GAP
|
|
187
|
+
* and GAP=YES occurrences. For MSS, it is always set to 0.
|
|
188
|
+
* If in src= mode or nothing is loaded, NaN.
|
|
189
|
+
*
|
|
169
190
|
* @property {!Array.<shaka.extern.TrackChoice>} switchHistory
|
|
170
191
|
* A history of the stream changes.
|
|
171
192
|
* @property {!Array.<shaka.extern.StateChange>} stateHistory
|
|
@@ -563,6 +584,21 @@ shaka.extern.MetadataRawFrame;
|
|
|
563
584
|
shaka.extern.MetadataFrame;
|
|
564
585
|
|
|
565
586
|
|
|
587
|
+
/**
|
|
588
|
+
* @typedef {{
|
|
589
|
+
* startTime: number,
|
|
590
|
+
* endTime: ?number,
|
|
591
|
+
* values: !Array.<shaka.extern.MetadataFrame>
|
|
592
|
+
* }}
|
|
593
|
+
*
|
|
594
|
+
* @property {number} startTime
|
|
595
|
+
* @property {?number} endTime
|
|
596
|
+
* @property {!Array.<shaka.extern.MetadataFrame>} values
|
|
597
|
+
* @exportDoc
|
|
598
|
+
*/
|
|
599
|
+
shaka.extern.Interstitial;
|
|
600
|
+
|
|
601
|
+
|
|
566
602
|
/**
|
|
567
603
|
* @typedef {{
|
|
568
604
|
* schemeIdUri: string,
|
|
@@ -607,6 +643,9 @@ shaka.extern.TimelineRegionInfo;
|
|
|
607
643
|
* frameRate: ?number,
|
|
608
644
|
* height: ?number,
|
|
609
645
|
* mimeType: ?string,
|
|
646
|
+
* label: ?string,
|
|
647
|
+
* roles: ?Array.<string>,
|
|
648
|
+
* language: ?string,
|
|
610
649
|
* channelsCount: ?number,
|
|
611
650
|
* pixelAspectRatio: ?string,
|
|
612
651
|
* width: ?number
|
|
@@ -630,6 +669,12 @@ shaka.extern.TimelineRegionInfo;
|
|
|
630
669
|
* The video height in pixels.
|
|
631
670
|
* @property {string} mimeType
|
|
632
671
|
* The MIME type.
|
|
672
|
+
* @property {?string} label
|
|
673
|
+
* The stream's label, when available.
|
|
674
|
+
* @property {?Array.<string>} roles
|
|
675
|
+
* The stream's role, when available.
|
|
676
|
+
* @property {?string} language
|
|
677
|
+
* The stream's language, when available.
|
|
633
678
|
* @property {?number} channelsCount
|
|
634
679
|
* The number of audio channels, or null if unknown.
|
|
635
680
|
* @property {?string} pixelAspectRatio
|
|
@@ -1071,9 +1116,9 @@ shaka.extern.DashManifestConfiguration;
|
|
|
1071
1116
|
* @property {boolean} ignoreManifestProgramDateTime
|
|
1072
1117
|
* If <code>true</code>, the HLS parser will ignore the
|
|
1073
1118
|
* <code>EXT-X-PROGRAM-DATE-TIME</code> tags in the manifest and use media
|
|
1074
|
-
* sequence numbers instead.
|
|
1075
|
-
* Meant for streams where <code>EXT-X-PROGRAM-DATE-TIME</code> is
|
|
1076
|
-
* or malformed.
|
|
1119
|
+
* sequence numbers instead. It also causes EXT-X-DATERANGE tags to be
|
|
1120
|
+
* ignored. Meant for streams where <code>EXT-X-PROGRAM-DATE-TIME</code> is
|
|
1121
|
+
* incorrect or malformed.
|
|
1077
1122
|
* <i>Defaults to <code>false</code>.</i>
|
|
1078
1123
|
* @property {!Array.<string>} ignoreManifestProgramDateTimeForTypes
|
|
1079
1124
|
* An array of strings representing types for which
|
|
@@ -1178,7 +1223,8 @@ shaka.extern.MssManifestConfiguration;
|
|
|
1178
1223
|
* dash: shaka.extern.DashManifestConfiguration,
|
|
1179
1224
|
* hls: shaka.extern.HlsManifestConfiguration,
|
|
1180
1225
|
* mss: shaka.extern.MssManifestConfiguration,
|
|
1181
|
-
* raiseFatalErrorOnManifestUpdateRequestFailure: boolean
|
|
1226
|
+
* raiseFatalErrorOnManifestUpdateRequestFailure: boolean,
|
|
1227
|
+
* continueLoadingWhenPaused: boolean
|
|
1182
1228
|
* }}
|
|
1183
1229
|
*
|
|
1184
1230
|
* @property {shaka.extern.RetryParameters} retryParameters
|
|
@@ -1221,11 +1267,109 @@ shaka.extern.MssManifestConfiguration;
|
|
|
1221
1267
|
* @property {boolean} raiseFatalErrorOnManifestUpdateRequestFailure
|
|
1222
1268
|
* If true, manifest update request failures will cause a fatal error.
|
|
1223
1269
|
* Defaults to <code>false</code> if not provided.
|
|
1224
|
-
*
|
|
1270
|
+
* @property {boolean} continueLoadingWhenPaused
|
|
1271
|
+
* If true, live manifest will be updated with the regular intervals even if
|
|
1272
|
+
* the video is paused.
|
|
1273
|
+
* Defaults to <code>true</code> if not provided.
|
|
1225
1274
|
* @exportDoc
|
|
1226
1275
|
*/
|
|
1227
1276
|
shaka.extern.ManifestConfiguration;
|
|
1228
1277
|
|
|
1278
|
+
/**
|
|
1279
|
+
* @typedef {{
|
|
1280
|
+
* enabled: boolean,
|
|
1281
|
+
* stabilityThreshold: number,
|
|
1282
|
+
* rebufferIncrement: number,
|
|
1283
|
+
* maxAttempts: number,
|
|
1284
|
+
* maxLatency: number,
|
|
1285
|
+
* minLatency: number
|
|
1286
|
+
* }}
|
|
1287
|
+
*
|
|
1288
|
+
* @description
|
|
1289
|
+
* Dynamic Target Latency configuration options.
|
|
1290
|
+
*
|
|
1291
|
+
* @property {boolean} enabled
|
|
1292
|
+
* If <code>true</code>, dynamic latency for live sync is enabled. When
|
|
1293
|
+
* enabled, the target latency will be adjusted closer to the min latency
|
|
1294
|
+
* when playback is stable (see <code>stabilityThreshold</code>). If
|
|
1295
|
+
* there are rebuffering events, then the target latency will move towards
|
|
1296
|
+
* the max latency value in increments of <code>rebufferIncrement</code>.
|
|
1297
|
+
* Defaults to <code>false</code>.
|
|
1298
|
+
* @property {number} rebufferIncrement
|
|
1299
|
+
* The value, in seconds, to increment the target latency towards
|
|
1300
|
+
* <code>maxLatency</code> after a rebuffering event. Defaults to
|
|
1301
|
+
* <code>0.5</code>.
|
|
1302
|
+
* @property {number} stabilityThreshold
|
|
1303
|
+
* Number of seconds after a rebuffering before we are considered stable and
|
|
1304
|
+
* will move the target latency towards <code>minLatency</code>
|
|
1305
|
+
* value. Defaults to <code>60</code>
|
|
1306
|
+
* @property {number} maxAttempts
|
|
1307
|
+
* Number of times that dynamic target latency will back off to
|
|
1308
|
+
* <code>maxLatency</code> and attempt to adjust it closer to
|
|
1309
|
+
* <code>minLatency</code>. Defaults to <code>10</code>
|
|
1310
|
+
* @property {number} maxLatency
|
|
1311
|
+
* The latency to use when a rebuffering event causes us to back off from
|
|
1312
|
+
* the live edge. Defaults to <code>4</code>
|
|
1313
|
+
* @property {number} minLatency
|
|
1314
|
+
* The latency to work towards when the network is stable and we want to get
|
|
1315
|
+
* closer to the live edge. Defaults to <code>1</code>
|
|
1316
|
+
* @exportDoc
|
|
1317
|
+
*/
|
|
1318
|
+
shaka.extern.DynamicTargetLatencyConfiguration;
|
|
1319
|
+
|
|
1320
|
+
|
|
1321
|
+
/**
|
|
1322
|
+
* @typedef {{
|
|
1323
|
+
* enabled: boolean,
|
|
1324
|
+
* targetLatency: number,
|
|
1325
|
+
* targetLatencyTolerance: number,
|
|
1326
|
+
* maxPlaybackRate: number,
|
|
1327
|
+
* minPlaybackRate: number,
|
|
1328
|
+
* panicMode: boolean,
|
|
1329
|
+
* panicThreshold: number,
|
|
1330
|
+
* dynamicTargetLatency: shaka.extern.DynamicTargetLatencyConfiguration
|
|
1331
|
+
* }}
|
|
1332
|
+
*
|
|
1333
|
+
* @description
|
|
1334
|
+
* LiveSync configuration options.
|
|
1335
|
+
*
|
|
1336
|
+
* @property {boolean} enabled
|
|
1337
|
+
* Enable the live stream sync against the live edge by changing the playback
|
|
1338
|
+
* rate. Defaults to <code>false</code>.
|
|
1339
|
+
* Note: on some SmartTVs, if this is activated, it may not work or the sound
|
|
1340
|
+
* may be lost when activated.
|
|
1341
|
+
* @property {number} targetLatency
|
|
1342
|
+
* Preferred latency, in seconds. Effective only if liveSync is true.
|
|
1343
|
+
* Defaults to <code>0.5</code>.
|
|
1344
|
+
* @property {number} targetLatencyTolerance
|
|
1345
|
+
* Latency tolerance for target latency, in seconds. Effective only if
|
|
1346
|
+
* liveSync is enabled. Defaults to <code>0.5</code>.
|
|
1347
|
+
* @property {number} maxPlaybackRate
|
|
1348
|
+
* Max playback rate used for latency chasing. It is recommended to use a
|
|
1349
|
+
* value between 1 and 2. Effective only if liveSync is enabled. Defaults to
|
|
1350
|
+
* <code>1.1</code>.
|
|
1351
|
+
* @property {number} minPlaybackRate
|
|
1352
|
+
* Minimum playback rate used for latency chasing. It is recommended to use a
|
|
1353
|
+
* value between 0 and 1. Effective only if liveSync is enabled. Defaults to
|
|
1354
|
+
* <code>0.95</code>.
|
|
1355
|
+
* @property {boolean} panicMode
|
|
1356
|
+
* If <code>true</code>, panic mode for live sync is enabled. When enabled,
|
|
1357
|
+
* will set the playback rate to the <code>minPlaybackRate</code>
|
|
1358
|
+
* until playback has continued past a rebuffering for longer than the
|
|
1359
|
+
* <code>panicThreshold</code>. Defaults to <code>false</code>.
|
|
1360
|
+
* @property {number} panicThreshold
|
|
1361
|
+
* Number of seconds that playback stays in panic mode after a rebuffering.
|
|
1362
|
+
* Defaults to <code>60</code>
|
|
1363
|
+
* @property {shaka.extern.DynamicTargetLatencyConfiguration}
|
|
1364
|
+
* dynamicTargetLatency
|
|
1365
|
+
*
|
|
1366
|
+
* The dynamic target latency config for dynamically adjusting the target
|
|
1367
|
+
* latency to be closer to edge when network conditions are good and to back
|
|
1368
|
+
* off when network conditions are bad.
|
|
1369
|
+
* @exportDoc
|
|
1370
|
+
*/
|
|
1371
|
+
shaka.extern.LiveSyncConfiguration;
|
|
1372
|
+
|
|
1229
1373
|
|
|
1230
1374
|
/**
|
|
1231
1375
|
* @typedef {{
|
|
@@ -1245,7 +1389,6 @@ shaka.extern.ManifestConfiguration;
|
|
|
1245
1389
|
* stallEnabled: boolean,
|
|
1246
1390
|
* stallThreshold: number,
|
|
1247
1391
|
* stallSkip: number,
|
|
1248
|
-
* useNativeHlsOnSafari: boolean,
|
|
1249
1392
|
* useNativeHlsForFairPlay: boolean,
|
|
1250
1393
|
* inaccurateManifestTolerance: number,
|
|
1251
1394
|
* lowLatencyMode: boolean,
|
|
@@ -1263,14 +1406,7 @@ shaka.extern.ManifestConfiguration;
|
|
|
1263
1406
|
* disableAudioPrefetch: boolean,
|
|
1264
1407
|
* disableTextPrefetch: boolean,
|
|
1265
1408
|
* disableVideoPrefetch: boolean,
|
|
1266
|
-
* liveSync:
|
|
1267
|
-
* liveSyncTargetLatencyTolerance: number,
|
|
1268
|
-
* liveSyncMaxLatency: number,
|
|
1269
|
-
* liveSyncPlaybackRate: number,
|
|
1270
|
-
* liveSyncMinLatency: number,
|
|
1271
|
-
* liveSyncMinPlaybackRate: number,
|
|
1272
|
-
* liveSyncPanicMode: boolean,
|
|
1273
|
-
* liveSyncPanicThreshold: number,
|
|
1409
|
+
* liveSync: shaka.extern.LiveSyncConfiguration,
|
|
1274
1410
|
* allowMediaSourceRecoveries: boolean,
|
|
1275
1411
|
* minTimeBetweenRecoveries: number,
|
|
1276
1412
|
* vodDynamicPlaybackRate: boolean,
|
|
@@ -1279,7 +1415,9 @@ shaka.extern.ManifestConfiguration;
|
|
|
1279
1415
|
* infiniteLiveStreamDuration: boolean,
|
|
1280
1416
|
* preloadNextUrlWindow: number,
|
|
1281
1417
|
* loadTimeout: number,
|
|
1282
|
-
* clearDecodingCache: boolean
|
|
1418
|
+
* clearDecodingCache: boolean,
|
|
1419
|
+
* dontChooseCodecs: boolean,
|
|
1420
|
+
* shouldFixTimestampOffset: boolean
|
|
1283
1421
|
* }}
|
|
1284
1422
|
*
|
|
1285
1423
|
* @description
|
|
@@ -1352,11 +1490,6 @@ shaka.extern.ManifestConfiguration;
|
|
|
1352
1490
|
* been detected. If 0, the player will pause and immediately play instead of
|
|
1353
1491
|
* seeking. A value of 0 is recommended and provided as default on TV
|
|
1354
1492
|
* platforms (WebOS, Tizen, Chromecast, etc).
|
|
1355
|
-
* @property {boolean} useNativeHlsOnSafari
|
|
1356
|
-
* Desktop Safari has both MediaSource and their native HLS implementation.
|
|
1357
|
-
* Depending on the application's needs, it may prefer one over the other.
|
|
1358
|
-
* Only applies to clear streams
|
|
1359
|
-
* Defaults to <code>true</code>.
|
|
1360
1493
|
* @property {boolean} useNativeHlsForFairPlay
|
|
1361
1494
|
* Desktop Safari has both MediaSource and their native HLS implementation.
|
|
1362
1495
|
* Depending on the application's needs, it may prefer one over the other.
|
|
@@ -1424,36 +1557,8 @@ shaka.extern.ManifestConfiguration;
|
|
|
1424
1557
|
* If set and prefetch limit is defined, it will prevent from prefetching data
|
|
1425
1558
|
* for video.
|
|
1426
1559
|
* Defaults to <code>false</code>.
|
|
1427
|
-
* @property {
|
|
1428
|
-
*
|
|
1429
|
-
* rate. Defaults to <code>false</code>.
|
|
1430
|
-
* Note: on some SmartTVs, if this is activated, it may not work or the sound
|
|
1431
|
-
* may be lost when activated.
|
|
1432
|
-
* @property {number} liveSyncTargetLatencyTolerance
|
|
1433
|
-
* Latency tolerance for target latency, in seconds. Effective only if
|
|
1434
|
-
* liveSync is true. Defaults to <code>0.5</code>.
|
|
1435
|
-
* @property {number} liveSyncMaxLatency
|
|
1436
|
-
* Maximum acceptable latency, in seconds. Effective only if liveSync is
|
|
1437
|
-
* true. Defaults to <code>1</code>.
|
|
1438
|
-
* @property {number} liveSyncPlaybackRate
|
|
1439
|
-
* Playback rate used for latency chasing. It is recommended to use a value
|
|
1440
|
-
* between 1 and 2. Effective only if liveSync is true. Defaults to
|
|
1441
|
-
* <code>1.1</code>.
|
|
1442
|
-
* @property {number} liveSyncMinLatency
|
|
1443
|
-
* Minimum acceptable latency, in seconds. Effective only if liveSync is
|
|
1444
|
-
* true. Defaults to <code>0</code>.
|
|
1445
|
-
* @property {number} liveSyncMinPlaybackRate
|
|
1446
|
-
* Minimum playback rate used for latency chasing. It is recommended to use a
|
|
1447
|
-
* value between 0 and 1. Effective only if liveSync is true. Defaults to
|
|
1448
|
-
* <code>0.95</code>.
|
|
1449
|
-
* @property {boolean} liveSyncPanicMode
|
|
1450
|
-
* If <code>true</code>, panic mode for live sync is enabled. When enabled,
|
|
1451
|
-
* will set the playback rate to the <code>liveSyncMinPlaybackRate</code>
|
|
1452
|
-
* until playback has continued past a rebuffering for longer than the
|
|
1453
|
-
* <code>liveSyncPanicThreshold</code>. Defaults to <code>false</code>.
|
|
1454
|
-
* @property {number} liveSyncPanicThreshold
|
|
1455
|
-
* Number of seconds that playback stays in panic mode after a rebuffering.
|
|
1456
|
-
* Defaults to <code>60</code>
|
|
1560
|
+
* @property {shaka.extern.LiveSyncConfiguration} liveSync
|
|
1561
|
+
* The live sync configuration for keeping near the live edge.
|
|
1457
1562
|
* @property {boolean} allowMediaSourceRecoveries
|
|
1458
1563
|
* Indicate if we should recover from VIDEO_ERROR resetting Media Source.
|
|
1459
1564
|
* Defaults to <code>true</code>.
|
|
@@ -1492,6 +1597,15 @@ shaka.extern.ManifestConfiguration;
|
|
|
1492
1597
|
* playbacks on some platforms.
|
|
1493
1598
|
* Defaults to <code>true</code> on PlayStation devices and to
|
|
1494
1599
|
* <code>false</code> on other devices.
|
|
1600
|
+
* @property {boolean} dontChooseCodecs
|
|
1601
|
+
* If true, we don't choose codecs in the player, and keep all the variants.
|
|
1602
|
+
* Defaults to <code>false</code>.
|
|
1603
|
+
* @property {boolean} shouldFixTimestampOffset
|
|
1604
|
+
* If true, we will try to fix problems when the timestampOffset is less than
|
|
1605
|
+
* the baseMediaDecodeTime. This only works when the manifest is DASH with
|
|
1606
|
+
* MP4 segments.
|
|
1607
|
+
* Defaults to <code>false</code> except on Tizen, WebOS whose default value
|
|
1608
|
+
* is <code>true</code>.
|
|
1495
1609
|
* @exportDoc
|
|
1496
1610
|
*/
|
|
1497
1611
|
shaka.extern.StreamingConfiguration;
|