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
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { a as Scte35Marker, S as StormcloudVideoPlayerConfig, A as AdController } from '../types-iDjS8f_7.cjs';
|
|
2
2
|
import { AdTimingService } from './AdTimingService.cjs';
|
|
3
3
|
import { AdConfigManager } from './AdConfigManager.cjs';
|
|
4
4
|
import { Scte35CueManager } from './Scte35CueManager.cjs';
|
|
@@ -61,6 +61,7 @@ declare class AdBreakOrchestrator {
|
|
|
61
61
|
private showPlaceholderAndWaitForAds;
|
|
62
62
|
handleAdPodComplete(): void;
|
|
63
63
|
private getBufferedAhead;
|
|
64
|
+
private describeVideoState;
|
|
64
65
|
private monitorLiveResumeStall;
|
|
65
66
|
private resumeContentPlayback;
|
|
66
67
|
handleAdFailure(): void;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { b as AdBreak,
|
|
1
|
+
import { b as AdBreak, S as StormcloudVideoPlayerConfig, A as AdController } from '../types-iDjS8f_7.cjs';
|
|
2
2
|
import { PalNonceManager } from '../sdk/pal.cjs';
|
|
3
3
|
import { VastConsentSignals } from '../utils/vastMacros.cjs';
|
|
4
4
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { S as StormcloudVideoPlayerConfig, a as Scte35Marker, A as AdController } from '../types-iDjS8f_7.cjs';
|
|
2
2
|
|
|
3
3
|
interface AdTimingCallbacks {
|
|
4
4
|
onAdStopTimerFired(): void;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import Hls from 'hls.js';
|
|
2
|
-
import {
|
|
2
|
+
import { S as StormcloudVideoPlayerConfig, a as Scte35Marker } from '../types-iDjS8f_7.cjs';
|
|
3
3
|
import { Scte35CueContext } from './playerTypes.cjs';
|
|
4
4
|
import { Scte35CueManager } from './Scte35CueManager.cjs';
|
|
5
5
|
import { AdTimingService } from './AdTimingService.cjs';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { A as AdController } from '../types-
|
|
1
|
+
import { A as AdController } from '../types-iDjS8f_7.cjs';
|
|
2
2
|
|
|
3
3
|
declare function getAdAudioVolume(adPlayer: AdController): number;
|
|
4
4
|
declare function toggleMute(video: HTMLVideoElement, adPlayer: AdController, debug: boolean): void;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { a as Scte35Marker, I as Id3TagInfo } from '../types-iDjS8f_7.cjs';
|
|
2
2
|
|
|
3
3
|
declare function parseCueOutDuration(value: string): number | undefined;
|
|
4
4
|
declare function parseCueOutCont(value: string): {
|
|
@@ -8046,6 +8046,34 @@ var AdBreakOrchestrator = /*#__PURE__*/ function() {
|
|
|
8046
8046
|
return 0;
|
|
8047
8047
|
}
|
|
8048
8048
|
},
|
|
8049
|
+
{
|
|
8050
|
+
key: "describeVideoState",
|
|
8051
|
+
value: function describeVideoState() {
|
|
8052
|
+
var _networkStates_v_networkState, _readyStates_v_readyState;
|
|
8053
|
+
var v = this.host.video;
|
|
8054
|
+
var networkStates = [
|
|
8055
|
+
"EMPTY",
|
|
8056
|
+
"IDLE",
|
|
8057
|
+
"LOADING",
|
|
8058
|
+
"NO_SOURCE"
|
|
8059
|
+
];
|
|
8060
|
+
var readyStates = [
|
|
8061
|
+
"HAVE_NOTHING",
|
|
8062
|
+
"HAVE_METADATA",
|
|
8063
|
+
"HAVE_CURRENT_DATA",
|
|
8064
|
+
"HAVE_FUTURE_DATA",
|
|
8065
|
+
"HAVE_ENOUGH_DATA"
|
|
8066
|
+
];
|
|
8067
|
+
var net = (_networkStates_v_networkState = networkStates[v.networkState]) !== null && _networkStates_v_networkState !== void 0 ? _networkStates_v_networkState : String(v.networkState);
|
|
8068
|
+
var ready = (_readyStates_v_readyState = readyStates[v.readyState]) !== null && _readyStates_v_readyState !== void 0 ? _readyStates_v_readyState : String(v.readyState);
|
|
8069
|
+
var err = v.error ? "code=".concat(v.error.code).concat(v.error.message ? " (".concat(v.error.message, ")") : "") : "none";
|
|
8070
|
+
var ranges = [];
|
|
8071
|
+
for(var i = 0; i < v.buffered.length; i++){
|
|
8072
|
+
ranges.push("[".concat(v.buffered.start(i).toFixed(2), "–").concat(v.buffered.end(i).toFixed(2), "]"));
|
|
8073
|
+
}
|
|
8074
|
+
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");
|
|
8075
|
+
}
|
|
8076
|
+
},
|
|
8049
8077
|
{
|
|
8050
8078
|
key: "monitorLiveResumeStall",
|
|
8051
8079
|
value: function monitorLiveResumeStall(resumeBaseline) {
|
|
@@ -8059,18 +8087,93 @@ var AdBreakOrchestrator = /*#__PURE__*/ function() {
|
|
|
8059
8087
|
var baseline = resumeBaseline;
|
|
8060
8088
|
var recoveries = 0;
|
|
8061
8089
|
var lastRecoveryAt = 0;
|
|
8090
|
+
var video = this.host.video;
|
|
8091
|
+
var listenersAttached = false;
|
|
8092
|
+
var onMediaEvent;
|
|
8093
|
+
var diagEvents = [
|
|
8094
|
+
"loadstart",
|
|
8095
|
+
"loadedmetadata",
|
|
8096
|
+
"loadeddata",
|
|
8097
|
+
"canplay",
|
|
8098
|
+
"canplaythrough",
|
|
8099
|
+
"play",
|
|
8100
|
+
"playing",
|
|
8101
|
+
"pause",
|
|
8102
|
+
"waiting",
|
|
8103
|
+
"stalled",
|
|
8104
|
+
"suspend",
|
|
8105
|
+
"seeking",
|
|
8106
|
+
"seeked",
|
|
8107
|
+
"emptied",
|
|
8108
|
+
"error",
|
|
8109
|
+
"ended"
|
|
8110
|
+
];
|
|
8111
|
+
if (this.debug) {
|
|
8112
|
+
onMediaEvent = function onMediaEvent(e) {
|
|
8113
|
+
var dt = ((Date.now() - startTime) / 1e3).toFixed(1);
|
|
8114
|
+
console.log("[ResumeDiag] +".concat(dt, "s event=").concat(e.type, " — ").concat(_this.describeVideoState()));
|
|
8115
|
+
};
|
|
8116
|
+
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
8117
|
+
try {
|
|
8118
|
+
for(var _iterator = diagEvents[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
|
|
8119
|
+
var name = _step.value;
|
|
8120
|
+
video.addEventListener(name, onMediaEvent);
|
|
8121
|
+
}
|
|
8122
|
+
} catch (err) {
|
|
8123
|
+
_didIteratorError = true;
|
|
8124
|
+
_iteratorError = err;
|
|
8125
|
+
} finally{
|
|
8126
|
+
try {
|
|
8127
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
8128
|
+
_iterator.return();
|
|
8129
|
+
}
|
|
8130
|
+
} finally{
|
|
8131
|
+
if (_didIteratorError) {
|
|
8132
|
+
throw _iteratorError;
|
|
8133
|
+
}
|
|
8134
|
+
}
|
|
8135
|
+
}
|
|
8136
|
+
listenersAttached = true;
|
|
8137
|
+
console.log("[ResumeDiag] +0.0s monitor start — ".concat(this.describeVideoState()));
|
|
8138
|
+
}
|
|
8139
|
+
var cleanup = function cleanup() {
|
|
8140
|
+
if (listenersAttached && onMediaEvent) {
|
|
8141
|
+
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
8142
|
+
try {
|
|
8143
|
+
for(var _iterator = diagEvents[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
|
|
8144
|
+
var name = _step.value;
|
|
8145
|
+
video.removeEventListener(name, onMediaEvent);
|
|
8146
|
+
}
|
|
8147
|
+
} catch (err) {
|
|
8148
|
+
_didIteratorError = true;
|
|
8149
|
+
_iteratorError = err;
|
|
8150
|
+
} finally{
|
|
8151
|
+
try {
|
|
8152
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
8153
|
+
_iterator.return();
|
|
8154
|
+
}
|
|
8155
|
+
} finally{
|
|
8156
|
+
if (_didIteratorError) {
|
|
8157
|
+
throw _iteratorError;
|
|
8158
|
+
}
|
|
8159
|
+
}
|
|
8160
|
+
}
|
|
8161
|
+
listenersAttached = false;
|
|
8162
|
+
}
|
|
8163
|
+
};
|
|
8062
8164
|
var poll = function poll1() {
|
|
8063
8165
|
if (_this.inAdBreak) {
|
|
8166
|
+
cleanup();
|
|
8064
8167
|
return;
|
|
8065
8168
|
}
|
|
8066
|
-
var video = _this.host.video;
|
|
8067
8169
|
var currentTime = video.currentTime;
|
|
8068
8170
|
var advanced = currentTime > baseline + 0.5;
|
|
8069
8171
|
var playing = !video.paused && video.readyState >= 3;
|
|
8070
8172
|
if (advanced && playing) {
|
|
8071
8173
|
if (_this.debug) {
|
|
8072
|
-
console.log("[StormcloudVideoPlayer] Live stream resumed successfully after ad break");
|
|
8174
|
+
console.log("[StormcloudVideoPlayer] Live stream resumed successfully after ad break — ".concat(_this.describeVideoState()));
|
|
8073
8175
|
}
|
|
8176
|
+
cleanup();
|
|
8074
8177
|
return;
|
|
8075
8178
|
}
|
|
8076
8179
|
if (video.paused) {
|
|
@@ -8082,8 +8185,9 @@ var AdBreakOrchestrator = /*#__PURE__*/ function() {
|
|
|
8082
8185
|
var wedged = bufferedAhead < 0.5 && !advanced;
|
|
8083
8186
|
if (elapsed >= maxMonitorMs) {
|
|
8084
8187
|
if (_this.debug && !advanced) {
|
|
8085
|
-
console.warn("[StormcloudVideoPlayer] Live stream failed to resume after ".concat((maxMonitorMs / 1e3).toFixed(0), "s
|
|
8188
|
+
console.warn("[StormcloudVideoPlayer] Live stream failed to resume after ".concat((maxMonitorMs / 1e3).toFixed(0), "s — ").concat(_this.describeVideoState()));
|
|
8086
8189
|
}
|
|
8190
|
+
cleanup();
|
|
8087
8191
|
return;
|
|
8088
8192
|
}
|
|
8089
8193
|
var canRecover = wedged && elapsed >= graceMs && Date.now() - lastRecoveryAt >= recoveryCooldownMs && recoveries < maxRecoveries;
|
|
@@ -8095,7 +8199,7 @@ var AdBreakOrchestrator = /*#__PURE__*/ function() {
|
|
|
8095
8199
|
var liveSyncPos = _this.host.getLiveSyncPosition();
|
|
8096
8200
|
var reloadPos = liveSyncPos != null && liveSyncPos > currentTime ? liveSyncPos : currentTime;
|
|
8097
8201
|
if (_this.debug) {
|
|
8098
|
-
console.warn("[StormcloudVideoPlayer] Content wedged after ad break
|
|
8202
|
+
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()));
|
|
8099
8203
|
}
|
|
8100
8204
|
if (liveSyncPos != null && liveSyncPos > currentTime) {
|
|
8101
8205
|
video.currentTime = liveSyncPos;
|
|
@@ -8103,7 +8207,7 @@ var AdBreakOrchestrator = /*#__PURE__*/ function() {
|
|
|
8103
8207
|
_this.host.restartHlsLoad(reloadPos);
|
|
8104
8208
|
} else {
|
|
8105
8209
|
if (_this.debug) {
|
|
8106
|
-
console.warn("[StormcloudVideoPlayer] Content still wedged after ad break
|
|
8210
|
+
console.warn("[StormcloudVideoPlayer] Content still wedged after ad break — hard-reloading live stream (recovery ".concat(recoveries, "/").concat(maxRecoveries, ") — ").concat(_this.describeVideoState()));
|
|
8107
8211
|
}
|
|
8108
8212
|
_this.host.reloadLiveStream();
|
|
8109
8213
|
}
|