stormcloud-video-player 0.8.77 → 0.8.78
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/Player.cjs +2 -0
- package/lib/Player.cjs.map +1 -1
- package/lib/Player.d.cts +1 -1
- package/lib/StormcloudPlayer.cjs +225 -6
- package/lib/StormcloudPlayer.cjs.map +1 -1
- package/lib/index.cjs +225 -6
- package/lib/index.cjs.map +1 -1
- package/lib/index.d.ts +2 -0
- package/lib/index.js +226 -6
- package/lib/index.js.map +1 -1
- package/lib/player/ContentHealthWatchdog.cjs +255 -0
- package/lib/player/ContentHealthWatchdog.cjs.map +1 -0
- package/lib/player/ContentHealthWatchdog.d.cts +40 -0
- package/lib/player/StormcloudVideoPlayer.cjs +225 -6
- package/lib/player/StormcloudVideoPlayer.cjs.map +1 -1
- package/lib/player/StormcloudVideoPlayer.d.cts +1 -0
- package/lib/players/HlsPlayer.cjs +225 -6
- package/lib/players/HlsPlayer.cjs.map +1 -1
- package/lib/players/index.cjs +225 -6
- package/lib/players/index.cjs.map +1 -1
- package/lib/props.cjs +2 -0
- package/lib/props.cjs.map +1 -1
- package/lib/sdk/hlsAdPlayer.cjs +16 -6
- package/lib/sdk/hlsAdPlayer.cjs.map +1 -1
- package/lib/types.d.cts +1 -0
- package/lib/ui/StormcloudVideoPlayer.cjs +225 -6
- package/lib/ui/StormcloudVideoPlayer.cjs.map +1 -1
- package/lib/utils/browserCompat.cjs +7 -0
- package/lib/utils/browserCompat.cjs.map +1 -1
- package/lib/utils/browserCompat.d.cts +2 -1
- package/package.json +2 -2
package/lib/Player.cjs
CHANGED
|
@@ -246,6 +246,8 @@ var DEFAULT_TRACKING_INGEST_CONFIG = {
|
|
|
246
246
|
var trackingIngestConfig = _object_spread({}, DEFAULT_TRACKING_INGEST_CONFIG);
|
|
247
247
|
// src/player/HlsEngine.ts
|
|
248
248
|
var import_hls2 = __toESM(require("hls.js"), 1);
|
|
249
|
+
// src/player/ContentHealthWatchdog.ts
|
|
250
|
+
var MAX_BREAK_SUPPRESSION_MS = 10 * 60 * 1e3;
|
|
249
251
|
// src/props.ts
|
|
250
252
|
var noop = function noop() {};
|
|
251
253
|
var defaultProps = {
|
package/lib/Player.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["d:\\project\\stormcloud-vp\\lib\\Player.cjs"],"names":["__create","Object","create","__defProp","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__getProtoOf","getPrototypeOf","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toESM","mod","isNodeMode","__esModule","value","__toCommonJS","Player_exports","default","Player","module","exports","import_react2","require","DEVICE_TYPE_HINT","FEATURE_PHONE","SMARTPHONE","DESKTOP","TABLET","CONNECTED_TV","GAME_CONSOLE","SET_TOP_BOX","DEVICE_TYPE_HINT_ALIASES","featurephone","smartphone","mobile","phone","desktop","pc","tablet","ctv","tv","connectedtv","smarttv","console","gameconsole","stb","settopbox","PERSISTENT_ID_COOKIE_MAX_AGE","DISABLED_FLOOR_LADDER_CONFIG","freeze","enabled","targetingKey","minFloorCents","maxFloorCents","stepCents","selectedFloorCents","fallbackFloorCents","readyFloorCents","mode","allowedPositions","targetAdUnitPath","configurationVersion","DEFAULT_FLOOR_LADDER_BOUNDS","minCents","maxCents","import_hls","DEFAULT_TRACKING_INGEST_CONFIG","baseUrl","trackingIngestConfig","import_hls2","noop","defaultProps","playing","loop","controls","volume","muted","playbackRate","width","height","style","progressInterval","playsInline","autoplay","preload","poster","className","wrapperClassName","wrapperStyle","allowNativeHls","lowLatencyMode","driftToleranceMs","immediateManifestAds","debugAdTiming","showCustomControls","hideLoadingIndicator","licenseKey","isVmap","vmapUrl","adFailsafeTimeoutMs","minSegmentsBeforePlay","onStart","onPlay","onPause","onBuffer","onBufferEnd","onEnded","onError","onDuration","onSeek","onProgress","onVolumeToggle","onFullscreenToggle","onControlClick","import_react","isMediaStream","url","window","MediaStream","IS_BROWSER","document","IS_GLOBAL","globalThis","IS_IOS","test","navigator","userAgent","IS_SAFARI","SEEK_ON_PLAY_EXPIRY","arguments","mounted","isReady","isPlaying","isLoading","loadOnReady","startOnPlay","seekOnPlay","onDurationCalled","handlePlayerMount","player","progress","load","props","src","getInternalPlayer","playedSeconds","getCurrentTime","loadedSeconds","getSecondsLoaded","duration","getDuration","played","loaded","prevPlayed","prevLoaded","progressTimeout","setTimeout","handleReady","onReady","setVolume","play","handleDurationCheck","handlePlay","setPlaybackRate","seekTo","handlePause","e","handleEnded","activePlayer","loopOnEnded","handleError","args","clearTimeout","durationCheckTimeout","handleLoaded","componentDidMount","componentWillUnmount","componentDidUpdate","prevProps","forceLoad","warn","pause","mute","unmute","setLoop","amount","type","keepPlaying","isFraction","render","Player2","createElement","onMount","onLoaded","Component","displayName"],"mappings":"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","sourcesContent":["\"use strict\";\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/Player.tsx\nvar Player_exports = {};\n__export(Player_exports, {\n default: () => Player\n});\nmodule.exports = __toCommonJS(Player_exports);\nvar import_react2 = __toESM(require(\"react\"), 1);\n\n// src/utils/vastEnvironmentSignals.ts\nvar DEVICE_TYPE_HINT = {\n FEATURE_PHONE: 1,\n SMARTPHONE: 2,\n DESKTOP: 3,\n TABLET: 4,\n CONNECTED_TV: 5,\n GAME_CONSOLE: 6,\n SET_TOP_BOX: 7\n};\nvar DEVICE_TYPE_HINT_ALIASES = {\n featurephone: DEVICE_TYPE_HINT.FEATURE_PHONE,\n smartphone: DEVICE_TYPE_HINT.SMARTPHONE,\n mobile: DEVICE_TYPE_HINT.SMARTPHONE,\n phone: DEVICE_TYPE_HINT.SMARTPHONE,\n desktop: DEVICE_TYPE_HINT.DESKTOP,\n pc: DEVICE_TYPE_HINT.DESKTOP,\n tablet: DEVICE_TYPE_HINT.TABLET,\n ctv: DEVICE_TYPE_HINT.CONNECTED_TV,\n tv: DEVICE_TYPE_HINT.CONNECTED_TV,\n connectedtv: DEVICE_TYPE_HINT.CONNECTED_TV,\n smarttv: DEVICE_TYPE_HINT.CONNECTED_TV,\n console: DEVICE_TYPE_HINT.GAME_CONSOLE,\n gameconsole: DEVICE_TYPE_HINT.GAME_CONSOLE,\n stb: DEVICE_TYPE_HINT.SET_TOP_BOX,\n settopbox: DEVICE_TYPE_HINT.SET_TOP_BOX\n};\nvar PERSISTENT_ID_COOKIE_MAX_AGE = 60 * 60 * 24 * 365 * 5;\n\n// src/player/FloorLadder.ts\nvar DISABLED_FLOOR_LADDER_CONFIG = Object.freeze({\n enabled: false,\n targetingKey: \"\",\n minFloorCents: 0,\n maxFloorCents: 0,\n stepCents: 0,\n selectedFloorCents: 0,\n fallbackFloorCents: 0,\n readyFloorCents: [],\n mode: \"fixed\",\n allowedPositions: [],\n targetAdUnitPath: \"\",\n configurationVersion: \"\"\n});\nvar DEFAULT_FLOOR_LADDER_BOUNDS = Object.freeze({\n minCents: 25,\n maxCents: 300,\n stepCents: 25\n});\n\n// src/sdk/hlsAdPlayer.ts\nvar import_hls = __toESM(require(\"hls.js\"), 1);\n\n// src/utils/trackingIngest.ts\nvar DEFAULT_TRACKING_INGEST_CONFIG = {\n enabled: true,\n baseUrl: \"https://player-analytics-ingest-api-760490581852.us-central1.run.app/api/adstorm/player-tracking\"\n};\nvar trackingIngestConfig = {\n ...DEFAULT_TRACKING_INGEST_CONFIG\n};\n\n// src/player/HlsEngine.ts\nvar import_hls2 = __toESM(require(\"hls.js\"), 1);\n\n// src/props.ts\nvar noop = () => {\n};\nvar defaultProps = {\n playing: false,\n loop: false,\n controls: true,\n volume: 1,\n muted: false,\n playbackRate: 1,\n width: \"100%\",\n height: \"auto\",\n style: {},\n progressInterval: 1e3,\n playsInline: false,\n autoplay: false,\n preload: \"metadata\",\n poster: \"\",\n className: \"\",\n wrapperClassName: \"\",\n wrapperStyle: {},\n allowNativeHls: false,\n lowLatencyMode: false,\n driftToleranceMs: 1e3,\n immediateManifestAds: true,\n debugAdTiming: false,\n showCustomControls: false,\n hideLoadingIndicator: false,\n licenseKey: \"\",\n isVmap: false,\n vmapUrl: \"\",\n adFailsafeTimeoutMs: 1e4,\n minSegmentsBeforePlay: 2,\n onStart: noop,\n onPlay: noop,\n onPause: noop,\n onBuffer: noop,\n onBufferEnd: noop,\n onEnded: noop,\n onError: noop,\n onDuration: noop,\n onSeek: noop,\n onProgress: noop,\n onVolumeToggle: noop,\n onFullscreenToggle: noop,\n onControlClick: noop\n};\n\n// src/utils.ts\nvar import_react = require(\"react\");\nvar isMediaStream = (url) => {\n return typeof window !== \"undefined\" && window.MediaStream && url instanceof window.MediaStream;\n};\nvar IS_BROWSER = typeof window !== \"undefined\" && window.document;\nvar IS_GLOBAL = typeof globalThis !== \"undefined\" && globalThis.window && globalThis.window.document;\nvar IS_IOS = IS_BROWSER && /iPad|iPhone|iPod/.test(navigator.userAgent);\nvar IS_SAFARI = IS_BROWSER && /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n\n// src/Player.tsx\nvar SEEK_ON_PLAY_EXPIRY = 5e3;\nvar Player = class extends import_react2.Component {\n constructor() {\n super(...arguments);\n this.mounted = false;\n this.isReady = false;\n this.isPlaying = false;\n this.isLoading = true;\n this.loadOnReady = null;\n this.startOnPlay = true;\n this.seekOnPlay = null;\n this.onDurationCalled = false;\n this.handlePlayerMount = (player) => {\n if (this.player) {\n this.progress();\n return;\n }\n this.player = player;\n this.player.load(this.props.src);\n this.progress();\n };\n this.getInternalPlayer = (key) => {\n if (!this.player) return null;\n return this.player.getInternalPlayer(key);\n };\n this.progress = () => {\n if (this.props.src && this.player && this.isReady) {\n const playedSeconds = this.getCurrentTime() || 0;\n const loadedSeconds = this.getSecondsLoaded();\n const duration = this.getDuration();\n if (duration) {\n const progress = {\n playedSeconds,\n played: playedSeconds / duration,\n loaded: 0,\n loadedSeconds: 0\n };\n if (loadedSeconds !== null) {\n progress.loadedSeconds = loadedSeconds;\n progress.loaded = loadedSeconds / duration;\n }\n if (progress.playedSeconds !== this.prevPlayed || progress.loadedSeconds !== this.prevLoaded) {\n this.props.onProgress?.(progress);\n }\n this.prevPlayed = progress.playedSeconds;\n this.prevLoaded = progress.loadedSeconds;\n }\n }\n this.progressTimeout = window.setTimeout(\n this.progress,\n this.props.progressInterval || 1e3\n );\n };\n this.handleReady = () => {\n if (!this.mounted) return;\n this.isReady = true;\n this.isLoading = false;\n const { onReady, playing, volume, muted } = this.props;\n onReady();\n if (!muted && volume !== null) {\n this.player.setVolume(volume);\n }\n if (this.loadOnReady) {\n this.player.load(this.loadOnReady, true);\n this.loadOnReady = null;\n } else if (playing) {\n this.player.play();\n }\n this.handleDurationCheck();\n };\n this.handlePlay = () => {\n this.isPlaying = true;\n this.isLoading = false;\n const { onStart, onPlay, playbackRate } = this.props;\n if (this.startOnPlay) {\n if (this.player.setPlaybackRate && playbackRate !== 1) {\n this.player.setPlaybackRate(playbackRate);\n }\n onStart?.();\n this.startOnPlay = false;\n }\n onPlay?.();\n if (this.seekOnPlay) {\n this.seekTo(this.seekOnPlay);\n this.seekOnPlay = null;\n }\n this.handleDurationCheck();\n };\n this.handlePause = (e) => {\n this.isPlaying = false;\n if (!this.isLoading) {\n this.props.onPause?.(e);\n }\n };\n this.handleEnded = () => {\n const { activePlayer, loop, onEnded } = this.props;\n if (activePlayer.loopOnEnded && loop) {\n this.seekTo(0);\n }\n if (!loop) {\n this.isPlaying = false;\n onEnded?.();\n }\n };\n this.handleError = (...args) => {\n this.isLoading = false;\n this.props.onError?.(args[0], args[1], args[2], args[3]);\n };\n this.handleDurationCheck = () => {\n clearTimeout(this.durationCheckTimeout);\n const duration = this.getDuration();\n if (duration) {\n if (!this.onDurationCalled) {\n this.props.onDuration?.(duration);\n this.onDurationCalled = true;\n }\n } else {\n this.durationCheckTimeout = window.setTimeout(\n this.handleDurationCheck,\n 100\n );\n }\n };\n this.handleLoaded = () => {\n this.isLoading = false;\n };\n }\n componentDidMount() {\n this.mounted = true;\n }\n componentWillUnmount() {\n clearTimeout(this.progressTimeout);\n clearTimeout(this.durationCheckTimeout);\n this.mounted = false;\n }\n componentDidUpdate(prevProps) {\n if (!this.player) return;\n const { src, playing, volume, muted, playbackRate, loop, activePlayer } = this.props;\n if (prevProps.src !== src) {\n if (this.isLoading && !activePlayer.forceLoad && !isMediaStream(src)) {\n console.warn(\n `StormcloudPlayer: the attempt to load ${src} is being deferred until the player has loaded`\n );\n this.loadOnReady = src || null;\n return;\n }\n this.isLoading = true;\n this.startOnPlay = true;\n this.onDurationCalled = false;\n this.player.load(src, this.isReady);\n }\n if (!prevProps.playing && playing && !this.isPlaying) {\n this.player.play();\n }\n if (prevProps.playing && !playing && this.isPlaying) {\n this.player.pause();\n }\n if (prevProps.volume !== volume && volume !== null) {\n this.player.setVolume(volume);\n }\n if (prevProps.muted !== muted) {\n if (muted) {\n this.player.mute();\n } else {\n this.player.unmute();\n if (volume !== null) {\n setTimeout(() => this.player.setVolume(volume));\n }\n }\n }\n if (prevProps.playbackRate !== playbackRate && this.player.setPlaybackRate) {\n this.player.setPlaybackRate(playbackRate);\n }\n if (prevProps.loop !== loop && this.player.setLoop) {\n this.player.setLoop(loop);\n }\n }\n getDuration() {\n if (!this.isReady) return null;\n return this.player.getDuration();\n }\n getCurrentTime() {\n if (!this.isReady) return null;\n return this.player.getCurrentTime();\n }\n getSecondsLoaded() {\n if (!this.isReady) return null;\n return this.player.getSecondsLoaded();\n }\n seekTo(amount, type, keepPlaying) {\n if (!this.isReady) {\n if (amount !== 0) {\n this.seekOnPlay = amount;\n setTimeout(() => {\n this.seekOnPlay = null;\n }, SEEK_ON_PLAY_EXPIRY);\n }\n return;\n }\n const isFraction = !type ? amount > 0 && amount < 1 : type === \"fraction\";\n if (isFraction) {\n const duration = this.player.getDuration();\n if (!duration) {\n console.warn(\n \"StormcloudPlayer: could not seek using fraction \\u2013 duration not yet available\"\n );\n return;\n }\n this.player.seekTo(duration * amount, keepPlaying);\n return;\n }\n this.player.seekTo(amount, keepPlaying);\n }\n render() {\n const Player2 = this.props.activePlayer;\n if (!Player2) {\n return null;\n }\n return import_react2.default.createElement(Player2, {\n ...this.props,\n onMount: this.handlePlayerMount,\n onReady: this.handleReady,\n onPlay: this.handlePlay,\n onPause: this.handlePause,\n onEnded: this.handleEnded,\n onLoaded: this.handleLoaded,\n onError: this.handleError\n });\n }\n};\nPlayer.displayName = \"Player\";\nPlayer.defaultProps = defaultProps;\n"]}
|
|
1
|
+
{"version":3,"sources":["d:\\project\\stormcloud-vp\\lib\\Player.cjs"],"names":["__create","Object","create","__defProp","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__getProtoOf","getPrototypeOf","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toESM","mod","isNodeMode","__esModule","value","__toCommonJS","Player_exports","default","Player","module","exports","import_react2","require","DEVICE_TYPE_HINT","FEATURE_PHONE","SMARTPHONE","DESKTOP","TABLET","CONNECTED_TV","GAME_CONSOLE","SET_TOP_BOX","DEVICE_TYPE_HINT_ALIASES","featurephone","smartphone","mobile","phone","desktop","pc","tablet","ctv","tv","connectedtv","smarttv","console","gameconsole","stb","settopbox","PERSISTENT_ID_COOKIE_MAX_AGE","DISABLED_FLOOR_LADDER_CONFIG","freeze","enabled","targetingKey","minFloorCents","maxFloorCents","stepCents","selectedFloorCents","fallbackFloorCents","readyFloorCents","mode","allowedPositions","targetAdUnitPath","configurationVersion","DEFAULT_FLOOR_LADDER_BOUNDS","minCents","maxCents","import_hls","DEFAULT_TRACKING_INGEST_CONFIG","baseUrl","trackingIngestConfig","import_hls2","MAX_BREAK_SUPPRESSION_MS","noop","defaultProps","playing","loop","controls","volume","muted","playbackRate","width","height","style","progressInterval","playsInline","autoplay","preload","poster","className","wrapperClassName","wrapperStyle","allowNativeHls","lowLatencyMode","driftToleranceMs","immediateManifestAds","debugAdTiming","showCustomControls","hideLoadingIndicator","licenseKey","isVmap","vmapUrl","adFailsafeTimeoutMs","minSegmentsBeforePlay","onStart","onPlay","onPause","onBuffer","onBufferEnd","onEnded","onError","onDuration","onSeek","onProgress","onVolumeToggle","onFullscreenToggle","onControlClick","import_react","isMediaStream","url","window","MediaStream","IS_BROWSER","document","IS_GLOBAL","globalThis","IS_IOS","test","navigator","userAgent","IS_SAFARI","SEEK_ON_PLAY_EXPIRY","arguments","mounted","isReady","isPlaying","isLoading","loadOnReady","startOnPlay","seekOnPlay","onDurationCalled","handlePlayerMount","player","progress","load","props","src","getInternalPlayer","playedSeconds","getCurrentTime","loadedSeconds","getSecondsLoaded","duration","getDuration","played","loaded","prevPlayed","prevLoaded","progressTimeout","setTimeout","handleReady","onReady","setVolume","play","handleDurationCheck","handlePlay","setPlaybackRate","seekTo","handlePause","e","handleEnded","activePlayer","loopOnEnded","handleError","args","clearTimeout","durationCheckTimeout","handleLoaded","componentDidMount","componentWillUnmount","componentDidUpdate","prevProps","forceLoad","warn","pause","mute","unmute","setLoop","amount","type","keepPlaying","isFraction","render","Player2","createElement","onMount","onLoaded","Component","displayName"],"mappings":"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","sourcesContent":["\"use strict\";\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/Player.tsx\nvar Player_exports = {};\n__export(Player_exports, {\n default: () => Player\n});\nmodule.exports = __toCommonJS(Player_exports);\nvar import_react2 = __toESM(require(\"react\"), 1);\n\n// src/utils/vastEnvironmentSignals.ts\nvar DEVICE_TYPE_HINT = {\n FEATURE_PHONE: 1,\n SMARTPHONE: 2,\n DESKTOP: 3,\n TABLET: 4,\n CONNECTED_TV: 5,\n GAME_CONSOLE: 6,\n SET_TOP_BOX: 7\n};\nvar DEVICE_TYPE_HINT_ALIASES = {\n featurephone: DEVICE_TYPE_HINT.FEATURE_PHONE,\n smartphone: DEVICE_TYPE_HINT.SMARTPHONE,\n mobile: DEVICE_TYPE_HINT.SMARTPHONE,\n phone: DEVICE_TYPE_HINT.SMARTPHONE,\n desktop: DEVICE_TYPE_HINT.DESKTOP,\n pc: DEVICE_TYPE_HINT.DESKTOP,\n tablet: DEVICE_TYPE_HINT.TABLET,\n ctv: DEVICE_TYPE_HINT.CONNECTED_TV,\n tv: DEVICE_TYPE_HINT.CONNECTED_TV,\n connectedtv: DEVICE_TYPE_HINT.CONNECTED_TV,\n smarttv: DEVICE_TYPE_HINT.CONNECTED_TV,\n console: DEVICE_TYPE_HINT.GAME_CONSOLE,\n gameconsole: DEVICE_TYPE_HINT.GAME_CONSOLE,\n stb: DEVICE_TYPE_HINT.SET_TOP_BOX,\n settopbox: DEVICE_TYPE_HINT.SET_TOP_BOX\n};\nvar PERSISTENT_ID_COOKIE_MAX_AGE = 60 * 60 * 24 * 365 * 5;\n\n// src/player/FloorLadder.ts\nvar DISABLED_FLOOR_LADDER_CONFIG = Object.freeze({\n enabled: false,\n targetingKey: \"\",\n minFloorCents: 0,\n maxFloorCents: 0,\n stepCents: 0,\n selectedFloorCents: 0,\n fallbackFloorCents: 0,\n readyFloorCents: [],\n mode: \"fixed\",\n allowedPositions: [],\n targetAdUnitPath: \"\",\n configurationVersion: \"\"\n});\nvar DEFAULT_FLOOR_LADDER_BOUNDS = Object.freeze({\n minCents: 25,\n maxCents: 300,\n stepCents: 25\n});\n\n// src/sdk/hlsAdPlayer.ts\nvar import_hls = __toESM(require(\"hls.js\"), 1);\n\n// src/utils/trackingIngest.ts\nvar DEFAULT_TRACKING_INGEST_CONFIG = {\n enabled: true,\n baseUrl: \"https://player-analytics-ingest-api-760490581852.us-central1.run.app/api/adstorm/player-tracking\"\n};\nvar trackingIngestConfig = {\n ...DEFAULT_TRACKING_INGEST_CONFIG\n};\n\n// src/player/HlsEngine.ts\nvar import_hls2 = __toESM(require(\"hls.js\"), 1);\n\n// src/player/ContentHealthWatchdog.ts\nvar MAX_BREAK_SUPPRESSION_MS = 10 * 60 * 1e3;\n\n// src/props.ts\nvar noop = () => {\n};\nvar defaultProps = {\n playing: false,\n loop: false,\n controls: true,\n volume: 1,\n muted: false,\n playbackRate: 1,\n width: \"100%\",\n height: \"auto\",\n style: {},\n progressInterval: 1e3,\n playsInline: false,\n autoplay: false,\n preload: \"metadata\",\n poster: \"\",\n className: \"\",\n wrapperClassName: \"\",\n wrapperStyle: {},\n allowNativeHls: false,\n lowLatencyMode: false,\n driftToleranceMs: 1e3,\n immediateManifestAds: true,\n debugAdTiming: false,\n showCustomControls: false,\n hideLoadingIndicator: false,\n licenseKey: \"\",\n isVmap: false,\n vmapUrl: \"\",\n adFailsafeTimeoutMs: 1e4,\n minSegmentsBeforePlay: 2,\n onStart: noop,\n onPlay: noop,\n onPause: noop,\n onBuffer: noop,\n onBufferEnd: noop,\n onEnded: noop,\n onError: noop,\n onDuration: noop,\n onSeek: noop,\n onProgress: noop,\n onVolumeToggle: noop,\n onFullscreenToggle: noop,\n onControlClick: noop\n};\n\n// src/utils.ts\nvar import_react = require(\"react\");\nvar isMediaStream = (url) => {\n return typeof window !== \"undefined\" && window.MediaStream && url instanceof window.MediaStream;\n};\nvar IS_BROWSER = typeof window !== \"undefined\" && window.document;\nvar IS_GLOBAL = typeof globalThis !== \"undefined\" && globalThis.window && globalThis.window.document;\nvar IS_IOS = IS_BROWSER && /iPad|iPhone|iPod/.test(navigator.userAgent);\nvar IS_SAFARI = IS_BROWSER && /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n\n// src/Player.tsx\nvar SEEK_ON_PLAY_EXPIRY = 5e3;\nvar Player = class extends import_react2.Component {\n constructor() {\n super(...arguments);\n this.mounted = false;\n this.isReady = false;\n this.isPlaying = false;\n this.isLoading = true;\n this.loadOnReady = null;\n this.startOnPlay = true;\n this.seekOnPlay = null;\n this.onDurationCalled = false;\n this.handlePlayerMount = (player) => {\n if (this.player) {\n this.progress();\n return;\n }\n this.player = player;\n this.player.load(this.props.src);\n this.progress();\n };\n this.getInternalPlayer = (key) => {\n if (!this.player) return null;\n return this.player.getInternalPlayer(key);\n };\n this.progress = () => {\n if (this.props.src && this.player && this.isReady) {\n const playedSeconds = this.getCurrentTime() || 0;\n const loadedSeconds = this.getSecondsLoaded();\n const duration = this.getDuration();\n if (duration) {\n const progress = {\n playedSeconds,\n played: playedSeconds / duration,\n loaded: 0,\n loadedSeconds: 0\n };\n if (loadedSeconds !== null) {\n progress.loadedSeconds = loadedSeconds;\n progress.loaded = loadedSeconds / duration;\n }\n if (progress.playedSeconds !== this.prevPlayed || progress.loadedSeconds !== this.prevLoaded) {\n this.props.onProgress?.(progress);\n }\n this.prevPlayed = progress.playedSeconds;\n this.prevLoaded = progress.loadedSeconds;\n }\n }\n this.progressTimeout = window.setTimeout(\n this.progress,\n this.props.progressInterval || 1e3\n );\n };\n this.handleReady = () => {\n if (!this.mounted) return;\n this.isReady = true;\n this.isLoading = false;\n const { onReady, playing, volume, muted } = this.props;\n onReady();\n if (!muted && volume !== null) {\n this.player.setVolume(volume);\n }\n if (this.loadOnReady) {\n this.player.load(this.loadOnReady, true);\n this.loadOnReady = null;\n } else if (playing) {\n this.player.play();\n }\n this.handleDurationCheck();\n };\n this.handlePlay = () => {\n this.isPlaying = true;\n this.isLoading = false;\n const { onStart, onPlay, playbackRate } = this.props;\n if (this.startOnPlay) {\n if (this.player.setPlaybackRate && playbackRate !== 1) {\n this.player.setPlaybackRate(playbackRate);\n }\n onStart?.();\n this.startOnPlay = false;\n }\n onPlay?.();\n if (this.seekOnPlay) {\n this.seekTo(this.seekOnPlay);\n this.seekOnPlay = null;\n }\n this.handleDurationCheck();\n };\n this.handlePause = (e) => {\n this.isPlaying = false;\n if (!this.isLoading) {\n this.props.onPause?.(e);\n }\n };\n this.handleEnded = () => {\n const { activePlayer, loop, onEnded } = this.props;\n if (activePlayer.loopOnEnded && loop) {\n this.seekTo(0);\n }\n if (!loop) {\n this.isPlaying = false;\n onEnded?.();\n }\n };\n this.handleError = (...args) => {\n this.isLoading = false;\n this.props.onError?.(args[0], args[1], args[2], args[3]);\n };\n this.handleDurationCheck = () => {\n clearTimeout(this.durationCheckTimeout);\n const duration = this.getDuration();\n if (duration) {\n if (!this.onDurationCalled) {\n this.props.onDuration?.(duration);\n this.onDurationCalled = true;\n }\n } else {\n this.durationCheckTimeout = window.setTimeout(\n this.handleDurationCheck,\n 100\n );\n }\n };\n this.handleLoaded = () => {\n this.isLoading = false;\n };\n }\n componentDidMount() {\n this.mounted = true;\n }\n componentWillUnmount() {\n clearTimeout(this.progressTimeout);\n clearTimeout(this.durationCheckTimeout);\n this.mounted = false;\n }\n componentDidUpdate(prevProps) {\n if (!this.player) return;\n const { src, playing, volume, muted, playbackRate, loop, activePlayer } = this.props;\n if (prevProps.src !== src) {\n if (this.isLoading && !activePlayer.forceLoad && !isMediaStream(src)) {\n console.warn(\n `StormcloudPlayer: the attempt to load ${src} is being deferred until the player has loaded`\n );\n this.loadOnReady = src || null;\n return;\n }\n this.isLoading = true;\n this.startOnPlay = true;\n this.onDurationCalled = false;\n this.player.load(src, this.isReady);\n }\n if (!prevProps.playing && playing && !this.isPlaying) {\n this.player.play();\n }\n if (prevProps.playing && !playing && this.isPlaying) {\n this.player.pause();\n }\n if (prevProps.volume !== volume && volume !== null) {\n this.player.setVolume(volume);\n }\n if (prevProps.muted !== muted) {\n if (muted) {\n this.player.mute();\n } else {\n this.player.unmute();\n if (volume !== null) {\n setTimeout(() => this.player.setVolume(volume));\n }\n }\n }\n if (prevProps.playbackRate !== playbackRate && this.player.setPlaybackRate) {\n this.player.setPlaybackRate(playbackRate);\n }\n if (prevProps.loop !== loop && this.player.setLoop) {\n this.player.setLoop(loop);\n }\n }\n getDuration() {\n if (!this.isReady) return null;\n return this.player.getDuration();\n }\n getCurrentTime() {\n if (!this.isReady) return null;\n return this.player.getCurrentTime();\n }\n getSecondsLoaded() {\n if (!this.isReady) return null;\n return this.player.getSecondsLoaded();\n }\n seekTo(amount, type, keepPlaying) {\n if (!this.isReady) {\n if (amount !== 0) {\n this.seekOnPlay = amount;\n setTimeout(() => {\n this.seekOnPlay = null;\n }, SEEK_ON_PLAY_EXPIRY);\n }\n return;\n }\n const isFraction = !type ? amount > 0 && amount < 1 : type === \"fraction\";\n if (isFraction) {\n const duration = this.player.getDuration();\n if (!duration) {\n console.warn(\n \"StormcloudPlayer: could not seek using fraction \\u2013 duration not yet available\"\n );\n return;\n }\n this.player.seekTo(duration * amount, keepPlaying);\n return;\n }\n this.player.seekTo(amount, keepPlaying);\n }\n render() {\n const Player2 = this.props.activePlayer;\n if (!Player2) {\n return null;\n }\n return import_react2.default.createElement(Player2, {\n ...this.props,\n onMount: this.handlePlayerMount,\n onReady: this.handleReady,\n onPlay: this.handlePlay,\n onPause: this.handlePause,\n onEnded: this.handleEnded,\n onLoaded: this.handleLoaded,\n onError: this.handleError\n });\n }\n};\nPlayer.displayName = \"Player\";\nPlayer.defaultProps = defaultProps;\n"]}
|
package/lib/Player.d.cts
CHANGED
|
@@ -11,7 +11,7 @@ interface PlayerProps extends BaseStormcloudPlayerProps {
|
|
|
11
11
|
}
|
|
12
12
|
declare class Player extends Component<PlayerProps> {
|
|
13
13
|
static displayName: string;
|
|
14
|
-
static defaultProps: Required<Omit<BaseStormcloudPlayerProps, "
|
|
14
|
+
static defaultProps: Required<Omit<BaseStormcloudPlayerProps, "maxAdBreakExtensionMs" | "minRemainingMsToRequestAd" | "maxNoFillsPerBreak" | "vastTagUrl" | "ctvAdRequest" | keyof React.VideoHTMLAttributes<HTMLVideoElement> | "onReady">>;
|
|
15
15
|
private mounted;
|
|
16
16
|
private isReady;
|
|
17
17
|
private isPlaying;
|
package/lib/StormcloudPlayer.cjs
CHANGED
|
@@ -2302,6 +2302,9 @@ function requiresMediaPipelineResetAfterAds() {
|
|
|
2302
2302
|
var browser = detectBrowser();
|
|
2303
2303
|
return browser.name === "Samsung Tizen" && ((_browser_tizenVersion = browser.tizenVersion) !== null && _browser_tizenVersion !== void 0 ? _browser_tizenVersion : 0) >= 5;
|
|
2304
2304
|
}
|
|
2305
|
+
function prefersProgressiveAdMedia() {
|
|
2306
|
+
return detectBrowser().isSmartTV;
|
|
2307
|
+
}
|
|
2305
2308
|
function getBrowserConfigOverrides() {
|
|
2306
2309
|
var browser = detectBrowser();
|
|
2307
2310
|
var overrides = {};
|
|
@@ -3145,6 +3148,7 @@ function createHlsAdPlayer(contentVideo, options) {
|
|
|
3145
3148
|
var probe = adVideoElement !== null && adVideoElement !== void 0 ? adVideoElement : document.createElement("video");
|
|
3146
3149
|
var pageIsHttps = typeof location !== "undefined" && location.protocol === "https:";
|
|
3147
3150
|
var target = getMediaTargetQuality();
|
|
3151
|
+
var deprioritizeHls = prefersProgressiveAdMedia();
|
|
3148
3152
|
var accepted = [];
|
|
3149
3153
|
mediaFiles.forEach(function(file, index) {
|
|
3150
3154
|
var isHls = isHlsMediaFile(file);
|
|
@@ -3175,19 +3179,24 @@ function createHlsAdPlayer(contentVideo, options) {
|
|
|
3175
3179
|
var bitrateDiff = Math.abs((file.bitrate || 5e3) * 1e3 - target.bitrate);
|
|
3176
3180
|
score = resolutionDiff * 2 + bitrateDiff / 1e3;
|
|
3177
3181
|
}
|
|
3182
|
+
var deprioritizedHls = deprioritizeHls && isHls;
|
|
3178
3183
|
accepted.push({
|
|
3179
3184
|
file: file,
|
|
3180
3185
|
score: score,
|
|
3181
|
-
insecure: insecure
|
|
3186
|
+
insecure: insecure,
|
|
3187
|
+
deprioritizedHls: deprioritizedHls
|
|
3182
3188
|
});
|
|
3183
3189
|
logFunnel("media_candidate", _object_spread_props(_object_spread({}, details), {
|
|
3184
3190
|
reason: "accepted",
|
|
3185
|
-
why: insecure ? "insecure_http_deprioritized" : "playable",
|
|
3191
|
+
why: insecure ? "insecure_http_deprioritized" : deprioritizedHls ? "hls_deprioritized_on_tv" : "playable",
|
|
3186
3192
|
score: score
|
|
3187
3193
|
}));
|
|
3188
3194
|
});
|
|
3189
3195
|
accepted.sort(function(a, b) {
|
|
3190
3196
|
if (a.insecure !== b.insecure) return a.insecure ? 1 : -1;
|
|
3197
|
+
if (a.deprioritizedHls !== b.deprioritizedHls) {
|
|
3198
|
+
return a.deprioritizedHls ? 1 : -1;
|
|
3199
|
+
}
|
|
3191
3200
|
return a.score - b.score;
|
|
3192
3201
|
});
|
|
3193
3202
|
return accepted.map(function(entry) {
|
|
@@ -4860,8 +4869,8 @@ function createHlsAdPlayer(contentVideo, options) {
|
|
|
4860
4869
|
console.warn("[HlsAdPlayer] Error preparing ad video for new source:", error);
|
|
4861
4870
|
}
|
|
4862
4871
|
}
|
|
4863
|
-
function recreateAdVideoElement() {
|
|
4864
|
-
console.log("[HlsAdPlayer] Recreating ad video element (
|
|
4872
|
+
function recreateAdVideoElement(reason) {
|
|
4873
|
+
console.log("[HlsAdPlayer] Recreating ad video element (".concat(reason, ")"));
|
|
4865
4874
|
teardownAdEventListeners();
|
|
4866
4875
|
prepareVideoElementForNewSource();
|
|
4867
4876
|
if (adVideoElement) {
|
|
@@ -4905,8 +4914,9 @@ function createHlsAdPlayer(contentVideo, options) {
|
|
|
4905
4914
|
}
|
|
4906
4915
|
function resetVideoElementForNextSource() {
|
|
4907
4916
|
clearStallWatchdog();
|
|
4908
|
-
|
|
4909
|
-
|
|
4917
|
+
var previousSourceUsedHlsJs = adHls !== void 0;
|
|
4918
|
+
if (requiresMediaPipelineResetAfterAds() || previousSourceUsedHlsJs) {
|
|
4919
|
+
recreateAdVideoElement(previousSourceUsedHlsJs ? "after hls.js source" : "single-decoder platform");
|
|
4910
4920
|
setupAdEventListeners();
|
|
4911
4921
|
} else {
|
|
4912
4922
|
prepareVideoElementForNewSource();
|
|
@@ -12388,6 +12398,181 @@ var AdBreakOrchestrator = /*#__PURE__*/ function() {
|
|
|
12388
12398
|
]);
|
|
12389
12399
|
return AdBreakOrchestrator;
|
|
12390
12400
|
}();
|
|
12401
|
+
// src/player/ContentHealthWatchdog.ts
|
|
12402
|
+
var POLL_INTERVAL_MS = 2e3;
|
|
12403
|
+
var STALL_THRESHOLD_MS = 12e3;
|
|
12404
|
+
var POST_BREAK_GRACE_MS = 5e4;
|
|
12405
|
+
var MAX_BREAK_SUPPRESSION_MS = 10 * 60 * 1e3;
|
|
12406
|
+
var SELF_INFLICTED_PAUSE_WINDOW_MS = 5e3;
|
|
12407
|
+
var HEALTHY_PLAYBACK_SECONDS = 5;
|
|
12408
|
+
var MAX_NORMAL_ADVANCE_PER_TICK_S = 4;
|
|
12409
|
+
var LIGHT_STEP_COOLDOWN_MS = 1e4;
|
|
12410
|
+
var RELOAD_BASE_COOLDOWN_MS = 15e3;
|
|
12411
|
+
var RELOAD_MAX_COOLDOWN_MS = 12e4;
|
|
12412
|
+
var ContentHealthWatchdog = /*#__PURE__*/ function() {
|
|
12413
|
+
function ContentHealthWatchdog(host) {
|
|
12414
|
+
var _this = this;
|
|
12415
|
+
_class_call_check(this, ContentHealthWatchdog);
|
|
12416
|
+
this.host = host;
|
|
12417
|
+
this.armed = false;
|
|
12418
|
+
this.userPaused = false;
|
|
12419
|
+
this.wasInBreak = false;
|
|
12420
|
+
this.breakStartedAt = 0;
|
|
12421
|
+
this.stuckBreakLogged = false;
|
|
12422
|
+
this.graceUntil = 0;
|
|
12423
|
+
this.lastPosition = 0;
|
|
12424
|
+
this.lastProgressAt = 0;
|
|
12425
|
+
this.lastRealPlaybackAt = 0;
|
|
12426
|
+
this.healthySeconds = 0;
|
|
12427
|
+
this.step = 0;
|
|
12428
|
+
this.nextActionAt = 0;
|
|
12429
|
+
this.lastActionAt = 0;
|
|
12430
|
+
this.onPlaying = function() {
|
|
12431
|
+
if (_this.host.isAdPlaying()) return;
|
|
12432
|
+
_this.armed = true;
|
|
12433
|
+
_this.userPaused = false;
|
|
12434
|
+
};
|
|
12435
|
+
this.onPause = function() {
|
|
12436
|
+
if (_this.host.isBreakActive() || _this.host.isAdPlaying() || Date.now() - _this.lastActionAt < SELF_INFLICTED_PAUSE_WINDOW_MS) {
|
|
12437
|
+
return;
|
|
12438
|
+
}
|
|
12439
|
+
_this.userPaused = true;
|
|
12440
|
+
};
|
|
12441
|
+
this.onPlay = function() {
|
|
12442
|
+
_this.userPaused = false;
|
|
12443
|
+
};
|
|
12444
|
+
}
|
|
12445
|
+
_create_class(ContentHealthWatchdog, [
|
|
12446
|
+
{
|
|
12447
|
+
key: "start",
|
|
12448
|
+
value: function start() {
|
|
12449
|
+
var _this = this;
|
|
12450
|
+
if (this.intervalId !== void 0) return;
|
|
12451
|
+
var video = this.host.video;
|
|
12452
|
+
video.addEventListener("playing", this.onPlaying);
|
|
12453
|
+
video.addEventListener("pause", this.onPause);
|
|
12454
|
+
video.addEventListener("play", this.onPlay);
|
|
12455
|
+
this.resetProgress(Date.now());
|
|
12456
|
+
this.intervalId = window.setInterval(function() {
|
|
12457
|
+
return _this.tick();
|
|
12458
|
+
}, POLL_INTERVAL_MS);
|
|
12459
|
+
}
|
|
12460
|
+
},
|
|
12461
|
+
{
|
|
12462
|
+
key: "stop",
|
|
12463
|
+
value: function stop() {
|
|
12464
|
+
if (this.intervalId !== void 0) {
|
|
12465
|
+
clearInterval(this.intervalId);
|
|
12466
|
+
this.intervalId = void 0;
|
|
12467
|
+
}
|
|
12468
|
+
var video = this.host.video;
|
|
12469
|
+
video.removeEventListener("playing", this.onPlaying);
|
|
12470
|
+
video.removeEventListener("pause", this.onPause);
|
|
12471
|
+
video.removeEventListener("play", this.onPlay);
|
|
12472
|
+
this.armed = false;
|
|
12473
|
+
this.step = 0;
|
|
12474
|
+
}
|
|
12475
|
+
},
|
|
12476
|
+
{
|
|
12477
|
+
key: "resetProgress",
|
|
12478
|
+
value: function resetProgress(now) {
|
|
12479
|
+
this.lastPosition = this.host.video.currentTime;
|
|
12480
|
+
this.lastProgressAt = now;
|
|
12481
|
+
}
|
|
12482
|
+
},
|
|
12483
|
+
{
|
|
12484
|
+
key: "tick",
|
|
12485
|
+
value: function tick() {
|
|
12486
|
+
var now = Date.now();
|
|
12487
|
+
var video = this.host.video;
|
|
12488
|
+
var hidden = typeof document !== "undefined" && document.visibilityState === "hidden";
|
|
12489
|
+
if (!this.armed || this.userPaused || hidden || video.ended || !this.host.isLiveStream() || !this.host.hasHlsInstance()) {
|
|
12490
|
+
this.resetProgress(now);
|
|
12491
|
+
return;
|
|
12492
|
+
}
|
|
12493
|
+
var breakActive = this.host.isBreakActive() || this.host.isAdPlaying();
|
|
12494
|
+
if (breakActive && !this.wasInBreak) {
|
|
12495
|
+
this.wasInBreak = true;
|
|
12496
|
+
this.breakStartedAt = now;
|
|
12497
|
+
this.stuckBreakLogged = false;
|
|
12498
|
+
}
|
|
12499
|
+
if (breakActive && now - this.breakStartedAt < MAX_BREAK_SUPPRESSION_MS) {
|
|
12500
|
+
this.resetProgress(now);
|
|
12501
|
+
return;
|
|
12502
|
+
}
|
|
12503
|
+
if (breakActive && !this.stuckBreakLogged) {
|
|
12504
|
+
this.stuckBreakLogged = true;
|
|
12505
|
+
console.warn("[ContentWatchdog] Ad break state active for over ".concat(MAX_BREAK_SUPPRESSION_MS / 6e4, " min — monitoring content anyway"));
|
|
12506
|
+
}
|
|
12507
|
+
if (!breakActive && this.wasInBreak) {
|
|
12508
|
+
this.wasInBreak = false;
|
|
12509
|
+
this.graceUntil = now + POST_BREAK_GRACE_MS;
|
|
12510
|
+
this.resetProgress(now);
|
|
12511
|
+
return;
|
|
12512
|
+
}
|
|
12513
|
+
var currentTime = video.currentTime;
|
|
12514
|
+
var delta = currentTime - this.lastPosition;
|
|
12515
|
+
this.lastPosition = currentTime;
|
|
12516
|
+
if (delta > 0.25 && delta <= MAX_NORMAL_ADVANCE_PER_TICK_S && !video.paused) {
|
|
12517
|
+
this.lastProgressAt = now;
|
|
12518
|
+
this.lastRealPlaybackAt = now;
|
|
12519
|
+
this.healthySeconds += delta;
|
|
12520
|
+
if (this.step > 0 && this.healthySeconds >= HEALTHY_PLAYBACK_SECONDS) {
|
|
12521
|
+
console.log("[ContentWatchdog] Content playback recovered after ".concat(this.step, " recovery step(s)"));
|
|
12522
|
+
this.step = 0;
|
|
12523
|
+
this.nextActionAt = 0;
|
|
12524
|
+
}
|
|
12525
|
+
return;
|
|
12526
|
+
}
|
|
12527
|
+
if (now < this.graceUntil) {
|
|
12528
|
+
this.lastProgressAt = now;
|
|
12529
|
+
return;
|
|
12530
|
+
}
|
|
12531
|
+
if (now - this.lastProgressAt < STALL_THRESHOLD_MS || now < this.nextActionAt) {
|
|
12532
|
+
return;
|
|
12533
|
+
}
|
|
12534
|
+
this.recover(now);
|
|
12535
|
+
}
|
|
12536
|
+
},
|
|
12537
|
+
{
|
|
12538
|
+
key: "recover",
|
|
12539
|
+
value: function recover(now) {
|
|
12540
|
+
var video = this.host.video;
|
|
12541
|
+
var state = "t=".concat(video.currentTime.toFixed(2), " paused=").concat(video.paused, " readyState=").concat(video.readyState, " networkState=").concat(video.networkState, " error=").concat(video.error ? video.error.code : "none");
|
|
12542
|
+
var stalledForS = ((now - (this.lastRealPlaybackAt || this.lastProgressAt)) / 1e3).toFixed(0);
|
|
12543
|
+
var fullReloadOnly = this.host.requiresMediaPipelineResetAfterAds();
|
|
12544
|
+
var action = fullReloadOnly || this.step >= 2 ? "reload" : this.step === 0 ? "recover_media_error" : "restart_load";
|
|
12545
|
+
console.warn("[ContentWatchdog] Content stalled for ".concat(stalledForS, "s — ").concat(action, " (step ").concat(this.step + 1, ") — ").concat(state));
|
|
12546
|
+
this.lastActionAt = now;
|
|
12547
|
+
this.healthySeconds = 0;
|
|
12548
|
+
if (action === "recover_media_error") {
|
|
12549
|
+
this.host.recoverMediaError();
|
|
12550
|
+
this.nextActionAt = now + LIGHT_STEP_COOLDOWN_MS;
|
|
12551
|
+
} else if (action === "restart_load") {
|
|
12552
|
+
var liveSyncPos = this.host.getLiveSyncPosition();
|
|
12553
|
+
var position = liveSyncPos != null && liveSyncPos > video.currentTime ? liveSyncPos : video.currentTime;
|
|
12554
|
+
if (position !== video.currentTime) {
|
|
12555
|
+
video.currentTime = position;
|
|
12556
|
+
}
|
|
12557
|
+
this.host.restartHlsLoad(position);
|
|
12558
|
+
this.nextActionAt = now + LIGHT_STEP_COOLDOWN_MS;
|
|
12559
|
+
} else {
|
|
12560
|
+
var reloadIndex = fullReloadOnly ? this.step : this.step - 2;
|
|
12561
|
+
var cooldown = Math.min(RELOAD_BASE_COOLDOWN_MS * Math.pow(2, reloadIndex), RELOAD_MAX_COOLDOWN_MS);
|
|
12562
|
+
this.host.reloadLiveStream();
|
|
12563
|
+
this.nextActionAt = now + cooldown;
|
|
12564
|
+
}
|
|
12565
|
+
this.step++;
|
|
12566
|
+
this.resetProgress(now);
|
|
12567
|
+
if (video.paused) {
|
|
12568
|
+
var _video_play;
|
|
12569
|
+
(_video_play = video.play()) === null || _video_play === void 0 ? void 0 : _video_play.catch(function() {});
|
|
12570
|
+
}
|
|
12571
|
+
}
|
|
12572
|
+
}
|
|
12573
|
+
]);
|
|
12574
|
+
return ContentHealthWatchdog;
|
|
12575
|
+
}();
|
|
12391
12576
|
// src/player/StormcloudVideoPlayer.ts
|
|
12392
12577
|
var StormcloudVideoPlayer = /*#__PURE__*/ function() {
|
|
12393
12578
|
function StormcloudVideoPlayer(config) {
|
|
@@ -12518,6 +12703,36 @@ var StormcloudVideoPlayer = /*#__PURE__*/ function() {
|
|
|
12518
12703
|
return _this.palNonce.sendAdTouch(event);
|
|
12519
12704
|
}
|
|
12520
12705
|
}, this.timing, this.adConfig, this.cueManager, this.placeholder);
|
|
12706
|
+
this.contentWatchdog = new ContentHealthWatchdog({
|
|
12707
|
+
video: this.video,
|
|
12708
|
+
isLiveStream: function isLiveStream() {
|
|
12709
|
+
return _this.hlsEngine.isLiveStream;
|
|
12710
|
+
},
|
|
12711
|
+
hasHlsInstance: function hasHlsInstance() {
|
|
12712
|
+
return !!_this.hlsEngine.hls;
|
|
12713
|
+
},
|
|
12714
|
+
isBreakActive: function isBreakActive() {
|
|
12715
|
+
return _this.adBreak.inAdBreak || _this.adBreak.isBreakActive();
|
|
12716
|
+
},
|
|
12717
|
+
isAdPlaying: function isAdPlaying() {
|
|
12718
|
+
return _this.adPlayer.isAdPlaying();
|
|
12719
|
+
},
|
|
12720
|
+
requiresMediaPipelineResetAfterAds: function requiresMediaPipelineResetAfterAds1() {
|
|
12721
|
+
return requiresMediaPipelineResetAfterAds();
|
|
12722
|
+
},
|
|
12723
|
+
getLiveSyncPosition: function getLiveSyncPosition() {
|
|
12724
|
+
return _this.hlsEngine.getLiveSyncPosition();
|
|
12725
|
+
},
|
|
12726
|
+
recoverMediaError: function recoverMediaError() {
|
|
12727
|
+
return _this.hlsEngine.recoverMediaError();
|
|
12728
|
+
},
|
|
12729
|
+
restartHlsLoad: function restartHlsLoad(position) {
|
|
12730
|
+
return _this.hlsEngine.restartLoadAt(position);
|
|
12731
|
+
},
|
|
12732
|
+
reloadLiveStream: function reloadLiveStream() {
|
|
12733
|
+
return _this.hlsEngine.reloadLiveStream();
|
|
12734
|
+
}
|
|
12735
|
+
});
|
|
12521
12736
|
}
|
|
12522
12737
|
_create_class(StormcloudVideoPlayer, [
|
|
12523
12738
|
{
|
|
@@ -12838,6 +13053,9 @@ var StormcloudVideoPlayer = /*#__PURE__*/ function() {
|
|
|
12838
13053
|
}
|
|
12839
13054
|
};
|
|
12840
13055
|
this.video.addEventListener("emptied", this.emptiedHandler);
|
|
13056
|
+
if (this.config.contentStallWatchdog !== false) {
|
|
13057
|
+
this.contentWatchdog.start();
|
|
13058
|
+
}
|
|
12841
13059
|
}
|
|
12842
13060
|
},
|
|
12843
13061
|
{
|
|
@@ -13322,6 +13540,7 @@ var StormcloudVideoPlayer = /*#__PURE__*/ function() {
|
|
|
13322
13540
|
key: "destroy",
|
|
13323
13541
|
value: function destroy() {
|
|
13324
13542
|
var _this_adPlayer;
|
|
13543
|
+
this.contentWatchdog.stop();
|
|
13325
13544
|
this.adBreak.cancelScheduledRequest();
|
|
13326
13545
|
this.timing.destroy();
|
|
13327
13546
|
this.adBreak.clearPendingAdBreak();
|