Files
zyt/server/public/admin/assets/RecordingVideoPlayer-B61u5_sn.js
T
2026-07-07 11:06:19 +08:00

2 lines
5.5 KiB
JavaScript

import{_ as F}from"./jspdf-BsthCvR5.js";import{d as H,S as K}from"./element-plus-Bolc0EfP.js";import{q as z,w as O,s as G}from"./@vue/runtime-dom-DDAG46FW.js";import{l as J}from"./@element-plus/icons-vue-B0jSCQ-G.js";import{e as W,_ as $}from"./index-BeVsiVLZ.js";import{f as j,b as Q,n as S,w as X,d as Y,ak as p,I as m,J as f,aP as Z,F as w,a as h,aN as I,H as M,O as ee,A as E}from"./@vue/runtime-core-C6bnekPw.js";import{y as te,n as v}from"./@vue/reactivity-DiY1c2vO.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./@vue/shared-mAAVTE9n.js";import"./lodash-D3kF6u-c.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const re={class:"recording-playback__shell"},oe=["preload"],ae=["onKeydown"],ne=j({__name:"RecordingVideoPlayer",props:{src:{}},setup(P){const A=P,B=W(),b=v(null),_=v(null),c=v(!1),i=v(!1),o=v(!1);let d=null,a=null,l=0,s=null;function u(){s!==null&&(clearTimeout(s),s=null)}const y=E(()=>{const e=String(A.src||"").trim();return e?N(B.getImageUrl(e)):""}),V=E(()=>{if(!i.value)return"none";const e=y.value;return e&&!L(e)?"metadata":"none"}),D=E(()=>!i.value||o.value);function N(e){if(!e||!/^https?:\/\//i.test(e))return e;try{const t=new URL(e),r=t.hostname.toLowerCase();if(r.includes("myqcloud.com")||r.includes("vod-qcloud.com")||r.includes("vod-qcloud"))return t.pathname.includes("+")&&(t.pathname=t.pathname.replace(/\+/g,"%2B")),t.href}catch{}return e}function L(e){return/\.m3u8(\?|#|$)/i.test(e)}function U(){var r;o.value=!1,u();const e=_.value,t=(r=e==null?void 0:e.error)==null?void 0:r.code;t===MediaError.MEDIA_ERR_ABORTED||t===1||(c.value=!0)}function k(){d&&(d.destroy(),d=null);const e=_.value;e&&(e.pause(),e.removeAttribute("src"),e.load())}function R(e,t){let r=!1;const n=()=>{r||t!==l||(r=!0,u(),o.value=!1)};e.addEventListener("loadedmetadata",()=>n(),{once:!0}),e.addEventListener("loadeddata",()=>n(),{once:!0}),e.addEventListener("canplay",()=>n(),{once:!0}),e.addEventListener("playing",()=>n(),{once:!0}),e.addEventListener("progress",()=>{try{e.buffered.length>0&&e.buffered.end(0)>0&&n("progress-buffered")}catch{}},{passive:!0})}async function g(){if(!i.value)return;await S();const e=_.value,t=y.value;if(!e)return;if(!t){o.value=!1,u();return}const r=++l;if(o.value=!0,u(),k(),c.value=!1,L(t)){try{const n=await F(()=>import("./hls.js-Cxumxs-1.js"),[]),x=n.default;if(x.isSupported()){d=new x({enableWorker:!0,lowLatencyMode:!1,maxBufferLength:20,maxMaxBufferLength:120}),d.on(n.Events.MANIFEST_PARSED,()=>{r===l&&(o.value=!1,u())}),d.on(n.Events.ERROR,(le,q)=>{if(q.fatal){if(r!==l)return;o.value=!1,u(),c.value=!0,k()}}),d.loadSource(t),d.attachMedia(e),s=setTimeout(()=>{s=null,r===l&&o.value&&(o.value=!1)},45e3);return}if(e.canPlayType("application/vnd.apple.mpegurl")){R(e,r),e.src=t,s=setTimeout(()=>{s=null,r===l&&o.value&&(o.value=!1)},45e3);return}}catch{if(r!==l)return;o.value=!1,u(),c.value=!0;return}if(r!==l)return;o.value=!1,u(),c.value=!0;return}R(e,r),e.src=t,s=setTimeout(()=>{s=null,r===l&&o.value&&(o.value=!1)},25e3)}function C(){const e=b.value;if(!e||typeof IntersectionObserver>"u"){i.value=!0,g();return}a=new IntersectionObserver(t=>{for(const r of t)if(r.isIntersecting){a==null||a.disconnect(),a=null,i.value=!0,g();break}},{root:null,rootMargin:"240px 0px",threshold:0}),a.observe(e)}function T(){a==null||a.disconnect(),a=null,i.value||(i.value=!0),g()}return Q(()=>{S(()=>{C()})}),X(y,()=>{i.value&&g()}),Y(()=>{a==null||a.disconnect(),a=null,u(),l++,k()}),(e,t)=>{const r=H,n=K;return p(),m("div",{ref_key:"wrapRef",ref:b,class:"recording-playback"},[f("div",re,[Z(f("video",{ref_key:"videoRef",ref:_,class:"recording-video",controls:"",playsinline:"","webkit-playsinline":"",preload:V.value,onError:U},null,40,oe),[[z,!c.value]]),!c.value&&D.value?(p(),m("div",{key:0,class:"recording-playback__overlay",role:"button",tabindex:"0",onClick:T,onKeydown:O(G(T,["prevent"]),["enter"])},[i.value?(p(),m(w,{key:1},[h(r,{class:"recording-playback__spin"},{default:I(()=>[h(te(J))]),_:1}),t[2]||(t[2]=f("span",null,"正在加载…",-1))],64)):(p(),m(w,{key:0},[t[0]||(t[0]=f("span",{class:"recording-playback__overlay-title"},"预览待加载",-1)),t[1]||(t[1]=f("span",{class:"recording-playback__overlay-desc"},"滚动至此处将自动加载(减轻并发卡顿),也可点击立即加载",-1))],64))],40,ae)):M("",!0)]),c.value?(p(),m(w,{key:0},[h(n,{href:y.value||"#",target:"_blank",type:"primary"},{default:I(()=>[...t[3]||(t[3]=[ee("在新窗口打开",-1)])]),_:1},8,["href"]),t[4]||(t[4]=f("div",{class:"recording-playback__hint"}," 内嵌播放失败(编码不支持、跨域或私有存储等)时可尝试在新窗口打开。 ",-1))],64)):M("",!0)],512)}}}),Oe=$(ne,[["__scopeId","data-v-749b0199"]]);export{Oe as default};