eb-player 2.0.6 → 2.0.8
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/build/ebplayer.bundle.js +39 -25
- package/dist/build/ebplayer.bundle.js.map +1 -1
- package/dist/build/types/eb-player.d.ts.map +1 -1
- package/dist/build/types/engines/base-engine.d.ts.map +1 -1
- package/dist/build/types/engines/hls.d.ts +7 -0
- package/dist/build/types/engines/hls.d.ts.map +1 -1
- package/dist/players/equipe/EB_lequipe-preprod.js +7 -7
- package/package.json +1 -1
- package/dist/players/equipe/equipe.js +0 -383
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.EBPlayer = {}));
|
|
5
5
|
})(this, (function (exports) { 'use strict';
|
|
6
6
|
|
|
7
|
-
var __EB_PLAYER_VERSION__ = "2.0.
|
|
7
|
+
var __EB_PLAYER_VERSION__ = "2.0.7";
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* Finite State Machine for player playback state transitions.
|
|
@@ -4284,6 +4284,15 @@
|
|
|
4284
4284
|
video.addEventListener('ended', () => {
|
|
4285
4285
|
state.playbackState = 'ended';
|
|
4286
4286
|
}, { signal });
|
|
4287
|
+
// Safety net: clear stale 'buffering' state when playback is clearly advancing.
|
|
4288
|
+
// In some edge cases (live stream segment boundaries), the browser fires 'waiting'
|
|
4289
|
+
// but never fires 'playing' even though video resumes from buffer. The timeupdate
|
|
4290
|
+
// event fires reliably while time advances, so we use it to recover.
|
|
4291
|
+
video.addEventListener('timeupdate', () => {
|
|
4292
|
+
if (state.playbackState === 'buffering' && !video.paused && video.readyState >= 3) {
|
|
4293
|
+
state.playbackState = 'playing';
|
|
4294
|
+
}
|
|
4295
|
+
}, { signal });
|
|
4287
4296
|
}
|
|
4288
4297
|
/**
|
|
4289
4298
|
* Seek to a specific time. Default implementation sets video.currentTime.
|
|
@@ -5112,6 +5121,14 @@
|
|
|
5112
5121
|
getDriver() {
|
|
5113
5122
|
return this.driver;
|
|
5114
5123
|
}
|
|
5124
|
+
/**
|
|
5125
|
+
* Returns the CDN token manager used by this engine.
|
|
5126
|
+
* Allows the snapshot handler to share the same manager (avoids duplicate token requests).
|
|
5127
|
+
* Returns null when no token URL is configured or before init().
|
|
5128
|
+
*/
|
|
5129
|
+
getTokenManager() {
|
|
5130
|
+
return this.tokenManager;
|
|
5131
|
+
}
|
|
5115
5132
|
// -------------------------------------------------------------------------
|
|
5116
5133
|
// BaseEngine hooks
|
|
5117
5134
|
// -------------------------------------------------------------------------
|
|
@@ -6366,30 +6383,14 @@
|
|
|
6366
6383
|
else {
|
|
6367
6384
|
const win = window;
|
|
6368
6385
|
if (win.Hls) {
|
|
6369
|
-
//
|
|
6370
|
-
|
|
6371
|
-
|
|
6372
|
-
snapshotTokenManager = new CDNTokenManager({
|
|
6373
|
-
token: mergedConfig.token,
|
|
6374
|
-
tokenType: mergedConfig.tokenType,
|
|
6375
|
-
srcInTokenRequest: mergedConfig.srcInTokenRequest,
|
|
6376
|
-
extraParamsCallback: (mergedConfig.engineSettings.extraParamsCallback ?? mergedConfig.extraParamsCallback),
|
|
6377
|
-
onCDNTokenError: mergedConfig.engineSettings.onCDNTokenError
|
|
6378
|
-
});
|
|
6379
|
-
}
|
|
6386
|
+
// Share the main engine's token manager with the snapshot handler
|
|
6387
|
+
// to avoid duplicate token requests (one CDNTokenManager per player instance)
|
|
6388
|
+
const sharedTokenManager = engine.getTokenManager();
|
|
6380
6389
|
// Build DRM config (emeEnabled, drmSystems, licenseXhrSetup) for the snapshot hls.js instance
|
|
6381
|
-
const snapshotDrmConfigurator = new DrmConfigurator(
|
|
6390
|
+
const snapshotDrmConfigurator = new DrmConfigurator(sharedTokenManager);
|
|
6382
6391
|
const snapshotDrmConfig = snapshotDrmConfigurator.buildHlsConfig(mergedConfig.engineSettings);
|
|
6383
|
-
const handler = new HlsSnapshotHandler({ src, engineSettings: { ...mergedConfig.engineSettings, ...snapshotDrmConfig } },
|
|
6384
|
-
|
|
6385
|
-
const tokenReady = snapshotTokenManager && src
|
|
6386
|
-
? snapshotTokenManager.fetchToken({ src }).catch((error) => {
|
|
6387
|
-
console.warn('EBPlayer: Snapshot token fetch failed:', error);
|
|
6388
|
-
})
|
|
6389
|
-
: Promise.resolve();
|
|
6390
|
-
tokenReady.then(() => {
|
|
6391
|
-
return handler.init(win.Hls);
|
|
6392
|
-
})
|
|
6392
|
+
const handler = new HlsSnapshotHandler({ src, engineSettings: { ...mergedConfig.engineSettings, ...snapshotDrmConfig } }, sharedTokenManager);
|
|
6393
|
+
handler.init(win.Hls)
|
|
6393
6394
|
.then(() => {
|
|
6394
6395
|
activeSnapshotDestroy = () => handler.destroy();
|
|
6395
6396
|
const snapshotVideo = handler.getVideo();
|
|
@@ -6446,9 +6447,22 @@
|
|
|
6446
6447
|
}, 100);
|
|
6447
6448
|
});
|
|
6448
6449
|
// Auto-open the stream if src is provided in config (matches legacy player behaviour
|
|
6449
|
-
// where consumers call start({ src: '...' }) and expect playback to begin immediately)
|
|
6450
|
+
// where consumers call start({ src: '...' }) and expect playback to begin immediately).
|
|
6451
|
+
// When autoplay is false, defer open() until the user requests play — this avoids
|
|
6452
|
+
// fetching CDN tokens and loading manifests before playback is actually needed.
|
|
6450
6453
|
if (mergedConfig.src) {
|
|
6451
|
-
|
|
6454
|
+
if (mergedConfig.autoplay) {
|
|
6455
|
+
reference.open(mergedConfig.src);
|
|
6456
|
+
}
|
|
6457
|
+
else {
|
|
6458
|
+
let deferredOpen = true;
|
|
6459
|
+
controller.bus.on('play', () => {
|
|
6460
|
+
if (deferredOpen) {
|
|
6461
|
+
deferredOpen = false;
|
|
6462
|
+
reference.open(mergedConfig.src);
|
|
6463
|
+
}
|
|
6464
|
+
}, { signal: controller.signal });
|
|
6465
|
+
}
|
|
6452
6466
|
}
|
|
6453
6467
|
return reference;
|
|
6454
6468
|
}
|