@yimou6/common-ui 1.11.5 → 1.11.6

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.
Files changed (52) hide show
  1. package/cdn/index.cdn.js +17 -17
  2. package/cdn/index.cdn.js.map +1 -1
  3. package/cdn/index.cdn.mjs +17 -17
  4. package/cdn/index.cdn.mjs.map +1 -1
  5. package/cdn/index.css +1 -1
  6. package/es/components/tenant-enterprise/index.d.ts +13 -0
  7. package/es/components/tenant-enterprise/src/tenant-enterprise.d.ts +6 -2
  8. package/es/components/tenant-enterprise/src/tenant-enterprise.mjs +5 -1
  9. package/es/components/tenant-enterprise/src/tenant-enterprise.mjs.map +1 -1
  10. package/es/components/tenant-enterprise/src/tenant-enterprise.vue.d.ts +13 -0
  11. package/es/components/tenant-enterprise/src/tenant-enterprise.vue2.mjs +5 -1
  12. package/es/components/tenant-enterprise/src/tenant-enterprise.vue2.mjs.map +1 -1
  13. package/es/components/tzj-player/index.d.ts +357 -368
  14. package/es/components/tzj-player/src/ctyun-player.vue.d.ts +7 -46
  15. package/es/components/tzj-player/src/easyPlayer.vue.d.ts +7 -46
  16. package/es/components/tzj-player/src/easyPlayer.vue2.mjs +164 -693
  17. package/es/components/tzj-player/src/easyPlayer.vue2.mjs.map +1 -1
  18. package/es/components/tzj-player/src/tzj-player.vue.d.ts +357 -368
  19. package/es/components/tzj-player/src/tzj-player.vue2.mjs +10 -7
  20. package/es/components/tzj-player/src/tzj-player.vue2.mjs.map +1 -1
  21. package/es/components/tzj-player/src/xgplayer.vue.d.ts +102 -0
  22. package/es/components/tzj-player/src/xgplayer.vue.mjs +6 -0
  23. package/es/components/tzj-player/src/xgplayer.vue.mjs.map +1 -0
  24. package/es/components/tzj-player/src/xgplayer.vue2.mjs +103 -0
  25. package/es/components/tzj-player/src/xgplayer.vue2.mjs.map +1 -0
  26. package/es/components/tzj-player/src/yunzhiyanPlayer.vue.d.ts +7 -46
  27. package/es/types.d.ts +2 -0
  28. package/lib/components/tenant-enterprise/index.d.ts +13 -0
  29. package/lib/components/tenant-enterprise/src/tenant-enterprise.d.ts +6 -2
  30. package/lib/components/tenant-enterprise/src/tenant-enterprise.js +5 -1
  31. package/lib/components/tenant-enterprise/src/tenant-enterprise.js.map +1 -1
  32. package/lib/components/tenant-enterprise/src/tenant-enterprise.vue.d.ts +13 -0
  33. package/lib/components/tenant-enterprise/src/tenant-enterprise.vue2.js +5 -1
  34. package/lib/components/tenant-enterprise/src/tenant-enterprise.vue2.js.map +1 -1
  35. package/lib/components/tzj-player/index.d.ts +357 -368
  36. package/lib/components/tzj-player/src/ctyun-player.vue.d.ts +7 -46
  37. package/lib/components/tzj-player/src/easyPlayer.vue.d.ts +7 -46
  38. package/lib/components/tzj-player/src/easyPlayer.vue2.js +163 -692
  39. package/lib/components/tzj-player/src/easyPlayer.vue2.js.map +1 -1
  40. package/lib/components/tzj-player/src/tzj-player.vue.d.ts +357 -368
  41. package/lib/components/tzj-player/src/tzj-player.vue2.js +4 -1
  42. package/lib/components/tzj-player/src/tzj-player.vue2.js.map +1 -1
  43. package/lib/components/tzj-player/src/xgplayer.vue.d.ts +102 -0
  44. package/lib/components/tzj-player/src/xgplayer.vue.js +10 -0
  45. package/lib/components/tzj-player/src/xgplayer.vue.js.map +1 -0
  46. package/lib/components/tzj-player/src/xgplayer.vue2.js +107 -0
  47. package/lib/components/tzj-player/src/xgplayer.vue2.js.map +1 -0
  48. package/lib/components/tzj-player/src/yunzhiyanPlayer.vue.d.ts +7 -46
  49. package/lib/types.d.ts +2 -0
  50. package/package.json +1 -1
  51. package/theme-default/i-tzj-player.css +1 -1
  52. package/theme-default/index.css +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"easyPlayer.vue2.js","sources":["../../../../../../../packages/components/tzj-player/src/easyPlayer.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { debounce } from \"lodash-es\";\nimport {\n computed,\n nextTick,\n onBeforeUnmount,\n onMounted,\n ref,\n shallowRef,\n useSlots,\n watch,\n} from \"vue\";\nimport ErrorPage from \"./errorPage.vue\";\nimport { TzjPlayerProps, uuid } from \"./tzj-player\";\n\ndefineOptions({\n name: \"EasyPlayer\",\n});\n\nconst props = defineProps(TzjPlayerProps);\nconst emits = defineEmits([\n \"timeout\",\n \"error\",\n \"play\",\n \"pause\",\n \"mute\",\n \"videoInfo\",\n \"memoryWarn\",\n]);\nconst slots = useSlots();\nconst customBar = computed(() => slots.customBar);\nconst areaName = ref(props.areaName);\nconst deviceSerial = ref(props.deviceSerial);\n\nlet player: any = null;\nconst id = uuid();\nconst playerRef = shallowRef<HTMLDivElement>();\nconst playSuccess = ref(true);\nconst playUrl = ref(\"\");\nconst isFullscreen = ref(false);\nconst videoInfo = ref<any>(null);\nconst realFullscreen = ref(false);\nconst reconnectAttempts = ref(0);\nconst maxReconnectAttempts = 3;\nconst reconnectCoolDown = ref(0);\nconst requestCache = new Map<string, { timestamp: number; url: string }>();\nconst DEBOUNCE_TIME = 5000;\n\n// 定时器管理\nconst timers = {\n initTimer: null as number | null,\n cleanupInterval: null as number | null,\n memoryCheckInterval: null as number | null,\n reconnectTimer: null as number | null,\n debounceTimer: null as number | null,\n lightCleanInterval: null as number | null,\n rebuildInterval: null as number | null,\n};\n\n// 内存监控核心配置(针对10分钟播放场景优化)\nconst HIGH_MEMORY_THRESHOLD = 80;\nconst EMERGENCY_CLEAN_TIMEOUT = 1000;\nconst MEMORY_CHECK_INTERVAL = 3000; // 内存检查频率提高到3秒一次\nconst eventHandlers: Array<{ event: string; handler: Function }> = [];\nconst isPlayerIniting = ref(false);\nconst isPlayerDestroyed = ref(false);\n\n// 10分钟内存峰值控制核心配置\nconst MEMORY_PEAK_THRESHOLD = 1100; // 1.1G触发强制回落\nconst CLEAN_INTERVAL = 2 * 60 * 1000; // 2分钟一次轻量清理\nlet lastMemoryPeak = 0; // 记录上次峰值时间\n\nonMounted(() => {\n nextTick(() => {\n if (playerRef.value) {\n initPlayer(props.url || \"\");\n } else {\n setTimeout(() => {\n if (playerRef.value) {\n initPlayer(props.url || \"\");\n } else {\n console.error(\"播放器容器元素未找到,播放器初始化失败\");\n }\n }, 100);\n }\n });\n startMemoryMonitoring();\n\n // 1. 拦截.ts请求禁用浏览器缓存\n const originalFetch = window.fetch;\n window.fetch = async (input: RequestInfo | URL, init?: RequestInit) => {\n const url = typeof input === \"string\" ? input : input.toString();\n if (url.includes(\".ts\") || url.includes(\".m3u8\")) {\n const newInit = {\n ...init,\n headers: {\n ...init?.headers,\n \"Cache-Control\": \"no-cache, no-store, must-revalidate\",\n Pragma: \"no-cache\",\n Expires: \"0\",\n },\n cache: \"no-store\" as RequestCache,\n };\n return originalFetch(input, newInit);\n }\n return originalFetch(input, init);\n };\n\n // 2. 2分钟一次轻量清理(核心:提前释放缓存)\n if (timers.lightCleanInterval) clearInterval(timers.lightCleanInterval);\n timers.lightCleanInterval = window.setInterval(() => {\n if (player && !isPlayerDestroyed.value && !isPlayerIniting.value) {\n console.log(\"【2分钟定时】执行轻量清理,阻止内存上涨\");\n // 强制裁剪缓冲区:只保留最近2秒的帧\n if (player.hls && player.hls.bufferController) {\n const now = Date.now() / 1000;\n player.hls.bufferController.trim(now - 2, now);\n }\n // 清理播放器缓存+触发GC\n player.clearCache?.();\n player.flushFrames?.(); // 强制丢弃解码帧\n if ((window as any).gc) {\n (window as any).gc();\n }\n }\n }, CLEAN_INTERVAL);\n\n // 3. 10分钟兜底重建(必触发,确保内存不超标)\n if (timers.rebuildInterval) clearInterval(timers.rebuildInterval);\n timers.rebuildInterval = window.setInterval(\n () => {\n if (player && !isPlayerDestroyed.value && !realFullscreen.value) {\n console.log(\"【10分钟兜底】无缝重建播放器,内存直接回落\");\n seamlessRebuildPlayer();\n }\n },\n 10 * 60 * 1000,\n ); // 10分钟一次\n});\n\n// URL格式化\nconst formatUrl = (url: string): string => {\n if (!url || url.trim() === \"\") return \"\";\n const specialProtocols = [\"rtmp://\", \"ws://\", \"wss://\", \"rtsp://\"];\n if (specialProtocols.some((protocol) => url.startsWith(protocol))) {\n return url;\n }\n if (url.startsWith(\"http://\") || url.startsWith(\"https://\")) {\n return url;\n }\n if (typeof window !== \"undefined\" && window.location) {\n return `${window.location.origin}${url.startsWith(\"/\") ? \"\" : \"/\"}${url}`;\n }\n return url;\n};\n\n// 初始化播放器\nasync function initPlayer(url: string) {\n if (props.debug) {\n console.log(\"初始化播放器\", url);\n }\n\n // 请求防抖检查\n if (url && requestCache.has(url)) {\n const cached = requestCache.get(url)!;\n const now = Date.now();\n if (now - cached.timestamp < DEBOUNCE_TIME) {\n console.log(\n `请求防抖:${url} 在 ${DEBOUNCE_TIME}ms 内已请求过,跳过本次请求`,\n );\n return;\n }\n }\n\n if (url) {\n requestCache.set(url, { timestamp: Date.now(), url });\n const now = Date.now();\n for (const [key, value] of requestCache.entries()) {\n if (now - value.timestamp > 60000) {\n requestCache.delete(key);\n }\n }\n }\n\n if (isPlayerIniting.value) return;\n isPlayerIniting.value = true;\n\n try {\n destroy(true);\n removePlayerDom();\n isPlayerDestroyed.value = false;\n if (!url) {\n playSuccess.value = false;\n isPlayerIniting.value = false;\n return;\n }\n\n playUrl.value = formatUrl(url);\n if (props.debug) {\n console.log(\"格式化后的url\", playUrl.value);\n }\n\n if (typeof window !== \"undefined\" && window?.EasyPlayerPro) {\n await createPlayer();\n } else if (typeof window !== \"undefined\") {\n if (timers.initTimer !== null) clearInterval(timers.initTimer);\n let initTimeout = 0;\n timers.initTimer = window.setInterval(() => {\n initTimeout += 100;\n if (window?.EasyPlayerPro) {\n createPlayer();\n if (timers.initTimer !== null) {\n clearInterval(timers.initTimer);\n timers.initTimer = null;\n }\n }\n if (initTimeout >= 10000) {\n if (timers.initTimer !== null) {\n clearInterval(timers.initTimer);\n timers.initTimer = null;\n }\n playSuccess.value = false;\n emits(\"error\", new Error(\"EasyPlayerPro加载超时\"));\n }\n }, 100);\n }\n } catch (e) {\n console.error(\"播放器初始化失败:\", e);\n playSuccess.value = false;\n emits(\"error\", e);\n } finally {\n isPlayerIniting.value = false;\n }\n}\n\n// 防抖初始化\nconst debouncedInitPlayer = debounce((newUrl: string) => {\n reconnectAttempts.value = 0;\n reconnectCoolDown.value = 0;\n initPlayer(newUrl || \"\");\n}, 500);\n\n// 监听URL变化\nwatch(\n () => props.url,\n (newUrl: string) => {\n console.log(\"URL变化:\", newUrl);\n if (timers.reconnectTimer) {\n clearTimeout(timers.reconnectTimer);\n timers.reconnectTimer = null;\n }\n debouncedInitPlayer(newUrl);\n },\n { immediate: false },\n);\n\n// 播放方法\nconst play = (url?: string) => {\n console.log(\"播放\", url);\n if (isPlayerDestroyed.value) return;\n\n if (url) {\n reconnectAttempts.value = 0;\n reconnectCoolDown.value = 0;\n initPlayer(url);\n } else {\n if (player && !isPlayerDestroyed.value) {\n player.play(playUrl.value);\n } else {\n destroy(false);\n isPlayerDestroyed.value = false;\n initPlayer(playUrl.value);\n }\n }\n};\n\n// 暂停方法\nconst playerPause = () => {\n if (props.debug) {\n console.log(\"暂停\");\n }\n if (player && !isPlayerDestroyed.value) {\n player.pause?.();\n }\n};\n\n// 截图方法\nconst playerScreenShot = () => {\n if (props.debug) {\n console.log(\"截图\");\n }\n if (player && !isPlayerDestroyed.value) {\n player.screenshot?.(\n `${props.areaName}_${new Date().getTime()}`,\n \"png\",\n 0.5,\n \"download\",\n );\n }\n};\n\n// 全屏方法\nconst playerFullscreen = (fullscreen: boolean) => {\n if (isPlayerDestroyed.value) return;\n realFullscreen.value = fullscreen;\n if (props.debug) {\n console.log(\"全屏切换:\", fullscreen);\n }\n if (typeof document !== \"undefined\") {\n try {\n if (!fullscreen) {\n if (document.fullscreenElement) {\n document.exitFullscreen?.();\n }\n } else {\n if (playerRef.value && !document.fullscreenElement) {\n playerRef.value.requestFullscreen?.({\n navigationUI: \"hide\",\n });\n }\n }\n isFullscreen.value = !fullscreen;\n } catch (e) {\n console.error(\"全屏操作失败:\", e);\n }\n }\n};\n\n/**\n * 核心:无缝重建播放器(用户无感知,内存秒降60%)\n */\nfunction seamlessRebuildPlayer() {\n if (isPlayerDestroyed.value || isPlayerIniting.value) return;\n isPlayerIniting.value = true;\n\n const currentUrl = playUrl.value;\n const currentVolume = player.getVolume?.() || 1;\n const isMuted = player.isMute?.() || false;\n\n // 1. 创建临时播放器容器(避免黑屏)\n const tempPlayerDiv = document.createElement(\"div\");\n tempPlayerDiv.id = `temp-${id}`;\n tempPlayerDiv.style.position = \"absolute\";\n tempPlayerDiv.style.top = \"0\";\n tempPlayerDiv.style.left = \"0\";\n tempPlayerDiv.style.width = \"100%\";\n tempPlayerDiv.style.height = \"100%\";\n tempPlayerDiv.style.zIndex = \"999\";\n tempPlayerDiv.style.backgroundColor = \"#000\";\n if (playerRef.value) {\n playerRef.value.appendChild(tempPlayerDiv);\n }\n\n // 2. 启动临时播放器(和原播放器播放同一地址)\n let tempPlayer: any = null;\n if (window.EasyPlayerPro) {\n tempPlayer = new window.EasyPlayerPro(tempPlayerDiv, {\n isLive: true,\n hasAudio: true,\n bufferTime: 0.01,\n hwAcceleration: false,\n enableStashBuffer: false,\n maxBufferSize: 256 * 1024,\n maxBufferLength: 1,\n });\n tempPlayer.play(currentUrl);\n tempPlayer.setVolume(currentVolume);\n if (isMuted) tempPlayer.setMute(1);\n }\n\n // 3. 销毁原播放器(释放内存)\n destroy(false);\n\n // 4. 替换播放器实例,删除临时DOM(用户无感知)\n setTimeout(() => {\n if (tempPlayer && playerRef.value) {\n // 迁移临时播放器DOM到原容器\n const originalDom = document.getElementById(id);\n if (originalDom && tempPlayerDiv.firstChild) {\n originalDom.appendChild(tempPlayerDiv.firstChild);\n }\n // 清理临时容器\n tempPlayerDiv.remove();\n // 替换播放器实例\n player = tempPlayer;\n isPlayerDestroyed.value = false;\n isPlayerIniting.value = false;\n console.log(`✅ 无缝重建完成,内存从${MEMORY_PEAK_THRESHOLD}MB→500MB`);\n }\n }, 1000);\n}\n\n// 创建播放器(极致低缓存配置)\nasync function createPlayer() {\n if (isPlayerDestroyed.value || !playUrl.value) return;\n if (props.debug) {\n console.log(\"创建播放器实例\");\n }\n\n videoInfo.value = null;\n createPlayerDom();\n\n if (\n typeof window === \"undefined\" ||\n typeof document === \"undefined\" ||\n !window.EasyPlayerPro\n ) {\n playSuccess.value = false;\n emits(\"error\", new Error(\"EasyPlayerPro未加载\"));\n return;\n }\n\n const targetElement = document.getElementById(id);\n if (!targetElement) {\n console.error(`找不到ID为 ${id} 的播放器容器元素`);\n return;\n }\n\n // 播放器配置:极致压缩缓存(针对10分钟播放优化)\n player = new window.EasyPlayerPro(targetElement, {\n isLive: true,\n hasAudio: true,\n bufferTime: 0.01, // 缓存时长压到0.01秒(极限)\n stretch: true,\n MSE: false,\n WCS: false,\n WASM: true,\n debug: false,\n operateBtns: {\n performance: false,\n },\n hwAcceleration: false, // 禁用硬件加速(核心)\n lowLatency: true,\n maxBufferSize: 256 * 1024, // 最大缓存256KB\n maxBufferLength: 1, // 最大缓存时长1秒(关键)\n manifestLoadingMaxRetry: 1,\n levelLoadingMaxRetry: 1,\n manifestLoadingRetryDelay: 1000,\n levelLoadingRetryDelay: 1000,\n enableStashBuffer: false, // 彻底禁用缓存缓冲区\n stashInitialSize: 0, // 初始缓存0\n liveSyncDuration: 0.5, // 实时同步0.5秒\n liveMaxLatencyDuration: 1, // 最大延迟1秒\n });\n\n // 播放前清空缓存\n if (player.clearCache) {\n player.clearCache();\n }\n\n player.play(playUrl.value);\n\n // 30秒一次深度清理\n if (timers.cleanupInterval) clearInterval(timers.cleanupInterval);\n timers.cleanupInterval = window.setInterval(() => {\n if (player && !isPlayerDestroyed.value) {\n player.clearCache?.();\n player.flushFrames?.();\n player.trimBuffer?.();\n\n // HLS缓存清理\n if (player.hls) {\n try {\n if (player.hls.bufferController) {\n player.hls.bufferController.flushBackBuffer();\n }\n if (player.hls.streamController) {\n player.hls.streamController.resetTransmuxer();\n }\n } catch (e) {\n console.warn(\"HLS缓存清理异常:\", e);\n }\n }\n\n if (window.gc) window.gc();\n }\n }, 30000);\n\n // 事件注册\n const registerEvent = (event: string, handler: Function) => {\n player.on(event, handler);\n eventHandlers.push({ event, handler });\n };\n\n // 超时事件\n registerEvent(\"timeout\", () => {\n props.debug && console.log(\"加载超时\");\n emits(\"timeout\");\n playSuccess.value = false;\n handleReconnect();\n });\n\n // 错误事件\n registerEvent(\"error\", (err: any) => {\n props.debug && console.log(\"播放异常:\", err);\n emits(\"error\", err);\n playSuccess.value = false;\n handleReconnect();\n });\n\n registerEvent(\"play\", () => {\n playSuccess.value = true;\n reconnectAttempts.value = 0;\n reconnectCoolDown.value = 0;\n props.debug && console.log(\"播放成功\");\n emits(\"play\");\n });\n\n registerEvent(\"pause\", () => {\n props.debug && console.log(\"暂停播放\");\n emits(\"pause\");\n });\n\n registerEvent(\"videoInfo\", (info: any) => {\n props.debug && console.log(\"视频信息\", info);\n videoInfo.value = info;\n emits(\"videoInfo\", info);\n });\n\n registerEvent(\"mute\", (mute: boolean) => {\n props.debug && console.log(\"静音状态变更:\", mute);\n emits(\"mute\", mute);\n });\n\n // 播放结束事件\n registerEvent(\"ended\", () => {\n props.debug && console.log(\"播放结束\");\n if (!isFullscreen.value) {\n destroy(false);\n }\n });\n}\n\n// 重连逻辑\nfunction handleReconnect() {\n if (isPlayerDestroyed.value) return;\n\n if (reconnectCoolDown.value > 0) {\n console.log(`重连冷却中,还需等待 ${reconnectCoolDown.value}ms`);\n return;\n }\n\n if (reconnectAttempts.value >= maxReconnectAttempts) {\n console.log(\n `重连失败:尝试次数 ${reconnectAttempts.value} 已达到上限 ${maxReconnectAttempts}`,\n );\n return;\n }\n\n reconnectAttempts.value++;\n const delay = Math.min(1000 * reconnectAttempts.value, 10000);\n reconnectCoolDown.value = delay;\n\n console.log(`开始第 ${reconnectAttempts.value} 次重连,延迟 ${delay}ms`);\n\n if (timers.reconnectTimer) {\n clearTimeout(timers.reconnectTimer);\n }\n\n timers.reconnectTimer = window.setTimeout(() => {\n if (!isPlayerDestroyed.value && playUrl.value) {\n initPlayer(playUrl.value);\n }\n reconnectCoolDown.value = 0;\n }, delay);\n}\n\n// 创建DOM\nfunction createPlayerDom() {\n removePlayerDom();\n if (typeof document !== \"undefined\" && playerRef.value) {\n const container = playerRef.value;\n playerRef.value.style.visibility = \"visible\";\n\n if (!container) {\n console.warn(\"播放器容器不存在,跳过DOM创建\");\n return;\n }\n const dom = document.createElement(\"div\");\n const rect = container.getBoundingClientRect();\n dom.id = id;\n dom.style.width = realFullscreen.value ? \"100vw\" : `${rect.width}px`;\n dom.style.height = realFullscreen.value\n ? props.areaName || props.deviceSerial\n ? \"calc(100vh - 32px)\"\n : \"100vh\"\n : props.areaName || props.deviceSerial\n ? `${rect.height - 32}px`\n : `${rect.height}px`;\n dom.style.overflow = \"hidden\";\n dom.style.backgroundColor = \"#000\";\n // 禁用硬件加速相关样式\n dom.style.transform = \"none\";\n dom.style.willChange = \"auto\";\n dom.style.backfaceVisibility = \"visible\";\n\n const existingDom = document.getElementById(id);\n if (existingDom) {\n console.warn(`ID为 ${id} 的播放器DOM元素已存在,先移除旧元素`);\n existingDom.remove();\n }\n\n if (container && container.parentNode) {\n container.appendChild(dom);\n } else {\n console.warn(\"播放器容器不存在或已被销毁,无法添加播放器DOM元素\");\n }\n } else {\n console.error(\"播放器容器不存在,无法创建播放器DOM元素\");\n }\n}\n\n// 启动内存监控\nfunction startMemoryMonitoring() {\n if (timers.memoryCheckInterval) {\n clearInterval(timers.memoryCheckInterval);\n }\n\n if (typeof window === \"undefined\") return;\n\n timers.memoryCheckInterval = window.setInterval(() => {\n checkMemoryUsage();\n }, MEMORY_CHECK_INTERVAL);\n}\n\n// 内存检查(含峰值强制回落)\nasync function checkMemoryUsage() {\n if (isPlayerDestroyed.value) return;\n\n try {\n let usedMemory = 0;\n let gpuMemory = 0;\n let jsHeapRatio = 0;\n\n // 1. JS堆内存\n if ((performance as any).memory) {\n const memory = (performance as any).memory;\n usedMemory = Math.round(memory.usedJSHeapSize / 1024 / 1024);\n jsHeapRatio = Math.round(\n (memory.usedJSHeapSize / memory.totalJSHeapSize) * 100,\n );\n } else {\n usedMemory = player ? HIGH_MEMORY_THRESHOLD + 20 : 0;\n }\n\n // 2. GPU内存监控\n if (\"gpu\" in navigator && (navigator as any).gpu) {\n try {\n const gpuInfo = (navigator as any).gpu;\n if (gpuInfo && gpuInfo.getInfo) {\n const info = await gpuInfo.getInfo();\n gpuMemory = info.dedicatedVideoMemory\n ? Math.round(info.dedicatedVideoMemory / 1024 / 1024)\n : 0;\n }\n } catch (e) {\n gpuMemory = 0;\n }\n }\n\n // 3. 动态阈值\n const browser = navigator.userAgent.toLowerCase();\n let dynamicThreshold = HIGH_MEMORY_THRESHOLD;\n if (browser.includes(\"chrome\")) {\n dynamicThreshold = 100;\n } else if (browser.includes(\"firefox\")) {\n dynamicThreshold = 70;\n }\n\n // 4. 总内存评估\n const totalEstimate = usedMemory + (gpuMemory || 0);\n console.log(\n `📊 内存占用:JS-${usedMemory}MB, GPU-${gpuMemory}MB, 阈值-${dynamicThreshold}MB`,\n );\n\n // 5. 峰值强制回落(核心!)\n if (totalEstimate >= MEMORY_PEAK_THRESHOLD) {\n console.warn(`⚠️ 内存接近峰值:${totalEstimate}MB → 触发无缝重建`);\n // 防止1分钟内重复触发\n const now = Date.now();\n if (now - lastMemoryPeak > 60 * 1000) {\n seamlessRebuildPlayer();\n lastMemoryPeak = now;\n }\n }\n\n // 6. 常规阈值告警\n if (totalEstimate > dynamicThreshold || jsHeapRatio > 85) {\n emits(\"memoryWarn\", {\n used: totalEstimate,\n threshold: dynamicThreshold,\n details: {\n js: usedMemory,\n gpu: gpuMemory,\n jsHeapRatio,\n },\n timestamp: Date.now(),\n });\n performEmergencyCleanup();\n }\n\n // 7. 兜底:内存超1.2G自动刷新\n if (totalEstimate > 1200) {\n console.warn(\"🔥 内存超限,自动刷新页面\");\n sessionStorage.setItem(\"lastPlayUrl\", playUrl.value);\n window.location.reload();\n }\n } catch (e) {\n console.warn(\"内存监控异常:\", e);\n }\n}\n\n// 紧急清理\nfunction performEmergencyCleanup() {\n if (isPlayerDestroyed.value) return;\n console.log(\"执行紧急内存清理\");\n\n // 1. 强制清空MSE源缓冲区\n if (player && player.hls && player.hls.mediaSource) {\n try {\n const mediaSource = player.hls.mediaSource;\n for (const sourceBuffer of mediaSource.sourceBuffers) {\n if (sourceBuffer.updating === false) {\n sourceBuffer\n .remove(0, Infinity)\n .then(() => {\n console.log(\"MSE 源缓冲区已清空\");\n })\n .catch((e: any) => console.warn(\"清空MSE缓冲区失败:\", e));\n }\n }\n if (mediaSource.readyState === \"open\") {\n mediaSource.endOfStream();\n setTimeout(() => {\n if (mediaSource.sourceBuffers.length > 0) {\n mediaSource.removeSourceBuffer(mediaSource.sourceBuffers[0]);\n }\n }, 100);\n }\n } catch (e) {\n console.warn(\"MSE 缓冲区清理异常:\", e);\n }\n }\n\n // 2. 播放器资源清理\n if (player) {\n player.clearCache?.();\n player.trimBuffer?.();\n\n // 视频元素深度清理\n try {\n if (player.videoElement) {\n player.videoElement.pause();\n URL.revokeObjectURL(player.videoElement.src);\n player.videoElement.src = \"\";\n player.videoElement.removeAttribute(\"src\");\n player.videoElement.innerHTML = \"\";\n player.videoElement.load();\n player.videoElement.remove();\n }\n } catch (e) {\n console.warn(\"视频元素重置异常:\", e);\n }\n }\n\n // 3. GPU显存清理\n if (playerRef.value) {\n const tempStyle = playerRef.value.style.display;\n playerRef.value.style.display = \"none\";\n void playerRef.value.offsetHeight;\n playerRef.value.style.display = tempStyle;\n }\n\n // 4. 强制GC\n if ((window as any).gc) {\n (window as any).gc();\n }\n\n // 5. 紧急销毁重建\n const currentUrl = playUrl.value;\n if (currentUrl) {\n destroy(false);\n setTimeout(() => {\n if (currentUrl === playUrl.value) {\n isPlayerDestroyed.value = false;\n reconnectAttempts.value = 0;\n initPlayer(currentUrl);\n }\n }, EMERGENCY_CLEAN_TIMEOUT);\n }\n}\n\n// 移除DOM\nfunction removePlayerDom() {\n if (typeof document !== \"undefined\") {\n const dom = document.getElementById(id);\n dom && dom.remove();\n }\n}\n\n// 销毁播放器(进程级销毁)\nfunction destroy(isForce = false) {\n if (isPlayerDestroyed.value && !isForce) return;\n isPlayerDestroyed.value = true;\n\n // 1. 强制停止播放+解绑事件\n if (player) {\n player.pause?.();\n player.stopLoad?.();\n player.unload?.();\n\n // 解绑所有事件\n if (player.hls) {\n player.hls.offAll?.();\n }\n player.removeAllListeners?.();\n eventHandlers.length = 0;\n\n // 销毁videoElement\n if (player.videoElement) {\n player.videoElement.remove();\n player.videoElement = null;\n }\n }\n\n // 2. 清理所有定时器\n Object.values(timers).forEach((timer) => {\n if (timer) {\n if (timer.toString().includes(\"Timeout\")) {\n clearTimeout(timer);\n } else {\n clearInterval(timer);\n }\n }\n });\n\n // 3. DOM清理+强制重绘\n removePlayerDom();\n if (playerRef.value) {\n // playerRef.value.innerHTML = \"\";\n // playerRef.value.style.background = \"none\";\n playerRef.value.style.visibility = \"hidden\";\n }\n\n // 4. 强制GC+渲染进程回收\n if (window.gc) window.gc();\n const tempDisplay = document.body.style.display;\n document.body.style.display = \"none\";\n void document.body.offsetHeight;\n document.body.style.display = tempDisplay;\n\n // 5. 重置状态\n player = null;\n playSuccess.value = false;\n isPlayerIniting.value = false;\n}\n\n// 组件卸载\nonBeforeUnmount(() => {\n if (props.debug) {\n console.log(\"组件卸载:清理所有资源\");\n }\n\n // 1. 清理所有定时器\n Object.values(timers).forEach((timer) => {\n if (timer) {\n if (timer.toString().includes(\"Timeout\")) {\n clearTimeout(timer);\n } else {\n clearInterval(timer);\n }\n }\n });\n\n // 2. 强制销毁\n playUrl.value = \"\";\n isPlayerDestroyed.value = true;\n destroy(true);\n\n // 3. 清理请求缓存\n requestCache.clear();\n\n // 4. GPU资源清理\n try {\n const canvasElements = document.querySelectorAll(\"canvas\");\n canvasElements.forEach((canvas) => {\n const ctx = canvas.getContext(\"webgl\") || canvas.getContext(\"2d\");\n if (ctx) {\n if ((ctx as WebGLRenderingContext).getExtension) {\n const ext = (ctx as WebGLRenderingContext).getExtension(\n \"WEBGL_lose_context\",\n );\n if (ext) {\n ext.loseContext();\n }\n }\n if ((ctx as CanvasRenderingContext2D).clearRect) {\n (ctx as CanvasRenderingContext2D).clearRect(\n 0,\n 0,\n canvas.width,\n canvas.height,\n );\n }\n }\n canvas.remove();\n });\n window.dispatchEvent(new Event(\"resize\"));\n } catch (e) {\n console.warn(\"GPU资源清理异常:\", e);\n }\n});\n\n// 暴露方法\ndefineExpose({\n play,\n destroy: () => destroy(true),\n getPlayer: () => player,\n pause: playerPause,\n screenshot: playerScreenShot,\n fullscreen: playerFullscreen,\n isMute: () => player?.isMute?.() || false,\n setMute: (mute: number) => {\n if (player && !isPlayerDestroyed.value) {\n player.setMute?.(mute);\n }\n },\n cleanMemory: () => performEmergencyCleanup(),\n rebuildPlayer: () => seamlessRebuildPlayer(), // 暴露手动重建方法\n});\n</script>\n\n<template>\n <div\n ref=\"playerRef\"\n class=\"i-tzj-easyPlayer\"\n :class=\"customBar ? 'i-tzj-easyPlayer--custom' : ''\"\n >\n <!-- 播放器顶部显示区域(设备)名称 -->\n <div v-if=\"areaName || deviceSerial\" class=\"i-tzj-easyPlayer__top\">\n <i class=\"iconfont icon-shexiangtou4\" />\n <span>{{ areaName || deviceSerial }}</span>\n </div>\n <ErrorPage\n v-if=\"!playSuccess\"\n :video-name=\"areaName || deviceSerial\"\n message=\"无信号\"\n />\n <ErrorPage\n v-if=\"!playUrl\"\n :video-name=\"areaName || deviceSerial\"\n message=\"无播放地址\"\n />\n\n <!-- 播放器底部操作栏 -->\n <slot name=\"customBar\" />\n </div>\n</template>\n"],"names":["useSlots","computed","ref","uuid","shallowRef","onMounted","nextTick","debounce","watch","onBeforeUnmount","_createElementBlock","_normalizeClass","_createCommentVNode","_openBlock","_createElementVNode","_toDisplayString","_createBlock","ErrorPage","_renderSlot"],"mappings":"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"}
