unified-video-framework 1.4.436 → 1.4.438

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "unified-video-framework",
3
- "version": "1.4.436",
3
+ "version": "1.4.438",
4
4
  "description": "Cross-platform video player framework supporting iOS, Android, Web, Smart TVs (Samsung/LG), Roku, and more",
5
5
  "main": "packages/core/dist/index.js",
6
6
  "types": "packages/core/dist/index.d.ts",
@@ -94,6 +94,8 @@ export declare class WebPlayer extends BasePlayer {
94
94
  private currentRetryAttempt;
95
95
  private lastFailedUrl;
96
96
  private isFallbackPosterMode;
97
+ private hlsErrorRetryCount;
98
+ private readonly MAX_HLS_ERROR_RETRIES;
97
99
  private lastDuration;
98
100
  private isDetectedAsLive;
99
101
  private debugLog;
@@ -162,6 +164,12 @@ export declare class WebPlayer extends BasePlayer {
162
164
  setPlaybackRate(rate: number): void;
163
165
  setFlashNewsTicker(config: FlashNewsTickerConfig): void;
164
166
  private createTickerElement;
167
+ private createSimpleTickerElement;
168
+ private createBroadcastTickerElement;
169
+ private getBroadcastThemeColors;
170
+ private createGlobeElement;
171
+ private createLiveBadgeElement;
172
+ private ensureTickerAnimations;
165
173
  private calculateTickerDuration;
166
174
  setAutoQuality(enabled: boolean): void;
167
175
  enterFullscreen(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"WebPlayer.d.ts","sourceRoot":"","sources":["../src/WebPlayer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WebPlayer.d.ts","sourceRoot":"","sources":["../src/WebPlayer.ts"],"names":[],"mappings":"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"}
@@ -97,6 +97,8 @@ export class WebPlayer extends BasePlayer {
97
97
  this.currentRetryAttempt = 0;
98
98
  this.lastFailedUrl = '';
99
99
  this.isFallbackPosterMode = false;
100
+ this.hlsErrorRetryCount = 0;
101
+ this.MAX_HLS_ERROR_RETRIES = 3;
100
102
  this.lastDuration = 0;
101
103
  this.isDetectedAsLive = false;
102
104
  this.autoplayAttempted = false;
@@ -531,6 +533,7 @@ export class WebPlayer extends BasePlayer {
531
533
  this.currentRetryAttempt = 0;
532
534
  this.lastFailedUrl = '';
533
535
  this.isFallbackPosterMode = false;
536
+ this.hlsErrorRetryCount = 0;
534
537
  await this.cleanup();
535
538
  if (!this.video) {
536
539
  throw new Error('Video element not initialized');
@@ -828,6 +831,7 @@ export class WebPlayer extends BasePlayer {
828
831
  this.hls.loadSource(url);
829
832
  this.hls.attachMedia(this.video);
830
833
  this.hls.on(window.Hls.Events.MANIFEST_PARSED, (event, data) => {
834
+ this.hlsErrorRetryCount = 0;
831
835
  this.qualities = data.levels.map((level, index) => ({
832
836
  height: level.height,
833
837
  width: level.width || 0,
@@ -861,27 +865,85 @@ export class WebPlayer extends BasePlayer {
861
865
  throw new Error('HLS is not supported in this browser');
862
866
  }
863
867
  }
864
- handleHLSError(data) {
868
+ async handleHLSError(data) {
865
869
  const Hls = window.Hls;
870
+ this.debugLog(`🔴 HLS Error: type=${data.type}, details=${data.details}, fatal=${data.fatal}`);
871
+ if (this.hlsErrorRetryCount >= this.MAX_HLS_ERROR_RETRIES) {
872
+ this.debugLog(`🔴 HLS max retries (${this.MAX_HLS_ERROR_RETRIES}) exceeded, triggering fallback`);
873
+ this.hls?.destroy();
874
+ this.hls = null;
875
+ const fallbackLoaded = await this.tryFallbackSource({
876
+ code: 'HLS_ERROR',
877
+ message: data.details,
878
+ type: data.type,
879
+ fatal: true,
880
+ details: data
881
+ });
882
+ if (!fallbackLoaded) {
883
+ this.handleError({
884
+ code: 'HLS_ERROR',
885
+ message: `HLS stream failed after ${this.MAX_HLS_ERROR_RETRIES} retries: ${data.details}`,
886
+ type: 'media',
887
+ fatal: true,
888
+ details: data
889
+ });
890
+ }
891
+ return;
892
+ }
866
893
  switch (data.type) {
867
894
  case Hls.ErrorTypes.NETWORK_ERROR:
868
- console.error('Fatal network error, trying to recover');
869
- this.hls.startLoad();
895
+ this.hlsErrorRetryCount++;
896
+ this.debugLog(`🔴 Fatal network error (attempt ${this.hlsErrorRetryCount}/${this.MAX_HLS_ERROR_RETRIES}), trying to recover`);
897
+ if (data.details === 'manifestLoadError' || data.details === 'manifestParsingError') {
898
+ this.debugLog(`🔴 Manifest error detected (${data.details}), skipping recovery - triggering fallback`);
899
+ this.hls?.destroy();
900
+ this.hls = null;
901
+ const fallbackLoaded = await this.tryFallbackSource({
902
+ code: 'HLS_MANIFEST_ERROR',
903
+ message: data.details,
904
+ type: 'network',
905
+ fatal: true,
906
+ details: data
907
+ });
908
+ if (!fallbackLoaded) {
909
+ this.handleError({
910
+ code: 'HLS_MANIFEST_ERROR',
911
+ message: `Failed to load HLS manifest: ${data.details}`,
912
+ type: 'media',
913
+ fatal: true,
914
+ details: data
915
+ });
916
+ }
917
+ }
918
+ else {
919
+ this.hls?.startLoad();
920
+ }
870
921
  break;
871
922
  case Hls.ErrorTypes.MEDIA_ERROR:
872
- console.error('Fatal media error, trying to recover');
873
- this.hls.recoverMediaError();
923
+ this.hlsErrorRetryCount++;
924
+ this.debugLog(`🔴 Fatal media error (attempt ${this.hlsErrorRetryCount}/${this.MAX_HLS_ERROR_RETRIES}), trying to recover`);
925
+ this.hls?.recoverMediaError();
874
926
  break;
875
927
  default:
876
- console.error('Fatal error, cannot recover');
877
- this.handleError({
928
+ this.debugLog(`🔴 Fatal unrecoverable HLS error: ${data.details}`);
929
+ this.hls?.destroy();
930
+ this.hls = null;
931
+ const fallbackLoaded = await this.tryFallbackSource({
878
932
  code: 'HLS_ERROR',
879
933
  message: data.details,
880
934
  type: 'media',
881
935
  fatal: true,
882
936
  details: data
883
937
  });
884
- this.hls.destroy();
938
+ if (!fallbackLoaded) {
939
+ this.handleError({
940
+ code: 'HLS_ERROR',
941
+ message: data.details,
942
+ type: 'media',
943
+ fatal: true,
944
+ details: data
945
+ });
946
+ }
885
947
  break;
886
948
  }
887
949
  }
@@ -1876,8 +1938,14 @@ export class WebPlayer extends BasePlayer {
1876
1938
  }
1877
1939
  }
1878
1940
  createTickerElement(config, position) {
1941
+ if (config.styleVariant === 'broadcast') {
1942
+ return this.createBroadcastTickerElement(config, position);
1943
+ }
1944
+ return this.createSimpleTickerElement(config, position);
1945
+ }
1946
+ createSimpleTickerElement(config, position) {
1879
1947
  const ticker = document.createElement('div');
1880
- ticker.className = `uvf-flash-ticker ticker-${position}`;
1948
+ ticker.className = `uvf-flash-ticker ticker-${position} ticker-simple`;
1881
1949
  const bottomOffset = config.bottomOffset || 0;
1882
1950
  const topOffset = config.topOffset || 0;
1883
1951
  const height = config.height || 40;
@@ -1952,6 +2020,223 @@ export class WebPlayer extends BasePlayer {
1952
2020
  renderItems();
1953
2021
  }
1954
2022
  ticker.appendChild(track);
2023
+ this.ensureTickerAnimations();
2024
+ return ticker;
2025
+ }
2026
+ createBroadcastTickerElement(config, position) {
2027
+ const broadcastStyle = config.broadcastStyle || {};
2028
+ const theme = broadcastStyle.theme || 'breaking-red';
2029
+ const themeColors = this.getBroadcastThemeColors(theme, broadcastStyle);
2030
+ const ticker = document.createElement('div');
2031
+ ticker.className = `uvf-flash-ticker ticker-${position} ticker-broadcast`;
2032
+ const bottomOffset = config.bottomOffset || 0;
2033
+ const topOffset = config.topOffset || 0;
2034
+ const headerHeight = broadcastStyle.headerHeight || 28;
2035
+ const bodyHeight = config.height || 36;
2036
+ const totalHeight = headerHeight + bodyHeight;
2037
+ ticker.style.cssText = `
2038
+ position: absolute;
2039
+ left: 0;
2040
+ right: 0;
2041
+ height: ${totalHeight}px;
2042
+ ${position === 'top' ? `top: ${topOffset}px;` : `bottom: ${bottomOffset}px;`}
2043
+ overflow: hidden;
2044
+ pointer-events: none;
2045
+ display: flex;
2046
+ flex-direction: column;
2047
+ `;
2048
+ const header = document.createElement('div');
2049
+ header.className = 'uvf-ticker-header';
2050
+ header.style.cssText = `
2051
+ display: flex;
2052
+ align-items: center;
2053
+ height: ${headerHeight}px;
2054
+ background: ${themeColors.headerBg};
2055
+ padding: 0 12px;
2056
+ position: relative;
2057
+ `;
2058
+ if (broadcastStyle.showGlobe !== false) {
2059
+ const globe = this.createGlobeElement(broadcastStyle.animateGlobe !== false);
2060
+ header.appendChild(globe);
2061
+ }
2062
+ const headerText = document.createElement('span');
2063
+ headerText.className = 'uvf-ticker-header-text';
2064
+ headerText.textContent = broadcastStyle.headerText || 'BREAKING NEWS';
2065
+ headerText.style.cssText = `
2066
+ color: ${broadcastStyle.headerTextColor || '#ffffff'};
2067
+ font-size: ${broadcastStyle.headerFontSize || 16}px;
2068
+ font-weight: 800;
2069
+ text-transform: uppercase;
2070
+ letter-spacing: 1px;
2071
+ margin-left: ${broadcastStyle.showGlobe !== false ? '8px' : '0'};
2072
+ text-shadow: 1px 1px 2px rgba(0,0,0,0.3);
2073
+ `;
2074
+ header.appendChild(headerText);
2075
+ if (broadcastStyle.showLiveBadge !== false) {
2076
+ const liveBadge = this.createLiveBadgeElement(broadcastStyle.pulseLiveBadge !== false);
2077
+ header.appendChild(liveBadge);
2078
+ }
2079
+ const body = document.createElement('div');
2080
+ body.className = 'uvf-ticker-body';
2081
+ body.style.cssText = `
2082
+ display: flex;
2083
+ align-items: center;
2084
+ height: ${bodyHeight}px;
2085
+ background: ${themeColors.bodyBg};
2086
+ overflow: hidden;
2087
+ position: relative;
2088
+ `;
2089
+ const track = document.createElement('div');
2090
+ track.className = 'uvf-ticker-track';
2091
+ const duration = this.calculateTickerDuration(config);
2092
+ track.style.cssText = `
2093
+ display: flex;
2094
+ white-space: nowrap;
2095
+ animation: ticker-scroll ${duration}s linear infinite;
2096
+ will-change: transform;
2097
+ padding-left: 100%;
2098
+ `;
2099
+ const containerWidth = this.container?.offsetWidth || 1920;
2100
+ const baseFontSize = config.fontSize || 14;
2101
+ let responsiveFontSize = baseFontSize;
2102
+ if (containerWidth < 768) {
2103
+ responsiveFontSize = Math.max(baseFontSize * 0.8, 12);
2104
+ }
2105
+ else if (containerWidth < 1280) {
2106
+ responsiveFontSize = Math.max(baseFontSize * 0.9, 13);
2107
+ }
2108
+ const renderItems = () => {
2109
+ if (!config.items)
2110
+ return;
2111
+ config.items.forEach((item) => {
2112
+ const span = document.createElement('span');
2113
+ if (item.html) {
2114
+ span.innerHTML = item.html;
2115
+ }
2116
+ else {
2117
+ span.textContent = item.text;
2118
+ }
2119
+ span.style.cssText = `
2120
+ color: ${config.textColor || '#ffffff'};
2121
+ font-size: ${responsiveFontSize}px;
2122
+ font-weight: ${config.fontWeight || 600};
2123
+ margin-right: ${config.gap || 100}px;
2124
+ display: inline-flex;
2125
+ align-items: center;
2126
+ `;
2127
+ track.appendChild(span);
2128
+ if (config.separator) {
2129
+ const sep = document.createElement('span');
2130
+ sep.textContent = config.separator;
2131
+ sep.style.cssText = `
2132
+ color: ${config.textColor || '#ffffff'};
2133
+ font-size: ${responsiveFontSize}px;
2134
+ opacity: 0.5;
2135
+ margin: 0 8px;
2136
+ `;
2137
+ track.appendChild(sep);
2138
+ }
2139
+ });
2140
+ };
2141
+ for (let i = 0; i < 10; i++) {
2142
+ renderItems();
2143
+ }
2144
+ body.appendChild(track);
2145
+ ticker.appendChild(header);
2146
+ ticker.appendChild(body);
2147
+ this.ensureTickerAnimations();
2148
+ return ticker;
2149
+ }
2150
+ getBroadcastThemeColors(theme, broadcastStyle) {
2151
+ switch (theme) {
2152
+ case 'breaking-red':
2153
+ return {
2154
+ headerBg: 'linear-gradient(90deg, #cc0000 0%, #ff0000 50%, #cc0000 100%)',
2155
+ bodyBg: 'linear-gradient(90deg, #1a237e 0%, #283593 50%, #1a237e 100%)'
2156
+ };
2157
+ case 'breaking-blue':
2158
+ return {
2159
+ headerBg: 'linear-gradient(90deg, #0d47a1 0%, #1565c0 50%, #0d47a1 100%)',
2160
+ bodyBg: 'linear-gradient(90deg, #1a1a2e 0%, #16213e 50%, #1a1a2e 100%)'
2161
+ };
2162
+ case 'alert-red':
2163
+ return {
2164
+ headerBg: 'linear-gradient(90deg, #b71c1c 0%, #d32f2f 50%, #b71c1c 100%)',
2165
+ bodyBg: 'linear-gradient(90deg, #7f0000 0%, #9a0000 50%, #7f0000 100%)'
2166
+ };
2167
+ case 'news-blue':
2168
+ return {
2169
+ headerBg: 'linear-gradient(90deg, #01579b 0%, #0277bd 50%, #01579b 100%)',
2170
+ bodyBg: 'linear-gradient(90deg, #002171 0%, #003c8f 50%, #002171 100%)'
2171
+ };
2172
+ case 'custom':
2173
+ return {
2174
+ headerBg: broadcastStyle.headerColor || '#cc0000',
2175
+ bodyBg: broadcastStyle.bodyColor || '#1a237e'
2176
+ };
2177
+ default:
2178
+ return {
2179
+ headerBg: 'linear-gradient(90deg, #cc0000 0%, #ff0000 50%, #cc0000 100%)',
2180
+ bodyBg: 'linear-gradient(90deg, #1a237e 0%, #283593 50%, #1a237e 100%)'
2181
+ };
2182
+ }
2183
+ }
2184
+ createGlobeElement(animate) {
2185
+ const globeContainer = document.createElement('div');
2186
+ globeContainer.className = 'uvf-ticker-globe';
2187
+ globeContainer.style.cssText = `
2188
+ width: 24px;
2189
+ height: 24px;
2190
+ position: relative;
2191
+ flex-shrink: 0;
2192
+ `;
2193
+ globeContainer.innerHTML = `
2194
+ <svg viewBox="0 0 24 24" fill="none" style="width: 100%; height: 100%; ${animate ? 'animation: globe-rotate 8s linear infinite;' : ''}">
2195
+ <circle cx="12" cy="12" r="10" stroke="#ffffff" stroke-width="1.5" fill="none"/>
2196
+ <ellipse cx="12" cy="12" rx="10" ry="4" stroke="#ffffff" stroke-width="1" fill="none"/>
2197
+ <ellipse cx="12" cy="12" rx="4" ry="10" stroke="#ffffff" stroke-width="1" fill="none"/>
2198
+ <line x1="2" y1="12" x2="22" y2="12" stroke="#ffffff" stroke-width="0.5"/>
2199
+ <line x1="12" y1="2" x2="12" y2="22" stroke="#ffffff" stroke-width="0.5"/>
2200
+ <path d="M4 8 Q12 6 20 8" stroke="#ffffff" stroke-width="0.5" fill="none"/>
2201
+ <path d="M4 16 Q12 18 20 16" stroke="#ffffff" stroke-width="0.5" fill="none"/>
2202
+ </svg>
2203
+ `;
2204
+ return globeContainer;
2205
+ }
2206
+ createLiveBadgeElement(pulse) {
2207
+ const badge = document.createElement('div');
2208
+ badge.className = 'uvf-ticker-live-badge';
2209
+ badge.style.cssText = `
2210
+ display: flex;
2211
+ align-items: center;
2212
+ margin-left: auto;
2213
+ padding: 2px 8px;
2214
+ background: #ff0000;
2215
+ border-radius: 3px;
2216
+ ${pulse ? 'animation: live-pulse 1.5s ease-in-out infinite;' : ''}
2217
+ `;
2218
+ const dot = document.createElement('span');
2219
+ dot.style.cssText = `
2220
+ width: 8px;
2221
+ height: 8px;
2222
+ background: #ffffff;
2223
+ border-radius: 50%;
2224
+ margin-right: 4px;
2225
+ ${pulse ? 'animation: dot-blink 1s ease-in-out infinite;' : ''}
2226
+ `;
2227
+ badge.appendChild(dot);
2228
+ const text = document.createElement('span');
2229
+ text.textContent = 'LIVE';
2230
+ text.style.cssText = `
2231
+ color: #ffffff;
2232
+ font-size: 11px;
2233
+ font-weight: 800;
2234
+ letter-spacing: 0.5px;
2235
+ `;
2236
+ badge.appendChild(text);
2237
+ return badge;
2238
+ }
2239
+ ensureTickerAnimations() {
1955
2240
  if (!document.querySelector('#uvf-ticker-animation')) {
1956
2241
  const style = document.createElement('style');
1957
2242
  style.id = 'uvf-ticker-animation';
@@ -1960,10 +2245,21 @@ export class WebPlayer extends BasePlayer {
1960
2245
  0% { transform: translateX(0%); }
1961
2246
  100% { transform: translateX(-100%); }
1962
2247
  }
2248
+ @keyframes globe-rotate {
2249
+ 0% { transform: rotate(0deg); }
2250
+ 100% { transform: rotate(360deg); }
2251
+ }
2252
+ @keyframes live-pulse {
2253
+ 0%, 100% { opacity: 1; transform: scale(1); }
2254
+ 50% { opacity: 0.85; transform: scale(1.02); }
2255
+ }
2256
+ @keyframes dot-blink {
2257
+ 0%, 100% { opacity: 1; }
2258
+ 50% { opacity: 0.3; }
2259
+ }
1963
2260
  `;
1964
2261
  document.head.appendChild(style);
1965
2262
  }
1966
- return ticker;
1967
2263
  }
1968
2264
  calculateTickerDuration(config) {
1969
2265
  const speed = config.speed || 50;