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
|
@@ -2514,6 +2514,34 @@ var AdBreakOrchestrator = /*#__PURE__*/ function() {
|
|
|
2514
2514
|
return 0;
|
|
2515
2515
|
}
|
|
2516
2516
|
},
|
|
2517
|
+
{
|
|
2518
|
+
key: "describeVideoState",
|
|
2519
|
+
value: function describeVideoState() {
|
|
2520
|
+
var _networkStates_v_networkState, _readyStates_v_readyState;
|
|
2521
|
+
var v = this.host.video;
|
|
2522
|
+
var networkStates = [
|
|
2523
|
+
"EMPTY",
|
|
2524
|
+
"IDLE",
|
|
2525
|
+
"LOADING",
|
|
2526
|
+
"NO_SOURCE"
|
|
2527
|
+
];
|
|
2528
|
+
var readyStates = [
|
|
2529
|
+
"HAVE_NOTHING",
|
|
2530
|
+
"HAVE_METADATA",
|
|
2531
|
+
"HAVE_CURRENT_DATA",
|
|
2532
|
+
"HAVE_FUTURE_DATA",
|
|
2533
|
+
"HAVE_ENOUGH_DATA"
|
|
2534
|
+
];
|
|
2535
|
+
var net = (_networkStates_v_networkState = networkStates[v.networkState]) !== null && _networkStates_v_networkState !== void 0 ? _networkStates_v_networkState : String(v.networkState);
|
|
2536
|
+
var ready = (_readyStates_v_readyState = readyStates[v.readyState]) !== null && _readyStates_v_readyState !== void 0 ? _readyStates_v_readyState : String(v.readyState);
|
|
2537
|
+
var err = v.error ? "code=".concat(v.error.code).concat(v.error.message ? " (".concat(v.error.message, ")") : "") : "none";
|
|
2538
|
+
var ranges = [];
|
|
2539
|
+
for(var i = 0; i < v.buffered.length; i++){
|
|
2540
|
+
ranges.push("[".concat(v.buffered.start(i).toFixed(2), "–").concat(v.buffered.end(i).toFixed(2), "]"));
|
|
2541
|
+
}
|
|
2542
|
+
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");
|
|
2543
|
+
}
|
|
2544
|
+
},
|
|
2517
2545
|
{
|
|
2518
2546
|
key: "monitorLiveResumeStall",
|
|
2519
2547
|
value: function monitorLiveResumeStall(resumeBaseline) {
|
|
@@ -2527,18 +2555,93 @@ var AdBreakOrchestrator = /*#__PURE__*/ function() {
|
|
|
2527
2555
|
var baseline = resumeBaseline;
|
|
2528
2556
|
var recoveries = 0;
|
|
2529
2557
|
var lastRecoveryAt = 0;
|
|
2558
|
+
var video = this.host.video;
|
|
2559
|
+
var listenersAttached = false;
|
|
2560
|
+
var onMediaEvent;
|
|
2561
|
+
var diagEvents = [
|
|
2562
|
+
"loadstart",
|
|
2563
|
+
"loadedmetadata",
|
|
2564
|
+
"loadeddata",
|
|
2565
|
+
"canplay",
|
|
2566
|
+
"canplaythrough",
|
|
2567
|
+
"play",
|
|
2568
|
+
"playing",
|
|
2569
|
+
"pause",
|
|
2570
|
+
"waiting",
|
|
2571
|
+
"stalled",
|
|
2572
|
+
"suspend",
|
|
2573
|
+
"seeking",
|
|
2574
|
+
"seeked",
|
|
2575
|
+
"emptied",
|
|
2576
|
+
"error",
|
|
2577
|
+
"ended"
|
|
2578
|
+
];
|
|
2579
|
+
if (this.debug) {
|
|
2580
|
+
onMediaEvent = function onMediaEvent(e) {
|
|
2581
|
+
var dt = ((Date.now() - startTime) / 1e3).toFixed(1);
|
|
2582
|
+
console.log("[ResumeDiag] +".concat(dt, "s event=").concat(e.type, " — ").concat(_this.describeVideoState()));
|
|
2583
|
+
};
|
|
2584
|
+
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
2585
|
+
try {
|
|
2586
|
+
for(var _iterator = diagEvents[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
|
|
2587
|
+
var name = _step.value;
|
|
2588
|
+
video.addEventListener(name, onMediaEvent);
|
|
2589
|
+
}
|
|
2590
|
+
} catch (err) {
|
|
2591
|
+
_didIteratorError = true;
|
|
2592
|
+
_iteratorError = err;
|
|
2593
|
+
} finally{
|
|
2594
|
+
try {
|
|
2595
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
2596
|
+
_iterator.return();
|
|
2597
|
+
}
|
|
2598
|
+
} finally{
|
|
2599
|
+
if (_didIteratorError) {
|
|
2600
|
+
throw _iteratorError;
|
|
2601
|
+
}
|
|
2602
|
+
}
|
|
2603
|
+
}
|
|
2604
|
+
listenersAttached = true;
|
|
2605
|
+
console.log("[ResumeDiag] +0.0s monitor start — ".concat(this.describeVideoState()));
|
|
2606
|
+
}
|
|
2607
|
+
var cleanup = function cleanup() {
|
|
2608
|
+
if (listenersAttached && onMediaEvent) {
|
|
2609
|
+
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
2610
|
+
try {
|
|
2611
|
+
for(var _iterator = diagEvents[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
|
|
2612
|
+
var name = _step.value;
|
|
2613
|
+
video.removeEventListener(name, onMediaEvent);
|
|
2614
|
+
}
|
|
2615
|
+
} catch (err) {
|
|
2616
|
+
_didIteratorError = true;
|
|
2617
|
+
_iteratorError = err;
|
|
2618
|
+
} finally{
|
|
2619
|
+
try {
|
|
2620
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
2621
|
+
_iterator.return();
|
|
2622
|
+
}
|
|
2623
|
+
} finally{
|
|
2624
|
+
if (_didIteratorError) {
|
|
2625
|
+
throw _iteratorError;
|
|
2626
|
+
}
|
|
2627
|
+
}
|
|
2628
|
+
}
|
|
2629
|
+
listenersAttached = false;
|
|
2630
|
+
}
|
|
2631
|
+
};
|
|
2530
2632
|
var poll = function poll1() {
|
|
2531
2633
|
if (_this.inAdBreak) {
|
|
2634
|
+
cleanup();
|
|
2532
2635
|
return;
|
|
2533
2636
|
}
|
|
2534
|
-
var video = _this.host.video;
|
|
2535
2637
|
var currentTime = video.currentTime;
|
|
2536
2638
|
var advanced = currentTime > baseline + 0.5;
|
|
2537
2639
|
var playing = !video.paused && video.readyState >= 3;
|
|
2538
2640
|
if (advanced && playing) {
|
|
2539
2641
|
if (_this.debug) {
|
|
2540
|
-
console.log("[StormcloudVideoPlayer] Live stream resumed successfully after ad break");
|
|
2642
|
+
console.log("[StormcloudVideoPlayer] Live stream resumed successfully after ad break — ".concat(_this.describeVideoState()));
|
|
2541
2643
|
}
|
|
2644
|
+
cleanup();
|
|
2542
2645
|
return;
|
|
2543
2646
|
}
|
|
2544
2647
|
if (video.paused) {
|
|
@@ -2550,8 +2653,9 @@ var AdBreakOrchestrator = /*#__PURE__*/ function() {
|
|
|
2550
2653
|
var wedged = bufferedAhead < 0.5 && !advanced;
|
|
2551
2654
|
if (elapsed >= maxMonitorMs) {
|
|
2552
2655
|
if (_this.debug && !advanced) {
|
|
2553
|
-
console.warn("[StormcloudVideoPlayer] Live stream failed to resume after ".concat((maxMonitorMs / 1e3).toFixed(0), "s
|
|
2656
|
+
console.warn("[StormcloudVideoPlayer] Live stream failed to resume after ".concat((maxMonitorMs / 1e3).toFixed(0), "s — ").concat(_this.describeVideoState()));
|
|
2554
2657
|
}
|
|
2658
|
+
cleanup();
|
|
2555
2659
|
return;
|
|
2556
2660
|
}
|
|
2557
2661
|
var canRecover = wedged && elapsed >= graceMs && Date.now() - lastRecoveryAt >= recoveryCooldownMs && recoveries < maxRecoveries;
|
|
@@ -2563,7 +2667,7 @@ var AdBreakOrchestrator = /*#__PURE__*/ function() {
|
|
|
2563
2667
|
var liveSyncPos = _this.host.getLiveSyncPosition();
|
|
2564
2668
|
var reloadPos = liveSyncPos != null && liveSyncPos > currentTime ? liveSyncPos : currentTime;
|
|
2565
2669
|
if (_this.debug) {
|
|
2566
|
-
console.warn("[StormcloudVideoPlayer] Content wedged after ad break
|
|
2670
|
+
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()));
|
|
2567
2671
|
}
|
|
2568
2672
|
if (liveSyncPos != null && liveSyncPos > currentTime) {
|
|
2569
2673
|
video.currentTime = liveSyncPos;
|
|
@@ -2571,7 +2675,7 @@ var AdBreakOrchestrator = /*#__PURE__*/ function() {
|
|
|
2571
2675
|
_this.host.restartHlsLoad(reloadPos);
|
|
2572
2676
|
} else {
|
|
2573
2677
|
if (_this.debug) {
|
|
2574
|
-
console.warn("[StormcloudVideoPlayer] Content still wedged after ad break
|
|
2678
|
+
console.warn("[StormcloudVideoPlayer] Content still wedged after ad break — hard-reloading live stream (recovery ".concat(recoveries, "/").concat(maxRecoveries, ") — ").concat(_this.describeVideoState()));
|
|
2575
2679
|
}
|
|
2576
2680
|
_this.host.reloadLiveStream();
|
|
2577
2681
|
}
|