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