bigscreen-player 10.15.5 → 10.16.0
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/dist/esm/{embeddedsubtitles-a9a29366.js → embeddedsubtitles-e981440e.js} +1 -1
- package/dist/esm/{imscsubtitles-33e1c869.js → imscsubtitles-70f433df.js} +1 -1
- package/dist/esm/{legacysubtitles-df133753.js → legacysubtitles-cd82cb3e.js} +1 -1
- package/dist/esm/{main-b8ed400c.js → main-bfedf7e6.js} +8 -6
- package/dist/esm/main.js +1 -1
- package/dist/esm/{msestrategy-65b9aef1.js → msestrategy-b3da415e.js} +86 -20
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { fromXML, generateISD, renderHTML } from 'smp-imsc';
|
|
2
|
-
import { U as Utils, a as DebugTool, P as Plugins, D as DOMHelpers } from './main-
|
|
2
|
+
import { U as Utils, a as DebugTool, P as Plugins, D as DOMHelpers } from './main-bfedf7e6.js';
|
|
3
3
|
import 'tslib';
|
|
4
4
|
|
|
5
5
|
function EmbeddedSubtitles(mediaPlayer, parentElement, { autoStart = false, defaultStyleOpts = {} } = {}) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { fromXML, generateISD, renderHTML } from 'smp-imsc';
|
|
2
|
-
import { f as findSegmentTemplate, L as LoadUrl, a as DebugTool, P as Plugins, U as Utils, D as DOMHelpers } from './main-
|
|
2
|
+
import { f as findSegmentTemplate, L as LoadUrl, a as DebugTool, P as Plugins, U as Utils, D as DOMHelpers } from './main-bfedf7e6.js';
|
|
3
3
|
import 'tslib';
|
|
4
4
|
|
|
5
5
|
const SEGMENTS_BUFFER_SIZE = 3;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { D as DOMHelpers, a as DebugTool, P as Plugins, L as LoadUrl, T as TransportControlPosition } from './main-
|
|
1
|
+
import { D as DOMHelpers, a as DebugTool, P as Plugins, L as LoadUrl, T as TransportControlPosition } from './main-bfedf7e6.js';
|
|
2
2
|
import 'tslib';
|
|
3
3
|
|
|
4
4
|
/**
|
|
@@ -5710,7 +5710,7 @@ BasicStrategy.getLiveSupport = () => LiveSupport.SEEKABLE;
|
|
|
5710
5710
|
function StrategyPicker() {
|
|
5711
5711
|
return new Promise((resolve, reject) => {
|
|
5712
5712
|
if (window.bigscreenPlayer.playbackStrategy === PlaybackStrategy.MSE) {
|
|
5713
|
-
return import('./msestrategy-
|
|
5713
|
+
return import('./msestrategy-b3da415e.js')
|
|
5714
5714
|
.then(({ default: MSEStrategy }) => resolve(MSEStrategy))
|
|
5715
5715
|
.catch((reason) => {
|
|
5716
5716
|
const error = new Error(isError(reason) ? reason.message : undefined);
|
|
@@ -6005,8 +6005,9 @@ var Plugins = {
|
|
|
6005
6005
|
onPlayerInfoUpdated: (evt) => callOnAllPlugins("onPlayerInfoUpdated", evt),
|
|
6006
6006
|
onManifestLoaded: (manifest) => callOnAllPlugins("onManifestLoaded", manifest),
|
|
6007
6007
|
onManifestParseError: (evt) => callOnAllPlugins("onManifestParseError", evt),
|
|
6008
|
+
onDownloadQualityChange: (evt) => callOnAllPlugins("onDownloadQualityChange", evt),
|
|
6008
6009
|
onQualityChangeRequested: (evt) => callOnAllPlugins("onQualityChangeRequested", evt),
|
|
6009
|
-
|
|
6010
|
+
onQualityChangeRendered: (evt) => callOnAllPlugins("onQualityChangeRendered", evt),
|
|
6010
6011
|
onSubtitlesLoadError: (evt) => callOnAllPlugins("onSubtitlesLoadError", evt),
|
|
6011
6012
|
onSubtitlesTimeout: (evt) => callOnAllPlugins("onSubtitlesTimeout", evt),
|
|
6012
6013
|
onSubtitlesXMLError: (evt) => callOnAllPlugins("onSubtitlesXMLError", evt),
|
|
@@ -6015,6 +6016,7 @@ var Plugins = {
|
|
|
6015
6016
|
onSubtitlesDynamicLoadError: (evt) => callOnAllPlugins("onSubtitlesDynamicLoadError", evt),
|
|
6016
6017
|
onFragmentContentLengthMismatch: (evt) => callOnAllPlugins("onFragmentContentLengthMismatch", evt),
|
|
6017
6018
|
onQuotaExceeded: (evt) => callOnAllPlugins("onQuotaExceeded", evt),
|
|
6019
|
+
onPlaybackQualityChange: (evt) => callOnAllPlugins("onPlaybackQualityChange", evt),
|
|
6018
6020
|
onPlaybackRateChanged: (evt) => callOnAllPlugins("onPlaybackRateChanged", evt),
|
|
6019
6021
|
onPlaybackFrozen: (evt) => callOnAllPlugins("onPlaybackFrozen", evt),
|
|
6020
6022
|
},
|
|
@@ -6509,7 +6511,7 @@ const PauseTriggers = {
|
|
|
6509
6511
|
DEVICE: 3,
|
|
6510
6512
|
};
|
|
6511
6513
|
|
|
6512
|
-
var Version = "10.
|
|
6514
|
+
var Version = "10.16.0";
|
|
6513
6515
|
|
|
6514
6516
|
/* eslint-disable no-use-before-define */
|
|
6515
6517
|
|
|
@@ -7701,7 +7703,7 @@ function Subtitles(
|
|
|
7701
7703
|
|
|
7702
7704
|
if (available()) {
|
|
7703
7705
|
if (useLegacySubs) {
|
|
7704
|
-
import('./legacysubtitles-
|
|
7706
|
+
import('./legacysubtitles-cd82cb3e.js')
|
|
7705
7707
|
.then(({ default: LegacySubtitles }) => {
|
|
7706
7708
|
subtitlesContainer = LegacySubtitles(mediaPlayer, playbackElement, mediaSources, {
|
|
7707
7709
|
alwaysOnTop,
|
|
@@ -7715,7 +7717,7 @@ function Subtitles(
|
|
|
7715
7717
|
Plugins.interface.onSubtitlesDynamicLoadError();
|
|
7716
7718
|
});
|
|
7717
7719
|
} else if (embeddedSubs) {
|
|
7718
|
-
import('./embeddedsubtitles-
|
|
7720
|
+
import('./embeddedsubtitles-e981440e.js')
|
|
7719
7721
|
.then(({ default: EmbeddedSubtitles }) => {
|
|
7720
7722
|
subtitlesContainer = EmbeddedSubtitles(mediaPlayer, playbackElement, {
|
|
7721
7723
|
autoStart,
|
|
@@ -7728,7 +7730,7 @@ function Subtitles(
|
|
|
7728
7730
|
Plugins.interface.onSubtitlesDynamicLoadError();
|
|
7729
7731
|
});
|
|
7730
7732
|
} else {
|
|
7731
|
-
import('./imscsubtitles-
|
|
7733
|
+
import('./imscsubtitles-70f433df.js')
|
|
7732
7734
|
.then(({ default: IMSCSubtitles }) => {
|
|
7733
7735
|
subtitlesContainer = IMSCSubtitles(mediaPlayer, playbackElement, mediaSources, {
|
|
7734
7736
|
alwaysOnTop,
|
package/dist/esm/main.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { B as BigscreenPlayer, a as DebugTool, E as EntryCategory, b as LiveSupport, c as ManifestType, M as MediaKinds, d as MediaState, g as MockBigscreenPlayer, h as PauseTriggers, i as PlaybackStrategy, k as Timeline, j as TransferFormat, T as TransportControlPosition, W as WindowTypes, l as isMessage, m as isMetric, n as isTrace } from './main-
|
|
1
|
+
export { B as BigscreenPlayer, a as DebugTool, E as EntryCategory, b as LiveSupport, c as ManifestType, M as MediaKinds, d as MediaState, g as MockBigscreenPlayer, h as PauseTriggers, i as PlaybackStrategy, k as Timeline, j as TransferFormat, T as TransportControlPosition, W as WindowTypes, l as isMessage, m as isMetric, n as isTrace } from './main-bfedf7e6.js';
|
|
2
2
|
import 'tslib';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { MediaPlayer } from 'dashjs/index';
|
|
2
|
-
import { U as Utils, M as MediaKinds, b as LiveSupport, a as DebugTool, c as ManifestType, P as Plugins, d as MediaState, e as autoResumeAtStartOfRange, D as DOMHelpers } from './main-
|
|
2
|
+
import { U as Utils, M as MediaKinds, b as LiveSupport, a as DebugTool, c as ManifestType, P as Plugins, d as MediaState, e as autoResumeAtStartOfRange, D as DOMHelpers } from './main-bfedf7e6.js';
|
|
3
3
|
import 'tslib';
|
|
4
4
|
|
|
5
5
|
function filter(manifest, representationOptions) {
|
|
@@ -119,6 +119,31 @@ function convertTimeRangesToArray(ranges) {
|
|
|
119
119
|
return array;
|
|
120
120
|
}
|
|
121
121
|
|
|
122
|
+
function setPropertyPath(target, path, value) {
|
|
123
|
+
if (target == null || (typeof target !== "object" && typeof target !== "function")) {
|
|
124
|
+
throw new TypeError(`Target must be an object. (got ${target})`);
|
|
125
|
+
}
|
|
126
|
+
const keysDesc = typeof path === "string" ? path.split(".") : path;
|
|
127
|
+
if (keysDesc.length === 0) {
|
|
128
|
+
throw new TypeError("Empty path provided. (got [])");
|
|
129
|
+
}
|
|
130
|
+
const key = keysDesc.shift();
|
|
131
|
+
if (key == null) {
|
|
132
|
+
throw new TypeError(`Cannot index object with key. (got key '${key}')`);
|
|
133
|
+
}
|
|
134
|
+
if (keysDesc.length === 0) {
|
|
135
|
+
target[key] = value;
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
let next = target[key];
|
|
139
|
+
if (next != null && typeof next !== "object" && typeof next !== "function") {
|
|
140
|
+
throw new TypeError(`Cannot assign to primitive value. (got '${next}')`);
|
|
141
|
+
}
|
|
142
|
+
next !== null && next !== void 0 ? next : (next = {});
|
|
143
|
+
target[key] = next;
|
|
144
|
+
setPropertyPath(next, keysDesc, value);
|
|
145
|
+
}
|
|
146
|
+
|
|
122
147
|
const DEFAULT_SETTINGS = {
|
|
123
148
|
liveDelay: 0,
|
|
124
149
|
seekDurationPadding: 1.1,
|
|
@@ -193,6 +218,10 @@ function MSEStrategy(
|
|
|
193
218
|
[MediaKinds.AUDIO]: undefined,
|
|
194
219
|
[MediaKinds.VIDEO]: undefined,
|
|
195
220
|
},
|
|
221
|
+
playbackQuality: {
|
|
222
|
+
[MediaKinds.AUDIO]: undefined,
|
|
223
|
+
[MediaKinds.VIDEO]: undefined,
|
|
224
|
+
},
|
|
196
225
|
playbackBitrate: undefined,
|
|
197
226
|
bufferLength: undefined,
|
|
198
227
|
latency: undefined,
|
|
@@ -438,6 +467,8 @@ function MSEStrategy(
|
|
|
438
467
|
mediaPlayer.setMediaDuration(Number.MAX_SAFE_INTEGER);
|
|
439
468
|
}
|
|
440
469
|
|
|
470
|
+
DebugTool.info("Stream initialised");
|
|
471
|
+
|
|
441
472
|
if (mediaPlayer.getActiveStream()?.getHasVideoTrack()) {
|
|
442
473
|
dispatchDownloadQualityChangeForKind(MediaKinds.VIDEO);
|
|
443
474
|
dispatchMaxQualityChangeForKind(MediaKinds.VIDEO);
|
|
@@ -486,6 +517,43 @@ function MSEStrategy(
|
|
|
486
517
|
const switchToPart = ` to ${qualityIndex} (${(bitrateInBps / 1000).toFixed(0)} kbps)`;
|
|
487
518
|
|
|
488
519
|
DebugTool.info(`${abrChangePart}${switchFromPart}${switchToPart}`);
|
|
520
|
+
|
|
521
|
+
Plugins.interface.onDownloadQualityChange({
|
|
522
|
+
type: "downloadqualitychange",
|
|
523
|
+
detail: {
|
|
524
|
+
mediaType: kind,
|
|
525
|
+
currentBitrateInBps: bitrateInBps,
|
|
526
|
+
currentQualityIndex: qualityIndex,
|
|
527
|
+
previousBitrateInBps: prevBitrateInBps,
|
|
528
|
+
previousQualityIndex: prevQualityIndex,
|
|
529
|
+
},
|
|
530
|
+
});
|
|
531
|
+
}
|
|
532
|
+
|
|
533
|
+
function dispatchPlaybackQualityChangeForKind(kind, { qualityIndex } = {}) {
|
|
534
|
+
const { qualityIndex: previousQualityIndex, bitrateInBps: previousBitrateInBps } =
|
|
535
|
+
playerMetadata.playbackQuality[kind] ?? {};
|
|
536
|
+
|
|
537
|
+
if (previousQualityIndex === qualityIndex) {
|
|
538
|
+
return
|
|
539
|
+
}
|
|
540
|
+
|
|
541
|
+
const bitrateInBps = playbackBitrateForRepresentationIndex(qualityIndex, kind);
|
|
542
|
+
|
|
543
|
+
playerMetadata.playbackQuality[kind] = { bitrateInBps, qualityIndex };
|
|
544
|
+
|
|
545
|
+
DebugTool.dynamicMetric(`${kind}-playback-quality`, [qualityIndex, bitrateInBps]);
|
|
546
|
+
|
|
547
|
+
Plugins.interface.onPlaybackQualityChange({
|
|
548
|
+
type: "playbackqualitychange",
|
|
549
|
+
detail: {
|
|
550
|
+
mediaType: kind,
|
|
551
|
+
previousBitrateInBps,
|
|
552
|
+
previousQualityIndex,
|
|
553
|
+
currentBitrateInBps: bitrateInBps,
|
|
554
|
+
currentQualityIndex: qualityIndex,
|
|
555
|
+
},
|
|
556
|
+
});
|
|
489
557
|
}
|
|
490
558
|
|
|
491
559
|
function dispatchMaxQualityChangeForKind(kind) {
|
|
@@ -536,23 +604,16 @@ function MSEStrategy(
|
|
|
536
604
|
}
|
|
537
605
|
|
|
538
606
|
function onQualityChangeRendered(event) {
|
|
539
|
-
|
|
540
|
-
event.newQuality !== undefined &&
|
|
541
|
-
(event.mediaType === MediaKinds.AUDIO || event.mediaType === MediaKinds.VIDEO)
|
|
542
|
-
) {
|
|
543
|
-
const { mediaType, newQuality } = event;
|
|
544
|
-
|
|
545
|
-
DebugTool.dynamicMetric(`${mediaType}-playback-quality`, [
|
|
546
|
-
newQuality,
|
|
547
|
-
playbackBitrateForRepresentationIndex(newQuality, mediaType),
|
|
548
|
-
]);
|
|
607
|
+
const { mediaType, newQuality } = event;
|
|
549
608
|
|
|
609
|
+
if (newQuality !== undefined && (mediaType === MediaKinds.AUDIO || mediaType === MediaKinds.VIDEO)) {
|
|
610
|
+
dispatchPlaybackQualityChangeForKind(mediaType, { qualityIndex: newQuality });
|
|
550
611
|
dispatchMaxQualityChangeForKind(mediaType);
|
|
551
612
|
}
|
|
552
613
|
|
|
553
614
|
emitPlayerInfo();
|
|
554
615
|
|
|
555
|
-
Plugins.interface.
|
|
616
|
+
Plugins.interface.onQualityChangeRendered(event);
|
|
556
617
|
}
|
|
557
618
|
|
|
558
619
|
/**
|
|
@@ -1129,17 +1190,22 @@ function MSEStrategy(
|
|
|
1129
1190
|
* Set constrained audio or video bitrate
|
|
1130
1191
|
*/
|
|
1131
1192
|
function setBitrateConstraint(mediaKind, minBitrateKbps, maxBitrateKbps) {
|
|
1193
|
+
if (mediaKind !== MediaKinds.AUDIO && mediaKind !== MediaKinds.VIDEO) {
|
|
1194
|
+
throw new TypeError(`Bitrate constraint not supported for this media kind. (got ${mediaKind})`)
|
|
1195
|
+
}
|
|
1196
|
+
|
|
1197
|
+
if (mediaPlayer == null) {
|
|
1198
|
+
setPropertyPath(playerSettings, ["streaming", "abr", "minBitrate", mediaKind], minBitrateKbps);
|
|
1199
|
+
setPropertyPath(playerSettings, ["streaming", "abr", "maxBitrate", mediaKind], maxBitrateKbps);
|
|
1200
|
+
|
|
1201
|
+
return
|
|
1202
|
+
}
|
|
1203
|
+
|
|
1132
1204
|
mediaPlayer.updateSettings({
|
|
1133
1205
|
streaming: {
|
|
1134
1206
|
abr: {
|
|
1135
|
-
minBitrate: {
|
|
1136
|
-
|
|
1137
|
-
video: mediaKind === MediaKinds.VIDEO ? minBitrateKbps : -1,
|
|
1138
|
-
},
|
|
1139
|
-
maxBitrate: {
|
|
1140
|
-
audio: mediaKind === MediaKinds.AUDIO ? maxBitrateKbps : -1,
|
|
1141
|
-
video: mediaKind === MediaKinds.VIDEO ? maxBitrateKbps : -1,
|
|
1142
|
-
},
|
|
1207
|
+
minBitrate: { [mediaKind]: minBitrateKbps },
|
|
1208
|
+
maxBitrate: { [mediaKind]: maxBitrateKbps },
|
|
1143
1209
|
},
|
|
1144
1210
|
},
|
|
1145
1211
|
});
|