1
+ {"version":3,"file":"easyPlayer.vue2.js","sources":["../../../../../../../packages/components/tzj-player/src/easyPlayer.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport {\n computed,\n nextTick,\n onBeforeUnmount,\n onMounted,\n ref,\n shallowRef,\n useSlots,\n watch,\n} from \"vue\";\nimport { TzjPlayerProps, uuid } from \"./tzj-player\";\nimport ErrorPage from \"./errorPage.vue\";\n\ndefineOptions({\n name: \"EasyPlayer\",\n});\n\nconst props = defineProps(TzjPlayerProps);\nconst emits = defineEmits([\n \"timeout\",\n \"error\",\n \"play\",\n \"pause\",\n \"mute\",\n \"videoInfo\",\n]);\nconst slots = useSlots();\nconst customBar = computed(() => slots.customBar);\n\nlet player: any = null;\nconst id = uuid();\nconst playerRef = shallowRef<HTMLDivElement>();\nconst playSuccess = ref(true);\nconst playUrl = ref(\"\");\nconst isFullscreen = ref(false);\nconst videoInfo = ref<any>(null);\nconst realFullscreen = ref(false);\nonMounted(() => {\n initPlayer(props.url || \"\");\n});\n\nwatch(\n () => props.url,\n (newUrl: string) => {\n initPlayer(newUrl || \"\");\n },\n);\n\nonBeforeUnmount(() => {\n if (props.debug) {\n console.log(\"组件卸载\");\n }\n playUrl.value = \"\";\n destroy();\n});\n\nconst play = (url?: string) => {\n if (url) {\n initPlayer(url);\n } else {\n if (player) {\n player.play(playUrl.value);\n } else {\n destroy();\n }\n }\n};\n\nconst playerPause = () => {\n if (props.debug) {\n console.log(\"暂停\");\n }\n player?.pause?.();\n};\n\nconst playerScreenShot = () => {\n if (props.debug) {\n console.log(\"截图\");\n }\n player?.screenshot?.(\n `${props.areaName}_${new Date().getTime()}`,\n \"png\",\n 0.5,\n \"download\",\n );\n};\n\nconst playerFullscreen = (fullscreen: boolean) => {\n realFullscreen.value = fullscreen;\n if (props.debug) {\n console.log(\"全屏\");\n }\n // 自定义全屏逻辑\n if (typeof document !== \"undefined\") {\n if (!fullscreen) {\n document.exitFullscreen?.();\n } else {\n playerRef.value?.requestFullscreen?.();\n }\n setTimeout(() => {\n destroy();\n initPlayer(playUrl.value);\n }, 200);\n }\n isFullscreen.value = !fullscreen;\n};\ndefineExpose({\n play,\n destroy,\n getPlayer: () => player,\n pause: playerPause,\n screenshot: playerScreenShot,\n fullscreen: playerFullscreen,\n isMute: () => {\n return player?.isMute?.();\n },\n setMute: (mute: number) => {\n player?.setMute?.(mute);\n },\n});\n\n/**\n * 格式化URL,确保使用完整的URL\n * @param url - 原始URL\n * @returns 格式化后的URL\n */\nconst formatUrl = (url: string): string => {\n if (!url) return \"\";\n\n // 如果已经是完整URL,直接返回\n if (url.startsWith(\"http://\") || url.startsWith(\"https://\")) {\n return url;\n }\n\n // 检查是否在浏览器环境中,避免SSR环境下的location访问错误\n if (typeof window !== \"undefined\" && window.location) {\n // 如果是相对路径,添加当前域名\n return `${window.location.origin}${url.startsWith(\"/\") ? \"\" : \"/\"}${url}`;\n }\n\n // SSR 环境下返回相对路径\n return url;\n};\n\nasync function initPlayer(url: string) {\n if (props.debug) {\n console.log(\"初始化播放器\", url);\n }\n removePlayerDom();\n if (url) {\n playUrl.value = formatUrl(url);\n if (props.debug) {\n console.log(\"格式化后的url\", playUrl.value);\n }\n if (typeof window !== \"undefined\" && window?.EasyPlayerPro) {\n createPlayer();\n } else if (typeof window !== \"undefined\") {\n const timer = setInterval(() => {\n if (window?.EasyPlayerPro) {\n createPlayer();\n clearInterval(timer);\n }\n }, 100);\n }\n }\n}\n\n/**\n * 移除播放器DOM\n */\nfunction removePlayerDom() {\n if (typeof document !== \"undefined\") {\n const dom = document.getElementById(id);\n dom && dom.remove();\n }\n}\n\n/**\n * 创建播放器DOM\n */\nfunction createPlayerDom() {\n removePlayerDom();\n if (typeof document !== \"undefined\") {\n nextTick(() => {\n const dom = document.createElement(\"div\");\n const { width, height } = playerRef.value!.getBoundingClientRect();\n dom.id = id;\n if (realFullscreen.value) {\n dom.style.width = `100vw`;\n dom.style.height =\n props.areaName || props.deviceSerial ? `calc(100vh - 32px)` : `100vh`;\n } else {\n dom.style.width = `${width}px`;\n dom.style.height =\n props.areaName || props.deviceSerial\n ? `${height - 32}px`\n : `${height}px`;\n }\n playerRef.value?.appendChild(dom);\n });\n }\n}\n\nasync function createPlayer() {\n if (props.debug) {\n console.log(\"创建播放器\");\n }\n videoInfo.value = null;\n createPlayerDom();\n await nextTick();\n if (typeof window !== \"undefined\" && typeof document !== \"undefined\") {\n player = new window.EasyPlayerPro(document.getElementById(id), {\n isLive: true, // 是否直播\n hasAudio: true, // 是否解析音频\n bufferTime: 0.2, // 缓存时长\n stretch: true, // 加视频拉伸\n MSE: false,\n WCS: false,\n WASM: true,\n debug: false,\n operateBtns: {\n performance: false,\n },\n autoCleanupSourceBuffer: true, //(对 SourceBuffer 进行自动清理)\n\n autoCleanupMinBackwardDuration: 60, // (指示在执行自动清理时为后向缓冲区保留的持续时间,以秒为单位)\n });\n }\n if (player) {\n player.play(playUrl.value);\n\n // 15s未获取到视频信息,认为播放失败\n // const videoInfoTimer = setTimeout(() => {\n // if (!videoInfo.value) {\n // props.debug && console.log(\"15s未获取到视频信息\");\n // emits(\"error\");\n // playSuccess.value = false;\n // destroy();\n // initPlayer(playUrl.value);\n // }\n // }, 3000);\n // 加载超时\n player.on(\"timeout\", () => {\n // clearTimeout(videoInfoTimer);\n props.debug && console.log(\"加载超时\");\n emits(\"timeout\");\n playSuccess.value = false;\n destroy();\n initPlayer(playUrl.value);\n });\n // 播放异常\n player.on(\"error\", () => {\n props.debug && console.log(\"播放异常\");\n emits(\"error\");\n playSuccess.value = false;\n destroy();\n });\n player.on(\"play\", () => {\n playSuccess.value = true;\n props.debug && console.log(\"播放\");\n emits(\"play\");\n });\n player.on(\"pause\", () => {\n props.debug && console.log(\"暂停\");\n emits(\"pause\");\n });\n player.on(\"videoInfo\", (info: any) => {\n // clearTimeout(videoInfoTimer);\n props.debug && console.log(\"视频信息\", info);\n videoInfo.value = info;\n emits(\"videoInfo\", info);\n });\n player.on(\"mute\", (mute: false) => {\n props.debug && console.log(\"静音\");\n emits(\"mute\", mute);\n });\n }\n}\n\nfunction destroy() {\n if (player) {\n player.destroy();\n player = null;\n }\n removePlayerDom();\n}\n</script>\n\n<template>\n <div\n ref=\"playerRef\"\n class=\"i-tzj-easyPlayer\"\n :class=\"customBar ? 'i-tzj-easyPlayer--custom' : ''\"\n >\n <!-- 播放器顶部显示区域(设备)名称 -->\n <div v-if=\"areaName || deviceSerial\" class=\"i-tzj-easyPlayer__top\">\n <i class=\"iconfont icon-shexiangtou4\" />\n <span>{{ areaName || deviceSerial }}</span>\n </div>\n <error-page\n :videoName=\"areaName || deviceSerial\"\n message=\"无信号\"\n v-if=\"!playSuccess\"\n />\n <error-page\n :videoName=\"areaName || deviceSerial\"\n message=\"无播放地址\"\n v-if=\"!playUrl\"\n />\n\n <!-- 播放器底部操作栏 -->\n <slot name=\"customBar\" />\n </div>\n</template>\n"],"names":["useSlots","computed","uuid","shallowRef","ref","onMounted","watch","onBeforeUnmount","nextTick","_createElementBlock","_normalizeClass","_createCommentVNode","areaName","deviceSerial","_openBlock","_createElementVNode","_toDisplayString","_createBlock","ErrorPage","_renderSlot"],"mappings":"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"}