stormcloud-video-player 0.8.51 → 0.8.53
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 +24 -7
- package/lib/index.cjs.map +1 -1
- package/lib/index.js +24 -7
- package/lib/index.js.map +1 -1
- package/lib/player/AdBreakOrchestrator.d.cts +1 -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 +24 -7
- 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 +24 -7
- package/lib/players/HlsPlayer.cjs.map +1 -1
- package/lib/players/HlsPlayer.d.cts +1 -1
- package/lib/players/index.cjs +24 -7
- package/lib/players/index.cjs.map +1 -1
- package/lib/sdk/hlsAdPlayer.cjs +24 -7
- package/lib/sdk/hlsAdPlayer.cjs.map +1 -1
- package/lib/sdk/hlsAdPlayer.d.cts +1 -1
- package/lib/ui/StormcloudVideoPlayer.cjs +24 -7
- 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/types-iDjS8f_7.d.cts +0 -133
|
@@ -571,6 +571,7 @@ function createHlsAdPlayer(contentVideo, options) {
|
|
|
571
571
|
var AD_CONTAINER_PROP = "__stormcloudAdContainer";
|
|
572
572
|
var AD_VIDEO_PROP = "__stormcloudAdVideo";
|
|
573
573
|
var FRAME_COUNTER_RELIABLE_PROP = "__stormcloudFrameCounterReliable";
|
|
574
|
+
var RVFC_RELIABLE_PROP = "__stormcloudRvfcReliable";
|
|
574
575
|
var adVideoElement = (_contentVideo_AD_VIDEO_PROP = contentVideo[AD_VIDEO_PROP]) !== null && _contentVideo_AD_VIDEO_PROP !== void 0 ? _contentVideo_AD_VIDEO_PROP : void 0;
|
|
575
576
|
var adHls;
|
|
576
577
|
var adContainerEl = (_contentVideo_AD_CONTAINER_PROP = contentVideo[AD_CONTAINER_PROP]) !== null && _contentVideo_AD_CONTAINER_PROP !== void 0 ? _contentVideo_AD_CONTAINER_PROP : void 0;
|
|
@@ -1071,7 +1072,7 @@ function createHlsAdPlayer(contentVideo, options) {
|
|
|
1071
1072
|
}
|
|
1072
1073
|
function fetchAndParsePod(vastTagUrl) {
|
|
1073
1074
|
return _async_to_generator(function() {
|
|
1074
|
-
var vastXml, parser, xmlDoc, adElements, ads, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, adElement, parsed, resolved, error, err;
|
|
1075
|
+
var vastXml, trimmedXml, parser, xmlDoc, adElements, ads, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, adElement, parsed, resolved, error, err;
|
|
1075
1076
|
return _ts_generator(this, function(_state) {
|
|
1076
1077
|
switch(_state.label){
|
|
1077
1078
|
case 0:
|
|
@@ -1081,11 +1082,19 @@ function createHlsAdPlayer(contentVideo, options) {
|
|
|
1081
1082
|
];
|
|
1082
1083
|
case 1:
|
|
1083
1084
|
vastXml = _state.sent();
|
|
1084
|
-
console.log("[HlsAdPlayer] Pod VAST XML received");
|
|
1085
|
+
console.log("[HlsAdPlayer] Pod VAST XML received (length=".concat(vastXml.length, ")"));
|
|
1086
|
+
trimmedXml = vastXml.trim();
|
|
1087
|
+
if (trimmedXml.length === 0) {
|
|
1088
|
+
console.warn("[HlsAdPlayer] Pod VAST response body is empty (no fill)");
|
|
1089
|
+
return [
|
|
1090
|
+
2,
|
|
1091
|
+
[]
|
|
1092
|
+
];
|
|
1093
|
+
}
|
|
1085
1094
|
parser = new DOMParser();
|
|
1086
1095
|
xmlDoc = parser.parseFromString(vastXml, "text/xml");
|
|
1087
1096
|
if (xmlDoc.querySelector("parsererror")) {
|
|
1088
|
-
console.error("[HlsAdPlayer] Pod VAST XML parsing error (malformed)");
|
|
1097
|
+
console.error("[HlsAdPlayer] Pod VAST XML parsing error (malformed). Content (first 2000 chars):", vastXml.substring(0, 2e3));
|
|
1089
1098
|
return [
|
|
1090
1099
|
2,
|
|
1091
1100
|
[]
|
|
@@ -1093,7 +1102,7 @@ function createHlsAdPlayer(contentVideo, options) {
|
|
|
1093
1102
|
}
|
|
1094
1103
|
adElements = Array.from(xmlDoc.querySelectorAll("Ad"));
|
|
1095
1104
|
if (adElements.length === 0) {
|
|
1096
|
-
console.warn("[HlsAdPlayer] No <Ad> elements found in pod VAST response");
|
|
1105
|
+
console.warn("[HlsAdPlayer] No <Ad> elements found in pod VAST response (no fill). Content (first 2000 chars):", vastXml.substring(0, 2e3));
|
|
1097
1106
|
return [
|
|
1098
1107
|
2,
|
|
1099
1108
|
[]
|
|
@@ -1572,6 +1581,12 @@ function createHlsAdPlayer(contentVideo, options) {
|
|
|
1572
1581
|
function markFrameCounterReliable() {
|
|
1573
1582
|
contentVideo[FRAME_COUNTER_RELIABLE_PROP] = true;
|
|
1574
1583
|
}
|
|
1584
|
+
function isRvfcReliable() {
|
|
1585
|
+
return contentVideo[RVFC_RELIABLE_PROP] === true;
|
|
1586
|
+
}
|
|
1587
|
+
function markRvfcReliable() {
|
|
1588
|
+
contentVideo[RVFC_RELIABLE_PROP] = true;
|
|
1589
|
+
}
|
|
1575
1590
|
function cancelVideoFrameProbe() {
|
|
1576
1591
|
if (videoFrameCallbackHandle != null && adVideoElement && typeof adVideoElement.cancelVideoFrameCallback === "function") {
|
|
1577
1592
|
try {
|
|
@@ -1591,6 +1606,7 @@ function createHlsAdPlayer(contentVideo, options) {
|
|
|
1591
1606
|
videoFrameCallbackHandle = void 0;
|
|
1592
1607
|
if (!adPlaying) return;
|
|
1593
1608
|
sawDecodedVideoFrame = true;
|
|
1609
|
+
markRvfcReliable();
|
|
1594
1610
|
};
|
|
1595
1611
|
try {
|
|
1596
1612
|
videoFrameCallbackHandle = rvfc.call(adVideoElement, onPresentedFrame);
|
|
@@ -1615,18 +1631,19 @@ function createHlsAdPlayer(contentVideo, options) {
|
|
|
1615
1631
|
noteAdProgress();
|
|
1616
1632
|
sawDecodedVideoFrame = false;
|
|
1617
1633
|
startVideoFrameProbe();
|
|
1634
|
+
var blackFrameDetectionEnabled = !requiresMediaPipelineResetAfterAds();
|
|
1618
1635
|
stallWatchdogId = window.setInterval(function() {
|
|
1619
1636
|
if (!adPlaying || !adVideoElement) {
|
|
1620
1637
|
return;
|
|
1621
1638
|
}
|
|
1622
|
-
if (!sawDecodedVideoFrame && !adVideoElement.paused) {
|
|
1639
|
+
if (blackFrameDetectionEnabled && !sawDecodedVideoFrame && !adVideoElement.paused) {
|
|
1623
1640
|
var decodedFrames = getDecodedVideoFrameCount(adVideoElement);
|
|
1624
1641
|
if (decodedFrames !== void 0 && decodedFrames > 0) {
|
|
1625
1642
|
sawDecodedVideoFrame = true;
|
|
1626
1643
|
markFrameCounterReliable();
|
|
1627
1644
|
} else if (adVideoElement.currentTime >= BLACKFRAME_MIN_PLAYBACK_S) {
|
|
1628
1645
|
var timeAdvancing = adVideoElement.currentTime > lastAdProgressPosition + 0.05;
|
|
1629
|
-
if (isRvfcSupported(adVideoElement) && timeAdvancing) {
|
|
1646
|
+
if (isRvfcSupported(adVideoElement) && timeAdvancing && isRvfcReliable()) {
|
|
1630
1647
|
handleVideoDecodeFailure();
|
|
1631
1648
|
return;
|
|
1632
1649
|
}
|
|
@@ -2027,7 +2044,7 @@ function createHlsAdPlayer(contentVideo, options) {
|
|
|
2027
2044
|
}
|
|
2028
2045
|
},
|
|
2029
2046
|
hidePlaceholder: function hidePlaceholder() {
|
|
2030
|
-
if (adContainerEl) {
|
|
2047
|
+
if (adContainerEl && !adPlaying) {
|
|
2031
2048
|
adContainerEl.style.display = "none";
|
|
2032
2049
|
adContainerEl.style.pointerEvents = "none";
|
|
2033
2050
|
}
|