stormcloud-video-player 0.8.43 → 0.8.44
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/stormcloud-vp.min.js +1 -1
- package/lib/index.cjs +109 -5
- package/lib/index.cjs.map +1 -1
- package/lib/index.js +109 -5
- package/lib/index.js.map +1 -1
- package/lib/player/AdBreakOrchestrator.cjs +109 -5
- package/lib/player/AdBreakOrchestrator.cjs.map +1 -1
- package/lib/player/AdBreakOrchestrator.d.cts +2 -1
- package/lib/player/AdConfigManager.d.cts +1 -1
- package/lib/player/AdTimingService.d.cts +1 -1
- package/lib/player/HlsEngine.d.cts +1 -1
- package/lib/player/PlayerControls.d.cts +1 -1
- package/lib/player/Scte35CueManager.d.cts +1 -1
- package/lib/player/Scte35Parser.d.cts +1 -1
- package/lib/player/StormcloudVideoPlayer.cjs +109 -5
- package/lib/player/StormcloudVideoPlayer.cjs.map +1 -1
- package/lib/player/StormcloudVideoPlayer.d.cts +1 -1
- package/lib/player/playerTypes.d.cts +1 -1
- package/lib/players/HlsPlayer.cjs +109 -5
- package/lib/players/HlsPlayer.cjs.map +1 -1
- package/lib/players/HlsPlayer.d.cts +1 -1
- package/lib/players/index.cjs +109 -5
- package/lib/players/index.cjs.map +1 -1
- package/lib/sdk/hlsAdPlayer.d.cts +1 -1
- package/lib/types-iDjS8f_7.d.cts +133 -0
- package/lib/ui/StormcloudVideoPlayer.cjs +109 -5
- package/lib/ui/StormcloudVideoPlayer.cjs.map +1 -1
- package/lib/ui/StormcloudVideoPlayer.d.cts +1 -1
- package/lib/utils/tracking.d.cts +1 -1
- package/package.json +1 -1
package/lib/index.cjs
CHANGED
|
@@ -8328,6 +8328,34 @@ var AdBreakOrchestrator = /*#__PURE__*/ function() {
|
|
|
8328
8328
|
return 0;
|
|
8329
8329
|
}
|
|
8330
8330
|
},
|
|
8331
|
+
{
|
|
8332
|
+
key: "describeVideoState",
|
|
8333
|
+
value: function describeVideoState() {
|
|
8334
|
+
var _networkStates_v_networkState, _readyStates_v_readyState;
|
|
8335
|
+
var v = this.host.video;
|
|
8336
|
+
var networkStates = [
|
|
8337
|
+
"EMPTY",
|
|
8338
|
+
"IDLE",
|
|
8339
|
+
"LOADING",
|
|
8340
|
+
"NO_SOURCE"
|
|
8341
|
+
];
|
|
8342
|
+
var readyStates = [
|
|
8343
|
+
"HAVE_NOTHING",
|
|
8344
|
+
"HAVE_METADATA",
|
|
8345
|
+
"HAVE_CURRENT_DATA",
|
|
8346
|
+
"HAVE_FUTURE_DATA",
|
|
8347
|
+
"HAVE_ENOUGH_DATA"
|
|
8348
|
+
];
|
|
8349
|
+
var net = (_networkStates_v_networkState = networkStates[v.networkState]) !== null && _networkStates_v_networkState !== void 0 ? _networkStates_v_networkState : String(v.networkState);
|
|
8350
|
+
var ready = (_readyStates_v_readyState = readyStates[v.readyState]) !== null && _readyStates_v_readyState !== void 0 ? _readyStates_v_readyState : String(v.readyState);
|
|
8351
|
+
var err = v.error ? "code=".concat(v.error.code).concat(v.error.message ? " (".concat(v.error.message, ")") : "") : "none";
|
|
8352
|
+
var ranges = [];
|
|
8353
|
+
for(var i = 0; i < v.buffered.length; i++){
|
|
8354
|
+
ranges.push("[".concat(v.buffered.start(i).toFixed(2), "–").concat(v.buffered.end(i).toFixed(2), "]"));
|
|
8355
|
+
}
|
|
8356
|
+
return "t=".concat(v.currentTime.toFixed(2), "s paused=").concat(v.paused, " ended=").concat(v.ended, " seeking=").concat(v.seeking, " readyState=").concat(ready, " networkState=").concat(net, " error=").concat(err, " buffered=").concat(ranges.length ? ranges.join(",") : "none");
|
|
8357
|
+
}
|
|
8358
|
+
},
|
|
8331
8359
|
{
|
|
8332
8360
|
key: "monitorLiveResumeStall",
|
|
8333
8361
|
value: function monitorLiveResumeStall(resumeBaseline) {
|
|
@@ -8341,18 +8369,93 @@ var AdBreakOrchestrator = /*#__PURE__*/ function() {
|
|
|
8341
8369
|
var baseline = resumeBaseline;
|
|
8342
8370
|
var recoveries = 0;
|
|
8343
8371
|
var lastRecoveryAt = 0;
|
|
8372
|
+
var video = this.host.video;
|
|
8373
|
+
var listenersAttached = false;
|
|
8374
|
+
var onMediaEvent;
|
|
8375
|
+
var diagEvents = [
|
|
8376
|
+
"loadstart",
|
|
8377
|
+
"loadedmetadata",
|
|
8378
|
+
"loadeddata",
|
|
8379
|
+
"canplay",
|
|
8380
|
+
"canplaythrough",
|
|
8381
|
+
"play",
|
|
8382
|
+
"playing",
|
|
8383
|
+
"pause",
|
|
8384
|
+
"waiting",
|
|
8385
|
+
"stalled",
|
|
8386
|
+
"suspend",
|
|
8387
|
+
"seeking",
|
|
8388
|
+
"seeked",
|
|
8389
|
+
"emptied",
|
|
8390
|
+
"error",
|
|
8391
|
+
"ended"
|
|
8392
|
+
];
|
|
8393
|
+
if (this.debug) {
|
|
8394
|
+
onMediaEvent = function onMediaEvent(e) {
|
|
8395
|
+
var dt = ((Date.now() - startTime) / 1e3).toFixed(1);
|
|
8396
|
+
console.log("[ResumeDiag] +".concat(dt, "s event=").concat(e.type, " — ").concat(_this.describeVideoState()));
|
|
8397
|
+
};
|
|
8398
|
+
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
8399
|
+
try {
|
|
8400
|
+
for(var _iterator = diagEvents[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
|
|
8401
|
+
var name = _step.value;
|
|
8402
|
+
video.addEventListener(name, onMediaEvent);
|
|
8403
|
+
}
|
|
8404
|
+
} catch (err) {
|
|
8405
|
+
_didIteratorError = true;
|
|
8406
|
+
_iteratorError = err;
|
|
8407
|
+
} finally{
|
|
8408
|
+
try {
|
|
8409
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
8410
|
+
_iterator.return();
|
|
8411
|
+
}
|
|
8412
|
+
} finally{
|
|
8413
|
+
if (_didIteratorError) {
|
|
8414
|
+
throw _iteratorError;
|
|
8415
|
+
}
|
|
8416
|
+
}
|
|
8417
|
+
}
|
|
8418
|
+
listenersAttached = true;
|
|
8419
|
+
console.log("[ResumeDiag] +0.0s monitor start — ".concat(this.describeVideoState()));
|
|
8420
|
+
}
|
|
8421
|
+
var cleanup = function cleanup() {
|
|
8422
|
+
if (listenersAttached && onMediaEvent) {
|
|
8423
|
+
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
8424
|
+
try {
|
|
8425
|
+
for(var _iterator = diagEvents[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
|
|
8426
|
+
var name = _step.value;
|
|
8427
|
+
video.removeEventListener(name, onMediaEvent);
|
|
8428
|
+
}
|
|
8429
|
+
} catch (err) {
|
|
8430
|
+
_didIteratorError = true;
|
|
8431
|
+
_iteratorError = err;
|
|
8432
|
+
} finally{
|
|
8433
|
+
try {
|
|
8434
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
8435
|
+
_iterator.return();
|
|
8436
|
+
}
|
|
8437
|
+
} finally{
|
|
8438
|
+
if (_didIteratorError) {
|
|
8439
|
+
throw _iteratorError;
|
|
8440
|
+
}
|
|
8441
|
+
}
|
|
8442
|
+
}
|
|
8443
|
+
listenersAttached = false;
|
|
8444
|
+
}
|
|
8445
|
+
};
|
|
8344
8446
|
var poll = function poll1() {
|
|
8345
8447
|
if (_this.inAdBreak) {
|
|
8448
|
+
cleanup();
|
|
8346
8449
|
return;
|
|
8347
8450
|
}
|
|
8348
|
-
var video = _this.host.video;
|
|
8349
8451
|
var currentTime = video.currentTime;
|
|
8350
8452
|
var advanced = currentTime > baseline + 0.5;
|
|
8351
8453
|
var playing = !video.paused && video.readyState >= 3;
|
|
8352
8454
|
if (advanced && playing) {
|
|
8353
8455
|
if (_this.debug) {
|
|
8354
|
-
console.log("[StormcloudVideoPlayer] Live stream resumed successfully after ad break");
|
|
8456
|
+
console.log("[StormcloudVideoPlayer] Live stream resumed successfully after ad break — ".concat(_this.describeVideoState()));
|
|
8355
8457
|
}
|
|
8458
|
+
cleanup();
|
|
8356
8459
|
return;
|
|
8357
8460
|
}
|
|
8358
8461
|
if (video.paused) {
|
|
@@ -8364,8 +8467,9 @@ var AdBreakOrchestrator = /*#__PURE__*/ function() {
|
|
|
8364
8467
|
var wedged = bufferedAhead < 0.5 && !advanced;
|
|
8365
8468
|
if (elapsed >= maxMonitorMs) {
|
|
8366
8469
|
if (_this.debug && !advanced) {
|
|
8367
|
-
console.warn("[StormcloudVideoPlayer] Live stream failed to resume after ".concat((maxMonitorMs / 1e3).toFixed(0), "s
|
|
8470
|
+
console.warn("[StormcloudVideoPlayer] Live stream failed to resume after ".concat((maxMonitorMs / 1e3).toFixed(0), "s — ").concat(_this.describeVideoState()));
|
|
8368
8471
|
}
|
|
8472
|
+
cleanup();
|
|
8369
8473
|
return;
|
|
8370
8474
|
}
|
|
8371
8475
|
var canRecover = wedged && elapsed >= graceMs && Date.now() - lastRecoveryAt >= recoveryCooldownMs && recoveries < maxRecoveries;
|
|
@@ -8377,7 +8481,7 @@ var AdBreakOrchestrator = /*#__PURE__*/ function() {
|
|
|
8377
8481
|
var liveSyncPos = _this.host.getLiveSyncPosition();
|
|
8378
8482
|
var reloadPos = liveSyncPos != null && liveSyncPos > currentTime ? liveSyncPos : currentTime;
|
|
8379
8483
|
if (_this.debug) {
|
|
8380
|
-
console.warn("[StormcloudVideoPlayer] Content wedged after ad break
|
|
8484
|
+
console.warn("[StormcloudVideoPlayer] Content wedged after ad break — restarting HLS load at ".concat(reloadPos.toFixed(2), "s (recovery ").concat(recoveries, "/").concat(maxRecoveries, ") — ").concat(_this.describeVideoState()));
|
|
8381
8485
|
}
|
|
8382
8486
|
if (liveSyncPos != null && liveSyncPos > currentTime) {
|
|
8383
8487
|
video.currentTime = liveSyncPos;
|
|
@@ -8385,7 +8489,7 @@ var AdBreakOrchestrator = /*#__PURE__*/ function() {
|
|
|
8385
8489
|
_this.host.restartHlsLoad(reloadPos);
|
|
8386
8490
|
} else {
|
|
8387
8491
|
if (_this.debug) {
|
|
8388
|
-
console.warn("[StormcloudVideoPlayer] Content still wedged after ad break
|
|
8492
|
+
console.warn("[StormcloudVideoPlayer] Content still wedged after ad break — hard-reloading live stream (recovery ".concat(recoveries, "/").concat(maxRecoveries, ") — ").concat(_this.describeVideoState()));
|
|
8389
8493
|
}
|
|
8390
8494
|
_this.host.reloadLiveStream();
|
|
8391
8495
|
}
|