import{d as ve,u as ce,B as me,z as pe,o as y,c as fe,a as v,q as h,s as P,p as D,t as E,b as L,e as I,w as z,W as ge,k as n,A as ye,I as H,r as q,C as be}from"./index-p1BAR2Hc.js";import{o as W,p as G}from"./icons-CbZw_MCi.js";import{M as J}from"./LoadingMedia-q1A6xJc7.js";import{_ as ke}from"./_plugin-vue_export-helper-DlAUqK2U.js";const Te={class:"video-player"},_e=["src","muted"],he=["disabled","max","value"],we={class:"video-time"},xe=["title"],Ce=["src","muted"],Le={class:"dialog-controls"},Se=["max","value"],Me=ve({__name:"VideoPlayer",props:{src:{},mediaId:{},startTime:{default:0},aspectRatio:{default:"16:9"},seekable:{type:Boolean,default:!0},transparentControls:{type:Boolean,default:!1}},emits:["play","pause","seek","seek-end","volume","ended","fullscreen-open"],setup(s,{expose:b,emit:S}){const u=s,p=ce(),d=S,a=n(),l=n(),M=n(!1),N=n(!1),o=n(!0),c=n(0),U=n(0),$=n(!1),k=n(0),B=n(0),T=n(""),R=n(!0),w=n(!1),x=n(!0),_=n(!1);let m="",C=0;const K=ye(()=>({portrait:u.aspectRatio==="9:16"}));me([()=>u.src,()=>u.mediaId],async()=>{var f,g;const e=++C,t=m;if(c.value=0,U.value=0,R.value=!0,w.value=!1,x.value=!0,_.value=!1,u.mediaId)try{const i=await be.media(u.mediaId);if(e!==C)return;m=URL.createObjectURL(i),T.value=m}catch{if(e!==C)return;m="",T.value=u.src,p.error("媒体读取失败")}else m="",T.value=u.src;await H(),e===C&&((f=a.value)==null||f.load(),(g=l.value)==null||g.load(),t&&t!==m&&URL.revokeObjectURL(t))},{immediate:!0}),pe(()=>{C++,m&&URL.revokeObjectURL(m)});function Q(){a.value&&(a.value.paused?a.value.play():a.value.pause())}function X(){var e;M.value=!0,d("play",((e=a.value)==null?void 0:e.currentTime)||0)}function Y(){var e;M.value=!1,d("pause",((e=a.value)==null?void 0:e.currentTime)||0)}function Z(){M.value=!1,d("ended")}function ee(){var e;U.value=((e=a.value)==null?void 0:e.duration)||0,a.value&&(a.value.currentTime=u.startTime),c.value=u.startTime}function ae(){R.value=!1,w.value=!1}function te(){T.value&&(R.value=!1,w.value=!0)}function le(e){if(!a.value)return;const t=Number(e.target.value);a.value.currentTime=t,c.value=t,d("seek",t)}function oe(){var e;d("seek-end",((e=a.value)==null?void 0:e.currentTime)||0)}function ue(e){if(!l.value)return;const t=Number(e.target.value);l.value.currentTime=t,k.value=t}function A(e){a.value&&(a.value.pause(),a.value.currentTime=Math.max(0,a.value.currentTime+e),c.value=a.value.currentTime,d("seek",a.value.currentTime))}function ne(){l.value&&(l.value.paused?l.value.play():l.value.pause())}function re(){o.value=!o.value,l.value&&(l.value.muted=o.value),d("volume",o.value)}function ie(){o.value=!o.value,a.value&&(a.value.muted=o.value),l.value&&(l.value.muted=o.value),d("volume",o.value)}function F(){var e;(e=a.value)==null||e.pause(),M.value=!1,$.value=!0,x.value=!0,_.value=!1,d("fullscreen-open"),H(()=>{!l.value||!a.value||(l.value.currentTime=a.value.currentTime,l.value.muted=o.value,k.value=l.value.currentTime)})}function se(){var e;(e=l.value)==null||e.pause(),N.value=!1}function V(e){return Number.isFinite(e)?`${String(Math.floor(e/60)).padStart(2,"0")}:${String(Math.floor(e)%60).padStart(2,"0")}`:"00:00"}function de(){const e=a.value;if(!e||e.readyState{if(!g){p.error("静帧导出失败");return}const i=URL.createObjectURL(g),r=document.createElement("a");r.href=i,r.download="frame.png",document.body.appendChild(r),r.click(),r.remove(),window.setTimeout(()=>URL.revokeObjectURL(i),1e3)},"image/png")}catch{p.error("静帧导出失败")}}return b({openFullscreen:F,previousFrame:()=>A(-1/25),nextFrame:()=>A(1/25),exportFrame:de,pause:()=>{var e;return(e=a.value)==null?void 0:e.pause()},play:()=>{var e;return(e=a.value)==null?void 0:e.play()},currentTime:()=>{var e;return((e=a.value)==null?void 0:e.currentTime)||0},setCurrentTime:e=>{a.value&&(a.value.currentTime=e,c.value=e)},setMuted:e=>{o.value=e,a.value&&(a.value.muted=e),l.value&&(l.value.muted=e)},isMuted:()=>o.value}),(e,t)=>{const f=q("el-icon"),g=q("el-dialog");return y(),fe("div",Te,[v("video",{ref_key:"video",ref:a,src:T.value||void 0,preload:"metadata",playsinline:"",disablepictureinpicture:"",disableremoteplayback:"",controlslist:"nodownload noplaybackrate noremoteplayback",muted:o.value,onTimeupdate:t[0]||(t[0]=i=>{var r;return c.value=((r=a.value)==null?void 0:r.currentTime)||0}),onLoadedmetadata:ee,onLoadeddata:ae,onError:te,onPlay:X,onPause:Y,onEnded:Z,onClick:Q},null,40,_e),R.value||w.value?(y(),h(J,{key:0,failed:w.value,label:"视频加载中","error-label":"视频加载失败"},null,8,["failed"])):P("",!0),v("div",{class:D(["video-controls",{"video-controls-transparent":u.transparentControls}])},[v("input",{type:"range",disabled:!u.seekable,min:"0",max:U.value,step:"0.01",value:c.value,onInput:le,onChange:oe},null,40,he),v("span",we,E(V(c.value))+" / "+E(V(U.value)),1),v("button",{type:"button",class:"sound-button",title:o.value?"取消静音":"静音",onClick:ie},[o.value?(y(),h(L(W),{key:0,size:17,"stroke-width":1.8})):(y(),h(L(G),{key:1,size:17,"stroke-width":1.8}))],8,xe),I(f,{title:"全屏预览",onClick:F},{default:z(()=>[I(L(ge))]),_:1})],2),I(g,{modelValue:$.value,"onUpdate:modelValue":t[7]||(t[7]=i=>$.value=i),title:"视频预览",width:u.aspectRatio==="9:16"?"min(440px, calc(100vw - 28px))":"min(900px, calc(100vw - 28px))",class:"video-preview-dialog","append-to-body":"","align-center":"",onClosed:se},{default:z(()=>[v("div",{class:D(["dialog-player",K.value])},[v("video",{ref_key:"dialogVideo",ref:l,src:T.value||void 0,preload:"metadata",playsinline:"",disablepictureinpicture:"",disableremoteplayback:"",controlslist:"nodownload noplaybackrate noremoteplayback",muted:o.value,onTimeupdate:t[1]||(t[1]=i=>{var r;return k.value=((r=l.value)==null?void 0:r.currentTime)||0}),onLoadedmetadata:t[2]||(t[2]=i=>{var r,O;B.value=((r=l.value)==null?void 0:r.duration)||0,k.value=((O=a.value)==null?void 0:O.currentTime)||0}),onLoadeddata:t[3]||(t[3]=i=>{x.value=!1,_.value=!1}),onError:t[4]||(t[4]=i=>{x.value=!1,_.value=!0}),onPlay:t[5]||(t[5]=i=>N.value=!0),onPause:t[6]||(t[6]=i=>N.value=!1),onClick:ne},null,40,Ce),x.value||_.value?(y(),h(J,{key:0,failed:_.value,label:"视频加载中","error-label":"视频加载失败"},null,8,["failed"])):P("",!0),v("div",Le,[v("input",{type:"range",min:"0",max:B.value,step:"0.01",value:k.value,onInput:ue},null,40,Se),v("span",null,E(V(k.value))+" / "+E(V(B.value)),1),v("button",{type:"button",onClick:re},[o.value?(y(),h(L(W),{key:0,size:17})):(y(),h(L(G),{key:1,size:17}))])])],2)]),_:1},8,["modelValue","width"])])}}}),$e=ke(Me,[["__scopeId","data-v-e46b8f8f"]]);function j(s){const b=s?Date.parse(s):Number.NaN;return Number.isFinite(b)?b:0}function Ue(s){return s?j(s.phase_started_at)||j(s.last_result_at)||j(s.created_at):0}function Be(s,b){const S=Ue(s),u=S>0?Math.max(0,Math.floor((b-S)/1e3)):0,p=Math.floor(u/60).toString().padStart(2,"0"),d=(u%60).toString().padStart(2,"0");return`${p}:${d}`}export{$e as V,Be as t};