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
|
@@ -8097,6 +8097,34 @@ var AdBreakOrchestrator = /*#__PURE__*/ function() {
|
|
|
8097
8097
|
return 0;
|
|
8098
8098
|
}
|
|
8099
8099
|
},
|
|
8100
|
+
{
|
|
8101
|
+
key: "describeVideoState",
|
|
8102
|
+
value: function describeVideoState() {
|
|
8103
|
+
var _networkStates_v_networkState, _readyStates_v_readyState;
|
|
8104
|
+
var v = this.host.video;
|
|
8105
|
+
var networkStates = [
|
|
8106
|
+
"EMPTY",
|
|
8107
|
+
"IDLE",
|
|
8108
|
+
"LOADING",
|
|
8109
|
+
"NO_SOURCE"
|
|
8110
|
+
];
|
|
8111
|
+
var readyStates = [
|
|
8112
|
+
"HAVE_NOTHING",
|
|
8113
|
+
"HAVE_METADATA",
|
|
8114
|
+
"HAVE_CURRENT_DATA",
|
|
8115
|
+
"HAVE_FUTURE_DATA",
|
|
8116
|
+
"HAVE_ENOUGH_DATA"
|
|
8117
|
+
];
|
|
8118
|
+
var net = (_networkStates_v_networkState = networkStates[v.networkState]) !== null && _networkStates_v_networkState !== void 0 ? _networkStates_v_networkState : String(v.networkState);
|
|
8119
|
+
var ready = (_readyStates_v_readyState = readyStates[v.readyState]) !== null && _readyStates_v_readyState !== void 0 ? _readyStates_v_readyState : String(v.readyState);
|
|
8120
|
+
var err = v.error ? "code=".concat(v.error.code).concat(v.error.message ? " (".concat(v.error.message, ")") : "") : "none";
|
|
8121
|
+
var ranges = [];
|
|
8122
|
+
for(var i = 0; i < v.buffered.length; i++){
|
|
8123
|
+
ranges.push("[".concat(v.buffered.start(i).toFixed(2), "–").concat(v.buffered.end(i).toFixed(2), "]"));
|
|
8124
|
+
}
|
|
8125
|
+
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");
|
|
8126
|
+
}
|
|
8127
|
+
},
|
|
8100
8128
|
{
|
|
8101
8129
|
key: "monitorLiveResumeStall",
|
|
8102
8130
|
value: function monitorLiveResumeStall(resumeBaseline) {
|
|
@@ -8110,18 +8138,93 @@ var AdBreakOrchestrator = /*#__PURE__*/ function() {
|
|
|
8110
8138
|
var baseline = resumeBaseline;
|
|
8111
8139
|
var recoveries = 0;
|
|
8112
8140
|
var lastRecoveryAt = 0;
|
|
8141
|
+
var video = this.host.video;
|
|
8142
|
+
var listenersAttached = false;
|
|
8143
|
+
var onMediaEvent;
|
|
8144
|
+
var diagEvents = [
|
|
8145
|
+
"loadstart",
|
|
8146
|
+
"loadedmetadata",
|
|
8147
|
+
"loadeddata",
|
|
8148
|
+
"canplay",
|
|
8149
|
+
"canplaythrough",
|
|
8150
|
+
"play",
|
|
8151
|
+
"playing",
|
|
8152
|
+
"pause",
|
|
8153
|
+
"waiting",
|
|
8154
|
+
"stalled",
|
|
8155
|
+
"suspend",
|
|
8156
|
+
"seeking",
|
|
8157
|
+
"seeked",
|
|
8158
|
+
"emptied",
|
|
8159
|
+
"error",
|
|
8160
|
+
"ended"
|
|
8161
|
+
];
|
|
8162
|
+
if (this.debug) {
|
|
8163
|
+
onMediaEvent = function onMediaEvent(e) {
|
|
8164
|
+
var dt = ((Date.now() - startTime) / 1e3).toFixed(1);
|
|
8165
|
+
console.log("[ResumeDiag] +".concat(dt, "s event=").concat(e.type, " — ").concat(_this.describeVideoState()));
|
|
8166
|
+
};
|
|
8167
|
+
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
8168
|
+
try {
|
|
8169
|
+
for(var _iterator = diagEvents[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
|
|
8170
|
+
var name = _step.value;
|
|
8171
|
+
video.addEventListener(name, onMediaEvent);
|
|
8172
|
+
}
|
|
8173
|
+
} catch (err) {
|
|
8174
|
+
_didIteratorError = true;
|
|
8175
|
+
_iteratorError = err;
|
|
8176
|
+
} finally{
|
|
8177
|
+
try {
|
|
8178
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
8179
|
+
_iterator.return();
|
|
8180
|
+
}
|
|
8181
|
+
} finally{
|
|
8182
|
+
if (_didIteratorError) {
|
|
8183
|
+
throw _iteratorError;
|
|
8184
|
+
}
|
|
8185
|
+
}
|
|
8186
|
+
}
|
|
8187
|
+
listenersAttached = true;
|
|
8188
|
+
console.log("[ResumeDiag] +0.0s monitor start — ".concat(this.describeVideoState()));
|
|
8189
|
+
}
|
|
8190
|
+
var cleanup = function cleanup() {
|
|
8191
|
+
if (listenersAttached && onMediaEvent) {
|
|
8192
|
+
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
8193
|
+
try {
|
|
8194
|
+
for(var _iterator = diagEvents[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
|
|
8195
|
+
var name = _step.value;
|
|
8196
|
+
video.removeEventListener(name, onMediaEvent);
|
|
8197
|
+
}
|
|
8198
|
+
} catch (err) {
|
|
8199
|
+
_didIteratorError = true;
|
|
8200
|
+
_iteratorError = err;
|
|
8201
|
+
} finally{
|
|
8202
|
+
try {
|
|
8203
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
8204
|
+
_iterator.return();
|
|
8205
|
+
}
|
|
8206
|
+
} finally{
|
|
8207
|
+
if (_didIteratorError) {
|
|
8208
|
+
throw _iteratorError;
|
|
8209
|
+
}
|
|
8210
|
+
}
|
|
8211
|
+
}
|
|
8212
|
+
listenersAttached = false;
|
|
8213
|
+
}
|
|
8214
|
+
};
|
|
8113
8215
|
var poll = function poll1() {
|
|
8114
8216
|
if (_this.inAdBreak) {
|
|
8217
|
+
cleanup();
|
|
8115
8218
|
return;
|
|
8116
8219
|
}
|
|
8117
|
-
var video = _this.host.video;
|
|
8118
8220
|
var currentTime = video.currentTime;
|
|
8119
8221
|
var advanced = currentTime > baseline + 0.5;
|
|
8120
8222
|
var playing = !video.paused && video.readyState >= 3;
|
|
8121
8223
|
if (advanced && playing) {
|
|
8122
8224
|
if (_this.debug) {
|
|
8123
|
-
console.log("[StormcloudVideoPlayer] Live stream resumed successfully after ad break");
|
|
8225
|
+
console.log("[StormcloudVideoPlayer] Live stream resumed successfully after ad break — ".concat(_this.describeVideoState()));
|
|
8124
8226
|
}
|
|
8227
|
+
cleanup();
|
|
8125
8228
|
return;
|
|
8126
8229
|
}
|
|
8127
8230
|
if (video.paused) {
|
|
@@ -8133,8 +8236,9 @@ var AdBreakOrchestrator = /*#__PURE__*/ function() {
|
|
|
8133
8236
|
var wedged = bufferedAhead < 0.5 && !advanced;
|
|
8134
8237
|
if (elapsed >= maxMonitorMs) {
|
|
8135
8238
|
if (_this.debug && !advanced) {
|
|
8136
|
-
console.warn("[StormcloudVideoPlayer] Live stream failed to resume after ".concat((maxMonitorMs / 1e3).toFixed(0), "s
|
|
8239
|
+
console.warn("[StormcloudVideoPlayer] Live stream failed to resume after ".concat((maxMonitorMs / 1e3).toFixed(0), "s — ").concat(_this.describeVideoState()));
|
|
8137
8240
|
}
|
|
8241
|
+
cleanup();
|
|
8138
8242
|
return;
|
|
8139
8243
|
}
|
|
8140
8244
|
var canRecover = wedged && elapsed >= graceMs && Date.now() - lastRecoveryAt >= recoveryCooldownMs && recoveries < maxRecoveries;
|
|
@@ -8146,7 +8250,7 @@ var AdBreakOrchestrator = /*#__PURE__*/ function() {
|
|
|
8146
8250
|
var liveSyncPos = _this.host.getLiveSyncPosition();
|
|
8147
8251
|
var reloadPos = liveSyncPos != null && liveSyncPos > currentTime ? liveSyncPos : currentTime;
|
|
8148
8252
|
if (_this.debug) {
|
|
8149
|
-
console.warn("[StormcloudVideoPlayer] Content wedged after ad break
|
|
8253
|
+
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()));
|
|
8150
8254
|
}
|
|
8151
8255
|
if (liveSyncPos != null && liveSyncPos > currentTime) {
|
|
8152
8256
|
video.currentTime = liveSyncPos;
|
|
@@ -8154,7 +8258,7 @@ var AdBreakOrchestrator = /*#__PURE__*/ function() {
|
|
|
8154
8258
|
_this.host.restartHlsLoad(reloadPos);
|
|
8155
8259
|
} else {
|
|
8156
8260
|
if (_this.debug) {
|
|
8157
|
-
console.warn("[StormcloudVideoPlayer] Content still wedged after ad break
|
|
8261
|
+
console.warn("[StormcloudVideoPlayer] Content still wedged after ad break — hard-reloading live stream (recovery ".concat(recoveries, "/").concat(maxRecoveries, ") — ").concat(_this.describeVideoState()));
|
|
8158
8262
|
}
|
|
8159
8263
|
_this.host.reloadLiveStream();
|
|
8160
8264
|
}
|