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