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/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 (t=").concat(currentTime.toFixed(2), "s, buffered=").concat(bufferedAhead.toFixed(2), "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 (t=".concat(currentTime.toFixed(2), "s, buffered=").concat(bufferedAhead.toFixed(2), "s) — restarting HLS load at ").concat(reloadPos.toFixed(2), "s (recovery ").concat(recoveries, "/").concat(maxRecoveries, ")"));
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 (t=".concat(currentTime.toFixed(2), "s, buffered=").concat(bufferedAhead.toFixed(2), "s) — hard-reloading live stream (recovery ").concat(recoveries, "/").concat(maxRecoveries, ")"));
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
  }