hzwl-easy-player
Version:
基于Vue 3的视频播放器组件,支持单屏和多屏播放模式
1 lines • 3.79 MB
JavaScript
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("crypto-js")):"function"==typeof define&&define.amd?define(["crypto-js"],t):(e="undefined"!=typeof globalThis?globalThis:e||self)["easyplayer-pro-multi"]=t(e.CryptoJS)}(this,(function(t){"use strict";function r(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var s=r(t);class a{on(e,t,i){const r=this.e||(this.e={});return(r[e]||(r[e]=[])).push({fn:t,ctx:i}),this}once(e,t,i){const r=this;function s(){r.off(e,s);for(var a=arguments.length,o=new Array(a),n=0;n<a;n++)o[n]=arguments[n];t.apply(i,o)}return s._=t,this.on(e,s,i)}emit(e){const t=((this.e||(this.e={}))[e]||[]).slice();for(var i=arguments.length,r=new Array(i>1?i-1:0),s=1;s<i;s++)r[s-1]=arguments[s];for(let e=0;e<t.length;e+=1)t[e].fn.apply(t[e].ctx,r);return this}off(e,t){const i=this.e||(this.e={});if(!e)return Object.keys(i).forEach((e=>{delete i[e]})),void delete this.e;const r=i[e],s=[];if(r&&t)for(let e=0,i=r.length;e<i;e+=1)r[e].fn!==t&&r[e].fn._!==t&&s.push(r[e]);return s.length?i[e]=s:delete i[e],this}}const o=1,n=2,l=3,h=4,d=5,A=6,c=8,u=9,p=["","websocket","fetch","hls","webrtc","webTransport","aliyunRtc","ts"],g="fetch",m="hls",y="websocket",E="webrtc",f="webTransport",C="worker",I="aliyunRtc",w="mp4",S="wsRtc",M="player",v="playerAudio",k="playbackTF",B="mp4",D="webm",b="flv",Q="mov",R="flv",T="m7s",L="hls",K="mp4",q="webrtc",x="webTransport",F="nakedFlow",U="fmp4",G="mpeg4",O="aliyunRtc",J="ts",Y="wsRtc",N={flv:"FLV",m7s:"M7S",hls:"HLS",fmp4:"FMP4",mpeg4:"MPEG4",webrtc:"Webrtc",webTransport:"WebTransport",nakedFlow:"裸流",aliyunRtc:"AliyunRtc",ts:"TS"},P="mse",j="wcs",z="offscreen",W="wasm",Z="simd",V="mt",H="webrtc",X="hls",_="mp4",$="wsRtc",ee="aliyunRtc",te="canvas",ie="video",re="debug",se="warn",ae="click",oe="mouseDownAndUp",ne={normal:"normal",simple:"simple"},le="6.1.0",he=36e5,de="/crypto/",Ae="EasyProv",ce=1e4,ue={url:"",playbackConfig:{},fullscreenWatermarkConfig:{},playType:M,playbackForwardMaxRateDecodeIFrame:4,playOptions:{},isLive:!0,isMulti:!0,isM7sCrypto:!1,supportHls265:!1,playFailedUseLastFrameShow:!0,playFailedAndPausedShowMessage:!1,pauseAndNextPlayUseLastFrameShow:!1,widthOrHeightChangeReplayDelayTime:0,isUseNewFullscreenWatermark:!1},pe={playType:M,container:"",videoBuffer:1e3,videoBufferDelay:1e3,networkDelay:1e4,messageTime:5,isResize:!0,isFullResize:!1,isFlv:!1,isHls:!1,isFmp4:!1,isFmp4Private:!1,isWebrtc:!1,isWebrtcForZLM:!1,isWebrtcForSRS:!1,isWebrtcForOthers:!1,isNakedFlow:!1,isMpeg4:!1,isAliyunRtc:!1,isTs:!1,debug:!1,debugLevel:se,debugUuid:"",isMulti:!0,multiIndex:-1,hotKey:!1,loadingTimeout:10,heartTimeout:10,timeout:10,pageVisibilityHiddenTimeout:300,loadingTimeoutReplay:!0,heartTimeoutReplay:!0,loadingTimeoutReplayTimes:3,heartTimeoutReplayTimes:3,heartTimeoutReplayUseLastFrameShow:!0,replayUseLastFrameShow:!0,replayShowLoadingIcon:!1,supportDblclickFullscreen:!1,showBandwidth:!1,showPerformance:!1,mseCorrectTimeDuration:20,mseCorrectAudioTimeDuration:20,keepScreenOn:!0,isNotMute:!1,muted:!0,hasAudio:!0,hasVideo:!0,operateBtns:{fullscreen:!1,screenshot:!1,stretch:!1,play:!1,audio:!1,record:!1,ptz:!1,quality:!1,zoom:!1,close:!1,scale:!1,performance:!1,logSave:!1,aiFace:!1,aiObject:!1,aiOcclusion:!1,fullscreenFn:null,fullscreenExitFn:null,screenshotFn:null,playFn:null,pauseFn:null,recordFn:null,recordStopFn:null},extendOperateBtns:[],contextmenuBtns:[],watermarkConfig:{},iceServers:[],channelId:"",controlAutoHide:!1,isLogo:!0,hasControl:!1,loadingIcon:!0,loadingIconStyle:{},loadingText:"",background:"",poster:"",backgroundLoadingShow:!0,loadingBackground:"",loadingBackgroundWidth:0,loadingBackgroundHeight:0,decoder:"decoder-pro.js",decoderAudio:"decoder-pro-audio.js",decoderHard:"decoder-pro-hard.js",decoderHardNotWasm:"decoder-pro-hard-not-wasm.js",wasmMp4RecorderDecoder:"easyplayer-mp4-recorder-decoder.js",decoderWASM:"",isDecoderUseCDN:!1,url:"",rotate:0,mirrorRotate:"none",aspectRatio:"default",playbackConfig:{playList:[],fps:"",showControl:!0,controlType:ne.normal,duration:0,startTime:"",showRateBtn:!1,rateConfig:[],showPrecision:"",showPrecisionBtn:!0,isCacheBeforeDecodeForFpsRender:!1,uiUsePlaybackPause:!0,isPlaybackPauseClearCache:!0,isUseFpsRender:!1,isUseLocalCalculateTime:!1,localOneFrameTimestamp:40,supportWheel:!1,useWCS:!1,useMSE:!1},qualityConfig:[],defaultStreamQuality:"",scaleConfig:["拉伸","缩放","正常"],forceNoOffscreen:!0,hiddenAutoPause:!1,protocol:n,demuxType:R,useWasm:!1,useMSE:!1,useWCS:!1,useSIMD:!0,useMThreading:!1,wcsUseVideoRender:!0,wcsUseWebgl2Render:!0,wasmUseVideoRender:!0,mseUseCanvasRender:!1,hlsUseCanvasRender:!1,webrtcUseCanvasRender:!1,useOffscreen:!1,useWebGPU:!1,mseDecodeErrorReplay:!0,wcsDecodeErrorReplay:!0,wasmDecodeErrorReplay:!0,simdDecodeErrorReplay:!0,simdDecodeErrorReplayType:W,autoWasm:!0,decoderErrorAutoWasm:!0,hardDecodingNotSupportAutoWasm:!0,webglAlignmentErrorReplay:!0,webglContextLostErrorReplay:!0,openWebglAlignment:!1,syncAudioAndVideo:!1,syncAudioAndVideoDiff:500,playbackDelayTime:1e3,playbackFps:25,playbackForwardMaxRateDecodeIFrame:4,playbackCurrentTimeMove:!0,useVideoRender:!0,useCanvasRender:!1,networkDelayTimeoutReplay:!1,recordType:B,checkFirstIFrame:!0,nakedFlowFps:25,audioEngine:null,isShowRecordingUI:!0,isShowZoomingUI:!0,useFaceDetector:!1,useObjectDetector:!1,useImageDetector:!1,useOcclusionDetector:!1,ptzPositionConfig:{},ptzShowType:"vertical",ptzClickType:ae,ptzStopEmitDelay:.3,ptzZoomShow:!1,ptzApertureShow:!1,ptzFocusShow:!1,ptzMoreArrowShow:!1,ptzCruiseShow:!1,ptzFogShow:!1,ptzWiperShow:!1,ptzSupportDraggable:!1,weiXinInAndroidAudioBufferSize:4800,isM7sCrypto:!1,m7sCryptoAudio:!1,isSm4Crypto:!1,isXorCrypto:!1,sm4CryptoKey:"",m7sCryptoKey:"",xorCryptoKey:"",cryptoKey:"",cryptoIV:"",cryptoKeyUrl:"",autoResize:!1,useWebFullScreen:!1,ptsMaxDiff:3600,aiFaceDetectLevel:2,aiFaceDetectWidth:240,aiFaceDetectShowRect:!0,aiFaceDetectInterval:1e3,aiFaceDetectRectConfig:{},aiObjectDetectLevel:2,aiObjectDetectWidth:240,aiObjectDetectShowRect:!0,aiObjectDetectInterval:1e3,aiObjectDetectRectConfig:{},aiOcclusionDetectInterval:1e3,aiImageDetectDrop:!1,aiImageDetectActive:!1,videoRenderSupportScale:!0,mediaSourceTsIsMaxDiffReplay:!0,controlHtml:"",isH265:!1,isWebrtcH265:!1,supportLockScreenPlayAudio:!0,supportHls265:!1,isEmitSEI:!1,pauseAndNextPlayUseLastFrameShow:!1,demuxUseWorker:!0,playFailedAndReplay:!0,showMessageConfig:{webglAlignmentError:"Webgl 渲染失败",webglContextLostError:"webgl 上下文丢失",mediaSourceH265NotSupport:"不支持硬解码H265",mediaSourceFull:"缓冲区已满",mediaSourceAppendBufferError:"初始化解码器失败",mseSourceBufferError:"解码失败",mseAddSourceBufferError:"初始化解码器失败",mediaSourceDecoderConfigurationError:"初始化解码器失败",mediaSourceTsIsMaxDiff:"流异常",mseWidthOrHeightChange:"流异常",mediaSourceAudioG711NotSupport:"硬解码不支持G711a/u音频格式",mediaSourceUseCanvasRenderPlayFailed:"MediaSource解码使用canvas渲染失败",webcodecsH265NotSupport:"不支持硬解码H265",webcodecsUnsupportedConfigurationError:"初始化解码器失败",webcodecsDecodeConfigureError:"初始化解码器失败",webcodecsDecodeError:"解码失败",wcsWidthOrHeightChange:"解码失败",wasmDecodeError:"解码失败",simdDecodeError:"解码失败",wasmWidthOrHeightChange:"流异常",wasmUseVideoRenderError:"video自动渲染失败",videoElementPlayingFailed:"video自动渲染失败",simdH264DecodeVideoWidthIsTooLarge:"不支持该分辨率的视频",networkDelayTimeout:"网络超时重播失败",fetchError:"请求失败",streamEnd:"请求结束",websocketError:"请求失败",webrtcError:"请求失败",hlsError:"请求失败",decoderWorkerInitError:"初始化worker失败",videoElementPlayingFailedForWebrtc:"video自动渲染失败",videoInfoError:"解析视频分辨率失败",webrtcStreamH265:"webrtc不支持H265",delayTimeout:"播放超时重播失败",loadingTimeout:"加载超时重播失败",loadingTimeoutRetryEnd:"加载超时重播失败",delayTimeoutRetryEnd:"播放超时重播失败"},videoElementPlayingFailedReplay:!0,mp4RecordUseWasm:!0,mseAutoCleanupSourceBuffer:!0,mseAutoCleanupMaxBackwardDuration:30,mseAutoCleanupMinBackwardDuration:10,widthOrHeightChangeReplay:!0,simdH264DecodeVideoWidthIsTooLargeReplay:!0,mediaSourceAudioG711NotSupportReplay:!0,mediaSourceAudioInitTimeoutReplay:!0,mediaSourceUseCanvasRenderPlayFailedReplay:!0,mediaSourceUseCanvasRenderPlayFailedReplayType:ie,widthOrHeightChangeReplayDelayTime:0,ghostWatermarkConfig:{on:5,off:5,content:"",fontSize:12,color:"white",opacity:.15,speed:.2},dynamicWatermarkConfig:{content:"",speed:.2,fontSize:12,color:"white",opacity:.15},isDropSameTimestampGop:!1,mseDecodeAudio:!1,nakedFlowH265DemuxUseNew:!0,extendDomConfig:{html:"",showBeforePlay:!1,showAfterLoading:!0},disableContextmenu:!1,websocket1006ErrorReplay:!1,websocket1006ErrorReplayDelayTime:0,streamErrorReplay:!1,streamErrorReplayDelayTime:0,streamEndReplay:!1,streamEndReplayDelayTime:0,mseDecoderUseWorker:!1,openMemoryLog:!1,mainThreadFetchUseWorker:!0,playFailedAndPausedShowPlayBtn:!0,mseCorrectionTimestamp:!0,flvDemuxBufferSizeTooLargeReplay:!1,flvDemuxBufferSizeMaxLarge:1048576,isCheckInView:!1},ge="init",me="initVideo",ye="render",Ee="playAudio",fe="initAudio",Ce="audioCode",Ie="audioNalu",we="audioAACSequenceHeader",Se="videoCode",Me="videoCodec",ve="videoNalu",ke="videoPayload",Be="audioPayload",De="wasmError",be="workerFetch",Qe="iframeIntervalTs",Re="isDropping",Te="workerEnd",Le="playbackStreamVideoFps",Ke="wasmDecodeVideoNoResponseError",qe="wasmWidthOrHeightChange",xe="simdDecodeError",Fe="simdH264DecodeVideoWidthIsTooLarge",Ue="closeEnd",Ge="tempStream",Oe="videoSEI",Je="flvScriptData",Ye="aacSequenceHeader",Ne="videoSequenceHeader",Pe="flvBufferData",je="checkFirstIFrame",ze="mseHandle",We="mseFirstRenderTime",Ze="mseError",Ve="Invalid NAL unit size",He=1,Xe=2,_e=8,$e=9,et=18,tt="init",it="decode",rt="audioDecode",st="videoDecode",at="close",ot="updateConfig",nt="clearBuffer",lt="fetchStream",ht="sendWsMessage",dt="mseUpdateVideoTimestamp",At="fetch",ct="destroy",ut="destroyEnd",pt="buffer",gt="fetchError",mt="fetchClose",yt="fetchSuccess",Et={fullscreen:"fullscreen$2",webFullscreen:"webFullscreen",decoderWorkerInit:"decoderWorkerInit",play:"play",playing:"playing",pause:"pause",mute:"mute",load:"load",loading:"loading",zooming:"zooming",videoInfo:"videoInfo",timeUpdate:"timeUpdate",liveEnd:"liveEnd",audioInfo:"audioInfo",log:"log",error:"error",kBps:"kBps",timeout:"timeout",delayTimeout:"delayTimeout",delayTimeoutRetryEnd:"delayTimeoutRetryEnd",loadingTimeout:"loadingTimeout",loadingTimeoutRetryEnd:"loadingTimeoutRetryEnd",stats:"stats",performance:"performance",videoSmooth:"videoSmooth",faceDetectActive:"faceDetectActive",objectDetectActive:"objectDetectActive",occlusionDetectActive:"occlusionDetectActive",imageDetectActive:"imageDetectActive",record:"record",recording:"recording",recordingTimestamp:"recordingTimestamp",recordStart:"recordStart",recordEnd:"recordEnd",recordCreateError:"recordCreateError",recordBlob:"recordBlob",buffer:"buffer",videoFrame:"videoFrame",videoSEI:"videoSEI",start:"start",metadata:"metadata",resize:"resize",volumechange:"volumechange",destroy:"destroy",screenshots:"screenshots",screenshot:"screenshot",beforeDestroy:"beforeDestroy",supportHlsH265:"supportHlsH265",streamEnd:"streamEnd",streamRate:"streamRate",streamAbps:"streamAbps",streamVbps:"streamVbps",streamDts:"streamDts",streamSuccess:"streamSuccess",streamMessage:"streamMessage",streamError:"streamError",streamStats:"streamStats",mseSourceOpen:"mseSourceOpen",mseSourceClose:"mseSourceClose",mseSourceended:"mseSourceended",mseSourceStartStreaming:"mseSourceStartStreaming",mseSourceEndStreaming:"mseSourceEndStreaming",mseSourceBufferError:"mseSourceBufferError",mseAddSourceBufferError:"mseAddSourceBufferError",mseSourceBufferBusy:"mseSourceBufferBusy",mseSourceBufferFull:"mseSourceBufferFull",videoWaiting:"videoWaiting",videoTimeUpdate:"videoTimeUpdate",videoSyncAudio:"videoSyncAudio",playToRenderTimes:"playToRenderTimes",playbackTime:"playbackTime",playbackTimestamp:"playbackTimestamp",playbackTimeScroll:"playbackTimeScroll",playbackPrecision:"playbackPrecision",playbackShowPrecisionChange:"playbackShowPrecisionChange",playbackJustTime:"playbackJustTime",playbackStats:"playbackStats",playbackEnd:"playbackEnd",playbackSeek:"playbackSeek",playbackPause:"playbackPause",playbackPauseOrResume:"playbackPauseOrResume",playbackRateChange:"playbackRateChange",playbackPreRateChange:"playbackPreRateChange",ptz:"ptz",streamQualityChange:"streamQualityChange",visibilityChange:"visibilityChange",netBuf:"netBuf",close:"close",contextmenuClose:"contextmenuClose",reset:"reset",playbackResetPause:"playbackResetPause",networkDelayTimeout:"networkDelayTimeout",togglePerformancePanel:"togglePerformancePanel",viewResizeChange:"viewResizeChange",flvDemuxBufferSizeTooLarge:"flvDemuxBufferSizeTooLarge",talkGetUserMediaSuccess:"talkGetUserMediaSuccess",talkGetUserMediaFail:"talkGetUserMediaFail",talkGetUserMediaTimeout:"talkGetUserMediaTimeout",talkStreamStart:"talkStreamStart",talkStreamOpen:"talkStreamOpen",talkStreamClose:"talkStreamClose",talkStreamError:"talkStreamError",talkStreamInactive:"talkStreamInactive",webrtcDisconnect:"webrtcDisconnect",webrtcFailed:"webrtcFailed",webrtcClosed:"webrtcClosed",webrtcOnConnectionStateChange:"webrtcOnConnectionStateChange",webrtcOnIceConnectionStateChange:"webrtcOnIceConnectionStateChange",crashLog:"crashLog",focus:"focus",blur:"blur",inView:"inView",visibilityHiddenTimeout:"visibilityHiddenTimeout",websocketOpen:"websocketOpen",websocketClose:"websocketClose",websocketError:"websocketError",websocketMessage:"websocketMessage",aiObjectDetectorInfo:"aiObjectDetectorInfo",aiFaceDetectorInfo:"aiFaceDetectorInfo",aiOcclusionDetectResult:"aiOcclusionDetectResult",aiImageDetectResult:"aiImageDetectResult",playFailedAndPaused:"playFailedAndPaused",audioResumeState:"audioResumeState",webrtcStreamH265:"webrtcStreamH265",flvMetaData:"flvMetaData",talkFailedAndStop:"talkFailedAndStop",removeLoadingBgImage:"removeLoadingBgImage",memoryLog:"memoryLog",downloadMemoryLog:"downloadMemoryLog",pressureObserverCpu:"pressureObserverCpu",currentPts:"currentPts"},ft={load:Et.load,timeUpdate:Et.timeUpdate,videoInfo:Et.videoInfo,audioInfo:Et.audioInfo,error:Et.error,kBps:Et.kBps,start:Et.start,timeout:Et.timeout,loadingTimeout:Et.loadingTimeout,loadingTimeoutRetryEnd:Et.loadingTimeoutRetryEnd,delayTimeout:Et.delayTimeout,delayTimeoutRetryEnd:Et.delayTimeoutRetryEnd,fullscreen:"fullscreen",webFullscreen:Et.webFullscreen,play:Et.play,liveEnd:Et.liveEnd,pause:Et.pause,mute:Et.mute,stats:Et.stats,performance:Et.performance,recordingTimestamp:Et.recordingTimestamp,recordStart:Et.recordStart,recordCreateError:Et.recordCreateError,recordEnd:Et.recordEnd,recordBlob:Et.recordBlob,playToRenderTimes:Et.playToRenderTimes,playbackSeek:Et.playbackSeek,playbackStats:Et.playbackStats,playbackEnd:Et.playbackEnd,playbackTimestamp:Et.playbackTimestamp,playbackPauseOrResume:Et.playbackPauseOrResume,playbackPreRateChange:Et.playbackPreRateChange,playbackRateChange:Et.playbackRateChange,playbackShowPrecisionChange:Et.playbackShowPrecisionChange,ptz:Et.ptz,streamQualityChange:Et.streamQualityChange,zooming:Et.zooming,crashLog:Et.crashLog,focus:Et.focus,blur:Et.blur,visibilityHiddenTimeout:Et.visibilityHiddenTimeout,visibilityChange:Et.visibilityChange,websocketOpen:Et.websocketOpen,websocketClose:Et.websocketClose,networkDelayTimeout:Et.networkDelayTimeout,aiObjectDetectorInfo:Et.aiObjectDetectorInfo,aiFaceDetectorInfo:Et.aiFaceDetectorInfo,aiOcclusionDetectResult:Et.aiOcclusionDetectResult,aiImageDetectResult:Et.aiImageDetectResult,playFailedAndPaused:Et.playFailedAndPaused,streamEnd:Et.streamEnd,audioResumeState:Et.audioResumeState,videoSEI:Et.videoSEI,flvMetaData:Et.flvMetaData,webrtcOnConnectionStateChange:Et.webrtcOnConnectionStateChange,webrtcOnIceConnectionStateChange:Et.webrtcOnIceConnectionStateChange,currentPts:Et.currentPts,videoSmooth:Et.videoSmooth},Ct={talkStreamClose:Et.talkStreamClose,talkStreamError:Et.talkStreamError,talkStreamInactive:Et.talkStreamInactive,talkGetUserMediaTimeout:Et.talkGetUserMediaTimeout,talkFailedAndStop:Et.talkFailedAndStop},It={talkStreamError:Et.talkStreamError,talkStreamClose:Et.talkStreamClose},wt={playError:"playIsNotPauseOrUrlIsNull",fetchError:"fetchError",websocketError:"websocketError",webcodecsH265NotSupport:"webcodecsH265NotSupport",webcodecsDecodeError:"webcodecsDecodeError",webcodecsUnsupportedConfigurationError:"webcodecsUnsupportedConfigurationError",webcodecsDecodeConfigureError:"webcodecsDecodeConfigureError",mediaSourceH265NotSupport:"mediaSourceH265NotSupport",mediaSourceAudioG711NotSupport:"mediaSourceAudioG711NotSupport",mediaSourceAudioInitTimeout:"mediaSourceAudioInitTimeout",mediaSourceAudioNoDataTimeout:"mediaSourceAudioNoDataTimeout",mediaSourceDecoderConfigurationError:"mediaSourceDecoderConfigurationError",mediaSourceFull:Et.mseSourceBufferFull,mseSourceBufferError:Et.mseSourceBufferError,mseAddSourceBufferError:Et.mseAddSourceBufferError,mediaSourceAppendBufferError:"mediaSourceAppendBufferError",mediaSourceTsIsMaxDiff:"mediaSourceTsIsMaxDiff",mediaSourceUseCanvasRenderPlayFailed:"mediaSourceUseCanvasRenderPlayFailed",mediaSourceBufferedIsZeroError:"mediaSourceBufferedIsZeroError",wasmDecodeError:"wasmDecodeError",wasmUseVideoRenderError:"wasmUseVideoRenderError",hlsError:"hlsError",webrtcError:"webrtcError",webrtcClosed:Et.webrtcClosed,webrtcIceCandidateError:"webrtcIceCandidateError",webglAlignmentError:"webglAlignmentError",wasmWidthOrHeightChange:"wasmWidthOrHeightChange",mseWidthOrHeightChange:"mseWidthOrHeightChange",wcsWidthOrHeightChange:"wcsWidthOrHeightChange",widthOrHeightChange:"widthOrHeightChange",tallWebsocketClosedByError:"tallWebsocketClosedByError",flvDemuxBufferSizeTooLarge:Et.flvDemuxBufferSizeTooLarge,wasmDecodeVideoNoResponseError:"wasmDecodeVideoNoResponseError",audioChannelError:"audioChannelError",simdH264DecodeVideoWidthIsTooLarge:"simdH264DecodeVideoWidthIsTooLarge",simdDecodeError:"simdDecodeError",webglContextLostError:"webglContextLostError",videoElementPlayingFailed:"videoElementPlayingFailed",videoElementPlayingFailedForWebrtc:"videoElementPlayingFailedForWebrtc",decoderWorkerInitError:"decoderWorkerInitError",videoInfoError:"videoInfoError",videoCodecIdError:"videoCodecIdError",streamEnd:Et.streamEnd,delayTimeout:Et.delayTimeout,loadingTimeout:Et.loadingTimeout,networkDelayTimeout:Et.networkDelayTimeout,aliyunRtcError:"aliyunRtcError",...It},St="notConnect",Mt="open",vt="close",kt="error",Bt={download:"download",base64:"base64",blob:"blob"},Dt="download",bt="blob",Qt={7:"H264(AVC)",12:"H265(HEVC)",99:"MPEG4"},Rt=7,Tt=12,Lt="H264(AVC)",Kt="H265(HEVC)",qt={AAC:10,ALAW:7,MULAW:8,MP3:2},xt={AAC:"AAC",ALAW:"ALAW(g711a)",MULAW:"MULAW(g711u)",MP3:"MP3"},Ft={10:"AAC",7:"ALAW",8:"MULAW",2:"MP3"},Ut={sps:7,pps:8,iFrame:5,kUnspecified:0,kSliceNonIDR:1,kSliceDPA:2,kSliceDPB:3,kSliceDPC:4,kSliceIDR:5,kSliceSEI:6,kSliceSPS:7,kSlicePPS:8,kSliceAUD:9,kEndOfSequence:10,kEndOfStream:11,kFiller:12,kSPSExt:13,kReserved0:14},Gt=19,Ot=20,Jt=21,Yt=32,Nt=32,Pt=33,jt=33,zt=34,Wt=34,Zt=39,Vt=39,Ht=40,Xt=0,_t=1,$t=2,ei="webcodecs",ti="webgl",ii="webgl2",ri="webgpu",si="offscreen",ai="mse",oi="hls",ni="webrtc",li="key",hi="delta",di='video/mp4; codecs="avc1.64002A"',Ai='video/mp4; codecs="hev1.1.6.L123.b0"',ci='video/mp4;codecs="hev1.1.6.L120.90"',ui='video/mp4;codecs="hev1.2.4.L120.90"',pi='video/mp4;codecs="hev1.3.E.L120.90"',gi='video/mp4;codecs="hev1.4.10.L120.90"',mi="ended",yi="open",Ei="closed",fi=2e3,Ci=27,Ii=38,wi=40,Si="oneHour",Mi="halfHour",vi="tenMin",ki="fiveMin",Bi={oneHour:"one-hour",halfHour:"half-hour",tenMin:"ten-min",fiveMin:"five-min"},Di=["oneHour","halfHour","tenMin","fiveMin"],bi=["up","right","down","left","left-up","right-up","left-down","right-down"],Qi="stop",Ri="fiStop",Ti="zoomExpand",Li="zoomNarrow",Ki="apertureFar",qi="apertureNear",xi="focusFar",Fi="focusNear",Ui="cruiseStart",Gi="cruiseStop",Oi="fogOpen",Ji="fogClose",Yi="wiperOpen",Ni="wiperClose",Pi="g711a",ji="g711u",zi="pcm",Wi="opus",Zi={png:"image/png",jpeg:"image/jpeg",webp:"image/webp"},Vi="sourceclose",Hi="sourceopen",Xi="sourceended",_i="startstreaming",$i="endstreaming",er="qualitychange",tr="canplay",ir="waiting",rr="timeupdate",sr="ratechange",ar="avc",or="hevc",nr="A key frame is required after configure() or flush()",lr="Cannot call 'decode' on a closed codec",hr="Unsupported configuration",dr="Decoder failure",Ar="Decoding error",cr="Decoder error",ur="HEVC decoding is not supported",pr="The user aborted a request",gr="AbortError",mr="AbortError",yr="loading",Er="playing",fr="paused",Cr="destroy",Ir=0,wr=1,Sr=8,Mr=0,vr=98,kr="empty",Br="rtp",Dr="tcp",br="open",Qr="close",Rr="error",Tr="message",Lr="worklet",Kr="script",qr={encType:Pi,packetType:Br,packetTcpSendType:Dr,rtpSsrc:"0000000000",numberChannels:1,sampleRate:8e3,sampleBitsWidth:16,sendInterval:20,debug:!1,debugLevel:se,testMicrophone:!1,saveToTempFile:!1,audioBufferLength:160,engine:Lr,checkGetUserMediaTimeout:!1,getUserMediaTimeout:1e4,audioConstraints:{latency:!0,noiseSuppression:!0,autoGainControl:!0,echoCancellation:!0,sampleRate:48e3,channelCount:1}},xr="worklet",Fr="script",Ur="active",Gr={name:"",index:0,icon:"",iconHover:"",iconTitle:"",activeIcon:"",activeIconHover:"",activeIconTitle:"",click:null,activeClick:null},Or={content:"",click:null,index:0},Jr={container:"",maxSplit:4,split:1,draggable:!1,showSelectedBorder:!0,supportDblclickContainerFullscreen:!1,supportMousemoveEvent:!1,style:{border:"#343434",borderSelect:"#FFCC00",background:"#000"}},Yr={multiFullscreen:"multiFullscreen",dblSelected:"multiDblSelected",selected:"multiSelected",mouseover:"multiMouseover",mouseout:"multiMouseout",mouseup:"multiMouseup",mousedown:"multiMousedown",mousemove:"multiMousemove",dragstart:"multiDragstart",dragenter:"multiDragenter",dragleave:"multiDragleave",drop:"multiDrop"},Nr="3-1",Pr="4-1",jr=1,zr="subtitle-segments",Wr="hls-manifest-loaded",Zr="hls-level-loaded",Vr="demuxed-track",Hr="flv-script-data",Xr="metadata-parsed",_r="ttfb",$r="load-retry",es="load-start",ts="speed",is="load-complete",rs="load-response-headers",ss="sei",as="sei-in-time",os="switch-url-failed",ns="switch-url-success",ls="subtitle-playlist",hs="stream-parsed",ds="error",As=[0,160,240,320,480,640],cs=[0,160,240,320,480,640],us="idle",ps="buffering",gs="complete",ms={1:"MEDIA_ERR_ABORTED",2:"MEDIA_ERR_NETWORK",3:"MEDIA_ERR_DECODE",4:"MEDIA_ERR_SRC_NOT_SUPPORTED"},ys="video decoder initialization failed",Es="audio packet",fs=1,Cs=2,Is=0,ws=1,Ss=3,Ms=16,vs="candidate-pair",ks="inbound-rtp",Bs="local-candidate",Ds="remote-candidate",bs="track",Qs=9e4,Rs=45e4,Ts=9e4,Ls="ulaw",Ks="alaw",qs="mp3",xs="ws1006",Fs="mseDecodeError",Us="wcsDecodeError";class Gs{constructor(e){this.log=function(t){if(e._opt.debug&&e._opt.debugLevel==re){const a=e._opt.debugUuid?`[${e._opt.debugUuid}]`:"";for(var i=arguments.length,r=new Array(i>1?i-1:0),s=1;s<i;s++)r[s-1]=arguments[s];console.log(`EasyPro${a}[✅✅✅][${t}]`,...r)}},this.warn=function(t){if(e._opt.debug&&(e._opt.debugLevel==re||e._opt.debugLevel==se)){const a=e._opt.debugUuid?`[${e._opt.debugUuid}]`:"";for(var i=arguments.length,r=new Array(i>1?i-1:0),s=1;s<i;s++)r[s-1]=arguments[s];console.log(`EasyPro${a}[❗❗❗][${t}]`,...r)}},this.error=function(t){const i=e._opt.debugUuid?`[${e._opt.debugUuid}]`:"";for(var r=arguments.length,s=new Array(r>1?r-1:0),a=1;a<r;a++)s[a-1]=arguments[a];console.error(`EasyPro${i}[❌❌❌][${t}]`,...s)}}}var Os="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function Js(e,t){return e(t={exports:{}},t.exports),t.exports}var Ys=Js((function(e){!function(){var t="undefined"!=typeof window&&void 0!==window.document?window.document:{},i=e.exports,r=function(){for(var e,i=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError"]],r=0,s=i.length,a={};r<s;r++)if((e=i[r])&&e[1]in t){for(r=0;r<e.length;r++)a[i[0][r]]=e[r];return a}return!1}(),s={change:r.fullscreenchange,error:r.fullscreenerror},a={request:function(e,i){return new Promise(function(s,a){var o=function(){this.off("change",o),s()}.bind(this);this.on("change",o);var n=(e=e||t.documentElement)[r.requestFullscreen](i);n instanceof Promise&&n.then(o).catch(a)}.bind(this))},exit:function(){return new Promise(function(e,i){if(this.isFullscreen){var s=function(){this.off("change",s),e()}.bind(this);this.on("change",s);var a=t[r.exitFullscreen]();a instanceof Promise&&a.then(s).catch(i)}else e()}.bind(this))},toggle:function(e,t){return this.isFullscreen?this.exit():this.request(e,t)},onchange:function(e){this.on("change",e)},onerror:function(e){this.on("error",e)},on:function(e,i){var r=s[e];r&&t.addEventListener(r,i,!1)},off:function(e,i){var r=s[e];r&&t.removeEventListener(r,i,!1)},raw:r};r?(Object.defineProperties(a,{isFullscreen:{get:function(){return Boolean(t[r.fullscreenElement])}},element:{enumerable:!0,get:function(){return t[r.fullscreenElement]}},isEnabled:{enumerable:!0,get:function(){return Boolean(t[r.fullscreenEnabled])}}}),i?e.exports=a:window.screenfull=a):i?e.exports={isEnabled:!1}:window.screenfull={isEnabled:!1}}()}));Ys.isEnabled;class Ns{constructor(e){this._buffer=e,this._buffer_index=0,this._total_bytes=e.byteLength,this._total_bits=8*e.byteLength,this._current_word=0,this._current_word_bits_left=0}destroy(){this._buffer=null}_fillCurrentWord(){let e=this._total_bytes-this._buffer_index;if(e<=0)return void console.error("ExpGolomb: _fillCurrentWord() but no bytes available",this._total_bytes,this._buffer_index);let t=Math.min(4,e),i=new Uint8Array(4);i.set(this._buffer.subarray(this._buffer_index,this._buffer_index+t)),this._current_word=new DataView(i.buffer).getUint32(0,!1),this._buffer_index+=t,this._current_word_bits_left=8*t}readBits(e){if(e>32&&console.error("ExpGolomb: readBits() bits exceeded max 32bits!"),e<=this._current_word_bits_left){let t=this._current_word>>>32-e;return this._current_word<<=e,this._current_word_bits_left-=e,t}let t=this._current_word_bits_left?this._current_word:0;t>>>=32-this._current_word_bits_left;let i=e-this._current_word_bits_left;this._fillCurrentWord();let r=Math.min(i,this._current_word_bits_left),s=this._current_word>>>32-r;return this._current_word<<=r,this._current_word_bits_left-=r,t=t<<r|s,t}readBool(){return 1===this.readBits(1)}readByte(){return this.readBits(8)}_skipLeadingZero(){let e;for(e=0;e<this._current_word_bits_left;e++)if(0!=(this._current_word&2147483648>>>e))return this._current_word<<=e,this._current_word_bits_left-=e,e;return this._fillCurrentWord(),e+this._skipLeadingZero()}readUEG(){let e=this._skipLeadingZero();return this.readBits(e+1)-1}readSEG(){let e=this.readUEG();return 1&e?e+1>>>1:-1*(e>>>1)}}function Ps(e){let{profile:t,sampleRate:i,channel:r}=e;return new Uint8Array([175,0,t<<3|(14&i)>>1,(1&i)<<7|r<<3])}function js(e){return zs(e)&&e[1]===Ir}function zs(e){return e[0]>>4===qt.AAC}const Ws=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350],Zs=Ws,Vs=Ws;function Hs(e,t){if("mp4a.40.2"===e){if(1===t)return new Uint8Array([0,200,0,128,35,128]);if(2===t)return new Uint8Array([33,0,73,144,2,25,0,35,128]);if(3===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,142]);if(4===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,128,44,128,8,2,56]);if(5===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,56]);if(6===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,0,178,0,32,8,224])}else{if(1===t)return new Uint8Array([1,64,34,128,163,78,230,128,186,8,0,0,0,28,6,241,193,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);if(2===t)return new Uint8Array([1,64,34,128,163,94,230,128,186,8,0,0,0,0,149,0,6,241,161,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);if(3===t)return new Uint8Array([1,64,34,128,163,94,230,128,186,8,0,0,0,0,149,0,6,241,161,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94])}}function Xs(e){return 1024*(arguments.length>1&&void 0!==arguments[1]?arguments[1]:9e4)/e}const _s=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];function $s(e){let t=new Uint8Array(e),i=null,r=0,s=0,a=0,o=null;if(r=s=t[0]>>>3,a=(7&t[0])<<1|t[1]>>>7,a<0||a>=_s.length)return void console.error("Flv: AAC invalid sampling frequency index!");let n=_s[a],l=(120&t[1])>>>3;if(l<0||l>=8)return void console.log("Flv: AAC invalid channel configuration");5===r&&(o=(7&t[1])<<1|t[2]>>>7,t[2]);let h=self.navigator.userAgent.toLowerCase();return-1!==h.indexOf("firefox")?a>=6?(r=5,i=new Array(4),o=a-3):(r=2,i=new Array(2),o=a):-1!==h.indexOf("android")?(r=2,i=new Array(2),o=a):(r=5,o=a,i=new Array(4),a>=6?o=a-3:1===l&&(r=2,i=new Array(2),o=a)),i[0]=r<<3,i[0]|=(15&a)>>>1,i[1]=(15&a)<<7,i[1]|=(15&l)<<3,5===r&&(i[1]|=(15&o)>>>1,i[2]=(1&o)<<7,i[2]|=8,i[3]=0),{audioType:"aac",config:i,sampleRate:n,channelCount:l,objectType:r,codec:"mp4a.40."+r,originalCodec:"mp4a.40."+s}}class ea{constructor(e){this.buffer=e,this.buflen=e.length,this.bufpos=0,this.bufoff=0,this.iserro=!1}read(e){let t=0,i=0;for(;e;){if(e<0||this.bufpos>=this.buflen)return this.iserro=!0,0;this.iserro=!1,i=this.bufoff+e>8?8-this.bufoff:e,t<<=i,t+=this.buffer[this.bufpos]>>8-this.bufoff-i&255>>8-i,this.bufoff+=i,e-=i,8==this.bufoff&&(this.bufpos++,this.bufoff=0)}return t}look(e){let t=this.bufpos,i=this.bufoff,r=this.read(e);return this.bufpos=t,this.bufoff=i,r}read_golomb(){let e;for(e=0;0==this.read(1)&&!this.iserro;e++);return(1<<e)+this.read(e)-1}}function ta(e){let t=e.read(5);return 31===t&&(t=e.read(6)+32),t}function ia(e,t){return t.sampling_index=e.read(4),15==t.sampling_index?e.read(24):ra[t.sampling_index]}const ra=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350,0,0,0],sa=[0,1,2,3,4,5,6,8];class aa{constructor(e){this.data_=e,this.eof_flag_=!1,this.current_syncword_offset_=this.findNextSyncwordOffset(0),this.eof_flag_&&console.error("Could not found ADTS syncword until payload end")}findNextSyncwordOffset(e){let t=e,i=this.data_;for(;;){if(t+7>=i.byteLength)return this.eof_flag_=!0,i.byteLength;if(4095===(i[t+0]<<8|i[t+1])>>>4)return t;t++}}readNextAACFrame(){let e=this.data_,t=null;for(;null==t&&!this.eof_flag_;){let i=this.current_syncword_offset_,r=(8&e[i+1])>>>3,s=(6&e[i+1])>>>1,a=1&e[i+1],o=(192&e[i+2])>>>6,n=(60&e[i+2])>>>2,l=(1&e[i+2])<<2|(192&e[i+3])>>>6,h=(3&e[i+3])<<11|e[i+4]<<3|(224&e[i+5])>>>5;if(e[i+6],i+h>this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}let d=1===a?7:9,A=h-d;i+=d;let c=this.findNextSyncwordOffset(i+A);if(this.current_syncword_offset_=c,0!==r&&1!==r||0!==s)continue;let u=e.subarray(i,i+A);t={},t.audio_object_type=o+1,t.sampling_freq_index=n,t.sampling_frequency=Zs[n],t.channel_config=l,t.data=u}return t}hasIncompleteData(){return this.has_last_incomplete_data}getIncompleteData(){return this.has_last_incomplete_data?this.data_.subarray(this.current_syncword_offset_):null}}class oa{constructor(e){this.data_=e,this.eof_flag_=!1,this.current_syncword_offset_=this.findNextSyncwordOffset(0),this.eof_flag_&&console.error("Could not found ADTS syncword until payload end")}findNextSyncwordOffset(e){let t=e,i=this.data_;for(;;){if(t+1>=i.byteLength)return this.eof_flag_=!0,i.byteLength;if(695===(i[t+0]<<3|i[t+1]>>>5))return t;t++}}getLATMValue(e){let t=e.readBits(2),i=0;for(let r=0;r<=t;r++)i<<=8,i|=e.readByte();return i}readNextAACFrame(e){let t=this.data_,i=null;for(;null==i&&!this.eof_flag_;){let r=this.current_syncword_offset_,s=(31&t[r+1])<<8|t[r+2];if(r+3+s>=this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}let a=new Ns(t.subarray(r+3,r+3+s)),o=null;if(a.readBool()){if(null==e){console.warn("StreamMuxConfig Missing"),this.current_syncword_offset_=this.findNextSyncwordOffset(r+3+s),a.destroy();continue}o=e}else{let e=a.readBool();if(e&&a.readBool()){console.error("audioMuxVersionA is Not Supported"),a.destroy();break}if(e&&this.getLATMValue(a),!a.readBool()){console.error("allStreamsSameTimeFraming zero is Not Supported"),a.destroy();break}if(0!==a.readBits(6)){console.error("more than 2 numSubFrames Not Supported"),a.destroy();break}if(0!==a.readBits(4)){console.error("more than 2 numProgram Not Supported"),a.destroy();break}if(0!==a.readBits(3)){console.error("more than 2 numLayer Not Supported"),a.destroy();break}let t=e?this.getLATMValue(a):0,i=a.readBits(5);t-=5;let r=a.readBits(4);t-=4;let s=a.readBits(4);t-=4,a.readBits(3),t-=3,t>0&&a.readBits(t);let n=a.readBits(3);if(0!==n){console.error(`frameLengthType = ${n}. Only frameLengthType = 0 Supported`),a.destroy();break}a.readByte();let l=a.readBool();if(l)if(e)this.getLATMValue(a);else{let e=0;for(;;){e<<=8;let t=a.readBool();if(e+=a.readByte(),!t)break}console.log(e)}a.readBool()&&a.readByte(),o={},o.audio_object_type=i,o.sampling_freq_index=r,o.sampling_frequency=Zs[o.sampling_freq_index],o.channel_config=s,o.other_data_present=l}let n=0;for(;;){let e=a.readByte();if(n+=e,255!==e)break}let l=new Uint8Array(n);for(let e=0;e<n;e++)l[e]=a.readByte();i={},i.audio_object_type=o.audio_object_type,i.sampling_freq_index=o.sampling_freq_index,i.sampling_frequency=Zs[o.sampling_freq_index],i.channel_config=o.channel_config,i.other_data_present=o.other_data_present,i.data=l,this.current_syncword_offset_=this.findNextSyncwordOffset(r+3+s)}return i}hasIncompleteData(){return this.has_last_incomplete_data}getIncompleteData(){return this.has_last_incomplete_data?this.data_.subarray(this.current_syncword_offset_):null}}function na(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return(e[t]<<24>>>0)+(e[t+1]<<16)+(e[t+2]<<8)+(e[t+3]||0)}function la(e){const t=e.byteLength,i=new Uint8Array(4);i[0]=t>>>24&255,i[1]=t>>>16&255,i[2]=t>>>8&255,i[3]=255&t;const r=new Uint8Array(t+4);return r.set(i,0),r.set(e,4),r}function ha(){}function da(e){let t=null;const i=["webgl","experimental-webgl","moz-webgl","webkit-3d"];let r=0;for(;!t&&r<i.length;){const s=i[r];try{let i={preserveDrawingBuffer:!0};t=e.getContext(s,i)}catch(e){console.error(e),t=null}t&&"function"==typeof t.getParameter||(t=null),++r}return t}function Aa(e){let t=null;return t=e.getContext("webgl2"),t}function ca(){const e=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"").split(","),t=atob(e[1]),i=e[0].replace("data:","").replace(";base64","");let r=t.length,s=new Uint8Array(r);for(;r--;)s[r]=t.charCodeAt(r);return new File([s],"file",{type:i})}function ua(){return(new Date).getTime()}function pa(e,t,i){return Math.max(Math.min(e,Math.max(t,i)),Math.min(t,i))}function ga(e,t,i){if(e)return"object"==typeof t&&Object.keys(t).forEach((i=>{ga(e,i,t[i])})),e.style[t]=i,e}function ma(e,t){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(!e)return 0;const r=getComputedStyle(e,null).getPropertyValue(t);return i?parseFloat(r):r}function ya(){return performance&&"function"==typeof performance.now?performance.now():Date.now()}function Ea(e){let t=0,i=ya();return r=>{if(!Qa(r))return;t+=r;const s=ya(),a=s-i;a>=1e3&&(e(t/a*1e3),i=s,t=0)}}(()=>{try{if("object"==typeof WebAssembly&&"function"==typeof WebAssembly.instantiate){const e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(e instanceof WebAssembly.Module)return new WebAssembly.Instance(e)instanceof WebAssembly.Instance}}catch(e){}})();function fa(){return/iphone|ipod|android.*mobile|windows.*phone|blackberry.*mobile/i.test(window.navigator.userAgent.toLowerCase())}function Ca(){return!(fa()||/ipad|android(?!.*mobile)|tablet|kindle|silk/i.test(window.navigator.userAgent.toLowerCase()))}function Ia(){const e=window.navigator.userAgent.toLowerCase();return/android/i.test(e)}function wa(){const e=window.navigator.userAgent.toLowerCase();return/firefox/i.test(e)}function Sa(){const e=window.navigator.userAgent.toLowerCase()||"",t={type:"",version:""},i={IE:window.ActiveXObject||"ActiveXObject"in window,Chrome:e.indexOf("chrome")>-1&&e.indexOf("safari")>-1,Firefox:e.indexOf("firefox")>-1,Opera:e.indexOf("opera")>-1,Safari:e.indexOf("safari")>-1&&-1==e.indexOf("chrome"),Edge:e.indexOf("edge")>-1,QQBrowser:/qqbrowser/.test(e),WeixinBrowser:/MicroMessenger/i.test(e)};for(let r in i)if(i[r]){let i="";if("IE"===r){const t=e.match(/(msie\s|trident.*rv:)([\w.]+)/);t&&t.length>2&&(i=e.match(/(msie\s|trident.*rv:)([\w.]+)/)[2])}else if("Chrome"===r){for(let e in navigator.mimeTypes)"application/360softmgrplugin"===navigator.mimeTypes[e].type&&(r="360");const t=e.match(/chrome\/([\d.]+)/);t&&t.length>1&&(i=t[1])}else if("Firefox"===r){const t=e.match(/firefox\/([\d.]+)/);t&&t.length>1&&(i=t[1])}else if("Opera"===r){const t=e.match(/opera\/([\d.]+)/);t&&t.length>1&&(i=t[1])}else if("Safari"===r){const t=e.match(/version\/([\d.]+)/);t&&t.length>1&&(i=t[1])}else if("Edge"===r){const t=e.match(/edge\/([\d.]+)/);t&&t.length>1&&(i=t[1])}else if("QQBrowser"===r){const t=e.match(/qqbrowser\/([\d.]+)/);t&&t.length>1&&(i=t[1])}t.type=r,t.version=parseInt(i)}return t}function Ma(){const e=window.navigator.userAgent;return!e.match(/Chrome/gi)&&!!e.match(/Safari/gi)}function va(e,t){if(0===arguments.length)return null;var i,r=t||"{y}-{m}-{d} {h}:{i}:{s}";"object"==typeof e?i=e:(10===(""+e).length&&(e=1e3*parseInt(e)),e=+e,i=new Date(e));var s={y:i.getFullYear(),m:i.getMonth()+1,d:i.getDate(),h:i.getHours(),i:i.getMinutes(),s:i.getSeconds(),a:i.getDay()};return r.replace(/{(y|m|d|h|i|s|a)+}/g,((e,t)=>{var i=s[t];return"a"===t?["一","二","三","四","五","六","日"][i-1]:(e.length>0&&i<10&&(i="0"+i),i||0)}))}function ka(){return"VideoFrame"in window}function Ba(e){if("string"!=typeof e)return e;var t=Number(e);return isNaN(t)?e:t}function Da(){return"xxxxxxxxxxxx4xxx".replace(/[xy]/g,(function(e){var t=16*Math.random()|0;return("x"==e?t:3&t|8).toString(16)}))}function ba(e,t){let i,r,s=!1;return function a(){for(var o=arguments.length,n=new Array(o),l=0;l<o;l++)n[l]=arguments[l];if(s)return i=n,void(r=this);s=!0,e.apply(this,n),setTimeout((()=>{s=!1,i&&(a.apply(r,i),i=null,r=null)}),t)}}function Qa(e){return"[object Number]"===Object.prototype.toString.call(e)}function Ra(){let e=!1;return"MediaSource"in self&&(self.MediaSource.isTypeSupported(Ai)||self.MediaSource.isTypeSupported(ci)||self.MediaSource.isTypeSupported(ui)||self.MediaSource.isTypeSupported(pi)||self.MediaSource.isTypeSupported(gi))&&(e=!0),e}function Ta(){const e=Sa();return"chrome"===e.type.toLowerCase()&&e.version>=107}function La(){let e=!1;return"MediaStreamTrackGenerator"in window&&(e=!0),e}function Ka(){let e=!1;return"MediaStream"in window&&(e=!0),e}function qa(e,t){let i=window.URL.createObjectURL(t),r=window.document.createElement("a");r.download=e,r.href=i;let s=window.document.createEvent("MouseEvents");s.initEvent("click",!0,!0),r.dispatchEvent(s),setTimeout((()=>{window.URL.revokeObjectURL(i)}),so()?1e3:0)}function xa(e){return null==e}function Fa(e){return!0===e||!1===e}function Ua(e){return!xa(e)}function Ga(e){let t={left:"",right:"",top:"",bottom:"",opacity:1,backgroundColor:"",image:{src:"",width:"100",height:"60"},text:{content:"",fontSize:"14",color:"#000",width:"",height:""},rect:{color:"green",lineWidth:2,width:"",height:"",fill:"",fillOpacity:.2},line:{x1:"",y1:"",x2:"",y2:"",color:"green",lineWidth:2},polygon:{color:"green",lineWidth:2,list:[],fill:"",fillOpacity:.2},html:""};const i=Object.assign(t.image,e.image||{}),r=Object.assign(t.text,e.text||{}),s=Object.assign(t.rect,e.rect||{}),a=Object.assign(t.line,e.line||{});return t=Object.assign(t,e,{image:i,text:r,rect:s,line:a}),t}function Oa(e,t){let i={container:e||"",text:"",opacity:"",angle:"",color:"",fontSize:"",fontFamily:""};return i=Object.assign(i,t),{watermark_parent_node:i.container,watermark_alpha:i.opacity,watermark_angle:i.angle,watermark_fontsize:i.fontSize,watermark_color:i.color,watermark_font:i.fontFamily,watermark_txt:i.text}}function Ja(e,t){return new Promise(((i,r)=>{let s=Ga(t);if(!s.image.src&&!s.text.content)return i(e);let a=document.createElement("canvas");a.width=t.width,a.height=t.height;let o=a.getContext("2d"),n=0,l=0;Qa(s.left)?n=s.left:Qa(s.right)&&(n=a.width-s.right),Qa(s.top)?l=s.top:Qa(s.bottom)&&(l=a.height-s.bottom);const h=new Image;h.src=e,h.onload=()=>{if(o.drawImage(h,0,0),s.image&&s.image.src){const e=new Image;e.src=s.image.src,e.setAttribute("crossOrigin","Anonymous"),e.onload=()=>{n-=s.image.width,o.drawImage(e,n,l,s.image.width,s.image.height),i(a.toDataURL(t.format,t.quality))},e.onerror=e=>{r()}}else s.text&&s.text.content&&(o.font=s.text.fontSize+"px 宋体",o.fillStyle=s.text.color,o.textAlign="right",o.fillText(s.text.content,n,l),i(a.toDataURL(t.format,t.quality)))},h.onerror=e=>{r(e)}}))}function Ya(e){var t;if(e>-1){var i=Math.floor(e/3600),r=Math.floor(e/60)%60,s=e%60;t=i<10?"0"+i+":":i+":",r<10&&(t+="0"),t+=r+":",(s=Math.round(s))<10&&(t+="0"),t+=s.toFixed(0)}return t}function Na(e,t){let i="";if(e>-1){const r=Math.floor(e/60)%60;let s=e%60;s=Math.round(s),i=r<10?"0"+r+":":r+":",s<10&&(i+="0"),i+=s,xa(t)||(t<10&&(t="0"+t),i+=":"+t)}return i}function Pa(e){let t="";if(e>-1){const i=Math.floor(e/60/60)%60;let r=Math.floor(e/60)%60,s=e%60;r=Math.round(r),t=i<10?"0"+i+":":i+":",r<10&&(t+="0"),t+=r+":",s<10&&(t+="0"),t+=s}return t}function ja(e,t){const i=Math.floor(t/60)%60,r=Math.floor(t%60);return new Date(e).setHours(i,r,0,0)}function za(e,t){const i=Math.floor(t/60/60)%60,r=Math.floor(t/60)%60,s=t%60;return new Date(e).setHours(i,r,s,0)}function Wa(e){return(""+e).length}function Za(e){return e&&0===Object.keys(e).length}function Va(e){return!Za(e)}function Ha(e){return"string"==typeof e}const Xa=()=>{const e=window.navigator.userAgent;return/MicroMessenger/i.test(e)},_a=()=>{const e=window.navigator.userAgent;return/Chrome/i.test(e)};function $a(e){const t=e||window.event;return t.target||t.srcElement}function eo(){return wa()&&function(){const e=navigator.userAgent.toLowerCase();return/macintosh|mac os x/i.test(e)}()}function to(e){return"function"==typeof e}function io(e){if(fa()){let t=0,i=0;if(1===e.touches.length){let r=e.touches[0];t=r.clientX,i=r.clientY}return{posX:t,posY:i}}let t=0,i=0;const r=e||window.event;return r.pageX||r.pageY?(t=r.pageX,i=r.pageY):(r.clientX||r.clientY)&&(t=e.clientX+document.documentElement.scrollLeft+document.body.scrollLeft,i=e.clientY+document.documentElement.scrollTop+document.body.scrollTop),{posX:t,posY:i}}function ro(){let e=document.createElement("video"),t=e.canPlayType("application/vnd.apple.mpegurl");return e=null,t}function so(){return/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream}function ao(e){let t=fo(e.hasAudio)&&(e.useMSE||e.useWCS&&!e.useOffscreen)&&fo(e.demuxUseWorker);return!!(fo(t)&&e.useMSE&&e.mseDecodeAudio&&fo(e.demuxUseWorker))||t}function oo(e){const t=e.toString().trim().match(/^function\s*\w*\s*\([\w\s,]*\)\s*{([\w\W]*?)}$/)[1];const i=new Blob([t],{type:"application/javascript"});return URL.createObjectURL(i)}function no(e){e.close()}function lo(){return"https:"===window.location.protocol||"localhost"===window.location.hostname}function ho(e){const t=Object.prototype.toString;return function(e){switch(t.call(e)){case"[object Error]":case"[object Exception]":case"[object DOMException]":return!0;default:try{return e instanceof Error}catch(e){return!1}}}(e)?e.message:null==e?"":"object"==typeof e?JSON.stringify(e,null,2):String(e)}function Ao(e,t){t&&(e=e.filter((e=>e.type&&e.type===t)));let i=e[0],r=null,s=1;if(e.length>0){let t=e[1];t&&t.ts-i.ts>1e5&&(i=t,s=2)}if(i)for(let a=s;a<e.length;a++){let s=e[a];if(t&&s.type&&s.type!==t&&(s=null),s){if(s.ts-i.ts>=1e3){e[a-1].ts-i.ts<1e3&&(r=a+1)}}}return r}function co(e){for(var t=(e+"=".repeat((4-e.length%4)%4)).replace(/\-/g,"+").replace(/_/g,"/"),i=window.atob(t),r=new Uint8Array(i.length),s=0;s<i.length;++s)r[s]=i.charCodeAt(s);return r}function uo(e){const t=/(msie|trident)/i.test(navigator.userAgent),i=document.createElement("a");let r=e;return t&&(i.setAttribute("href",r),r=i.href),i.setAttribute("href",r),{origin:i.origin,href:i.href,protocol:i.protocol?i.protocol.replace(/:$/,""):"",host:i.host,search:i.search?i.search.replace(/^\?/,""):"",hash:i.hash?i.hash.replace(/^#/,""):"",hostname:i.hostname,port:i.port,pathname:"/"===i.pathname.charAt(0)?i.pathname:"/"+i.pathname}}function po(e){let t="";if("object"==typeof e)try{t=JSON.stringify(e),t=JSON.parse(t)}catch(i){t=e}else t=e;return t}function go(){return po(ue)}function mo(){return po(pe)}function yo(e){return e[0]>>4===wr&&e[1]===Ir}function Eo(e){return!0===e||"true"===e}function fo(e){return!0!==e&&"true"!==e}function Co(e,t,i){e&&(e.dataset?e.dataset[t]=i:e.setAttribute("data-"+t,i))}function Io(e,t){return e?e.dataset?e.dataset[t]:e.getAttribute("data-"+t):""}function wo(e){return e.replace(/-([a-z])/g,(function(e,t){return t.toUpperCase()}))}function So(){return/iphone/i.test(navigator.userAgent)}function Mo(){try{var e=document.createElement("canvas");return!(!window.WebGL2RenderingContext||!e.getContext("webgl2"))}catch(e){return!1}}function vo(e){return e.trim().match(/^function\s*\w*\s*\([\w\s,]*\)\s*{([\w\W]*?)}$/)[1]}function ko(){let e=!1;return"requestVideoFrameCallback"in HTMLVideoElement.prototype&&(e=!0),e}function Bo(){let e=!1;return"PressureObserver"in window&&(e=!0),e}function Do(){return window.MediaSource&&window.MediaSource.isTypeSupported('video/mp4; codecs="hev1.1.6.L123.b0"')}function bo(){return window.MediaSource&&window.MediaSource.isTypeSupported('video/mp4; codecs="avc1.64002A"')}function Qo(){const e=Sa();return"chrome"===e.type.toLowerCase()&&e.version>=107&&("https:"===location.protocol||"localhost"===location.hostname)}function Ro(){return"VideoEncoder"in window}class To{constructor(e){this.destroys=[],this.proxy=this.proxy.bind(this),this.master=e}proxy(e,t,i){let r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(!e)return;if(Array.isArray(t))return t.map((t=>this.proxy(e,t,i,r)));e.addEventListener(t,i,r);const s=()=>{to(e.removeEventListener)&&e.removeEventListener(t,i,r)};return this.destroys.push(s),s}destroy(){this.master.debug&&this.master.debug.log("Events","destroy"),this.destroys.forEach((e=>e())),this.destroys=[]}}var Lo=1e-6,Ko="undefined"!=typeof Float32Array?Float32Array:Array;function qo(){var e=new Ko(16);return Ko!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0),e[0]=1,e[5]=1,e[10]=1,e[15]=1,e}function xo(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}Math.hypot||(Math.hypot=function(){for(var e=0,t=arguments.length;t--;)e+=arguments[t]*arguments[t];return Math.sqrt(e)});var Fo,Uo=function(e,t,i,r,s,a,o){var n=1/(t-i),l=1/(r-s),h=1/(a-o);return e[0]=-2*n,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*l,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=2*h,e[11]=0,e[12]=(t+i)*n,e[13]=(s+r)*l,e[14]=(o+a)*h,e[15]=1,e};function Go(e,t,i){var r=new Ko(3);return r[0]=e,r[1]=t,r[2]=i,r}Fo=new Ko(3),Ko!=Float32Array&&(Fo[0]=0,Fo[1]=0,Fo[2]=0);class Oo{constructor(e,t){this.gl=e,t&&this.gl.pixelStorei(this.gl.UNPACK_ALIGNMENT,1);const i=this._initShaderProgram();this._programInfo={program:i,attribLocations:{vertexPosition:e.getAttribLocation(i,"aVertexPosition"),texturePosition:e.getAttribLocation(i,"aTexturePosition")},uniformLocations:{projectionMatrix:e.getUniformLocation(i,"uProjectionMatrix"),modelMatrix:e.getUniformLocation(i,"uModelMatrix"),viewMatrix:e.getUniformLocation(i,"uViewMatrix"),rgbatexture:e.getUniformLocation(i,"rgbaTexture"),ytexture:e.getUniformLocation(i,"yTexture"),utexture:e.getUniformLocation(i,"uTexture"),vtexture:e.getUniformLocation(i,"vTexture"),isyuv:e.getUniformLocation(i,"isyuv")}},this._buffers=this._initBuffers(),this._rgbatexture=this._createTexture(),this._ytexture=this._createTexture(),this._utexture=this._createTexture(),this._vtexture=this._createTexture()}destroy(){this.gl.deleteProgram(this._programInfo.program),this.gl.deleteBuffer(this._buffers.position),this.gl.deleteBuffer(this._buffers.texPosition),this.gl.deleteBuffer(this._buffers.indices),this.gl.deleteTexture(this._rgbatexture),this.gl.deleteTexture(this._ytexture),this.gl.deleteTexture(this._utexture),this.gl.deleteTexture(this._vtexture),this._programInfo=null,this._buffers=null,this._rgbatexture=null,this._ytexture=null,this._utexture=null,this._vtexture=null}_initShaderProgram(){const e=this._loadShader(this.gl.VERTEX_SHADER,"\n attribute vec4 aVertexPosition;\n attribute vec2 aTexturePosition;\n varying lowp vec2 vTexturePosition;\n void main(void) {\n gl_Position = aVertexPosition;\n vTexturePosition = aTexturePosition;\n }\n "),t=this._loadShader(this.gl.FRAGMENT_SHADER,"\n precision highp float;\n varying highp vec2 vTexturePosition;\n uniform int isyuv;\n uniform sampler2D rgbaTexture;\n uniform sampler2D yTexture;\n uniform sampler2D uTexture;\n uniform sampler2D vTexture;\n\n const mat4 YUV2RGB = mat4( 1.1643828125, 0, 1.59602734375, -.87078515625,\n 1.1643828125, -.39176171875, -.81296875, .52959375,\n 1.1643828125, 2.017234375, 0, -1.081390625,\n 0, 0, 0, 1);\n\n\n void main(void) {\n\n if (isyuv>0) {\n\n high