UNPKG

hzwl-easy-player

Version:

基于Vue 3的视频播放器组件,支持单屏和多屏播放模式

1 lines 3.76 MB
!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"]=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);const a=1,o=2,n=3,l=4,h=5,A=6,d=8,c=9,u=["","websocket","fetch","hls","webrtc","webTransport","aliyunRtc","ts"],p="fetch",g="hls",m="websocket",y="webrtc",E="webTransport",C="worker",f="aliyunRtc",I="mp4",w="wsRtc",S="player",M="playerAudio",v="playbackTF",k="mp4",B="webm",D="flv",b="mov",Q="flv",R="m7s",T="hls",L="mp4",K="webrtc",q="webTransport",x="nakedFlow",F="fmp4",U="mpeg4",G="aliyunRtc",O="ts",J="wsRtc",Y={flv:"FLV",m7s:"M7S",hls:"HLS",fmp4:"FMP4",mpeg4:"MPEG4",webrtc:"Webrtc",webTransport:"WebTransport",nakedFlow:"裸流",aliyunRtc:"AliyunRtc",ts:"TS"},N="mse",P="wcs",j="offscreen",z="wasm",W="simd",Z="mt",V="webrtc",H="hls",X="mp4",_="wsRtc",$="aliyunRtc",ee="canvas",te="video",ie="debug",re="warn",se="click",ae="mouseDownAndUp",oe={normal:"normal",simple:"simple"},ne="6.1.0",le=36e5,he="/crypto/",Ae="EasyProv",de=1e4,ce={url:"",playbackConfig:{},fullscreenWatermarkConfig:{},playType:S,playbackForwardMaxRateDecodeIFrame:4,playOptions:{},isLive:!0,isMulti:!0,isM7sCrypto:!1,supportHls265:!1,playFailedUseLastFrameShow:!0,playFailedAndPausedShowMessage:!1,pauseAndNextPlayUseLastFrameShow:!1,widthOrHeightChangeReplayDelayTime:0,isUseNewFullscreenWatermark:!1},ue={playType:S,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:re,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:oe.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:o,demuxType:Q,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:z,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:k,checkFirstIFrame:!0,nakedFlowFps:25,audioEngine:null,isShowRecordingUI:!0,isShowZoomingUI:!0,useFaceDetector:!1,useObjectDetector:!1,useImageDetector:!1,useOcclusionDetector:!1,ptzPositionConfig:{},ptzShowType:"vertical",ptzClickType:se,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:te,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},pe="init",ge="initVideo",me="render",ye="playAudio",Ee="initAudio",Ce="audioCode",fe="audioNalu",Ie="audioAACSequenceHeader",we="videoCode",Se="videoCodec",Me="videoNalu",ve="videoPayload",ke="audioPayload",Be="wasmError",De="workerFetch",be="iframeIntervalTs",Qe="isDropping",Re="workerEnd",Te="playbackStreamVideoFps",Le="wasmDecodeVideoNoResponseError",Ke="wasmWidthOrHeightChange",qe="simdDecodeError",xe="simdH264DecodeVideoWidthIsTooLarge",Fe="closeEnd",Ue="tempStream",Ge="videoSEI",Oe="flvScriptData",Je="aacSequenceHeader",Ye="videoSequenceHeader",Ne="flvBufferData",Pe="checkFirstIFrame",je="mseHandle",ze="mseFirstRenderTime",We="mseError",Ze="Invalid NAL unit size",Ve=1,He=2,Xe=8,_e=9,$e=18,et="init",tt="decode",it="audioDecode",rt="videoDecode",st="close",at="updateConfig",ot="clearBuffer",nt="fetchStream",lt="sendWsMessage",ht="mseUpdateVideoTimestamp",At="fetch",dt="destroy",ct="destroyEnd",ut="buffer",pt="fetchError",gt="fetchClose",mt="fetchSuccess",yt={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"},Et={load:yt.load,timeUpdate:yt.timeUpdate,videoInfo:yt.videoInfo,audioInfo:yt.audioInfo,error:yt.error,kBps:yt.kBps,start:yt.start,timeout:yt.timeout,loadingTimeout:yt.loadingTimeout,loadingTimeoutRetryEnd:yt.loadingTimeoutRetryEnd,delayTimeout:yt.delayTimeout,delayTimeoutRetryEnd:yt.delayTimeoutRetryEnd,fullscreen:"fullscreen",webFullscreen:yt.webFullscreen,play:yt.play,liveEnd:yt.liveEnd,pause:yt.pause,mute:yt.mute,stats:yt.stats,performance:yt.performance,recordingTimestamp:yt.recordingTimestamp,recordStart:yt.recordStart,recordCreateError:yt.recordCreateError,recordEnd:yt.recordEnd,recordBlob:yt.recordBlob,playToRenderTimes:yt.playToRenderTimes,playbackSeek:yt.playbackSeek,playbackStats:yt.playbackStats,playbackEnd:yt.playbackEnd,playbackTimestamp:yt.playbackTimestamp,playbackPauseOrResume:yt.playbackPauseOrResume,playbackPreRateChange:yt.playbackPreRateChange,playbackRateChange:yt.playbackRateChange,playbackShowPrecisionChange:yt.playbackShowPrecisionChange,ptz:yt.ptz,streamQualityChange:yt.streamQualityChange,zooming:yt.zooming,crashLog:yt.crashLog,focus:yt.focus,blur:yt.blur,visibilityHiddenTimeout:yt.visibilityHiddenTimeout,visibilityChange:yt.visibilityChange,websocketOpen:yt.websocketOpen,websocketClose:yt.websocketClose,networkDelayTimeout:yt.networkDelayTimeout,aiObjectDetectorInfo:yt.aiObjectDetectorInfo,aiFaceDetectorInfo:yt.aiFaceDetectorInfo,aiOcclusionDetectResult:yt.aiOcclusionDetectResult,aiImageDetectResult:yt.aiImageDetectResult,playFailedAndPaused:yt.playFailedAndPaused,streamEnd:yt.streamEnd,audioResumeState:yt.audioResumeState,videoSEI:yt.videoSEI,flvMetaData:yt.flvMetaData,webrtcOnConnectionStateChange:yt.webrtcOnConnectionStateChange,webrtcOnIceConnectionStateChange:yt.webrtcOnIceConnectionStateChange,currentPts:yt.currentPts,videoSmooth:yt.videoSmooth},Ct={talkStreamClose:yt.talkStreamClose,talkStreamError:yt.talkStreamError,talkStreamInactive:yt.talkStreamInactive,talkGetUserMediaTimeout:yt.talkGetUserMediaTimeout,talkFailedAndStop:yt.talkFailedAndStop},ft={talkStreamError:yt.talkStreamError,talkStreamClose:yt.talkStreamClose},It={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:yt.mseSourceBufferFull,mseSourceBufferError:yt.mseSourceBufferError,mseAddSourceBufferError:yt.mseAddSourceBufferError,mediaSourceAppendBufferError:"mediaSourceAppendBufferError",mediaSourceTsIsMaxDiff:"mediaSourceTsIsMaxDiff",mediaSourceUseCanvasRenderPlayFailed:"mediaSourceUseCanvasRenderPlayFailed",mediaSourceBufferedIsZeroError:"mediaSourceBufferedIsZeroError",wasmDecodeError:"wasmDecodeError",wasmUseVideoRenderError:"wasmUseVideoRenderError",hlsError:"hlsError",webrtcError:"webrtcError",webrtcClosed:yt.webrtcClosed,webrtcIceCandidateError:"webrtcIceCandidateError",webglAlignmentError:"webglAlignmentError",wasmWidthOrHeightChange:"wasmWidthOrHeightChange",mseWidthOrHeightChange:"mseWidthOrHeightChange",wcsWidthOrHeightChange:"wcsWidthOrHeightChange",widthOrHeightChange:"widthOrHeightChange",tallWebsocketClosedByError:"tallWebsocketClosedByError",flvDemuxBufferSizeTooLarge:yt.flvDemuxBufferSizeTooLarge,wasmDecodeVideoNoResponseError:"wasmDecodeVideoNoResponseError",audioChannelError:"audioChannelError",simdH264DecodeVideoWidthIsTooLarge:"simdH264DecodeVideoWidthIsTooLarge",simdDecodeError:"simdDecodeError",webglContextLostError:"webglContextLostError",videoElementPlayingFailed:"videoElementPlayingFailed",videoElementPlayingFailedForWebrtc:"videoElementPlayingFailedForWebrtc",decoderWorkerInitError:"decoderWorkerInitError",videoInfoError:"videoInfoError",videoCodecIdError:"videoCodecIdError",streamEnd:yt.streamEnd,delayTimeout:yt.delayTimeout,loadingTimeout:yt.loadingTimeout,networkDelayTimeout:yt.networkDelayTimeout,aliyunRtcError:"aliyunRtcError",...ft},wt="notConnect",St="open",Mt="close",vt="error",kt={download:"download",base64:"base64",blob:"blob"},Bt="download",Dt="blob",bt={7:"H264(AVC)",12:"H265(HEVC)",99:"MPEG4"},Qt=7,Rt=12,Tt="H264(AVC)",Lt="H265(HEVC)",Kt={AAC:10,ALAW:7,MULAW:8,MP3:2},qt={AAC:"AAC",ALAW:"ALAW(g711a)",MULAW:"MULAW(g711u)",MP3:"MP3"},xt={10:"AAC",7:"ALAW",8:"MULAW",2:"MP3"},Ft={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},Ut=19,Gt=20,Ot=21,Jt=32,Yt=32,Nt=33,Pt=33,jt=34,zt=34,Wt=39,Zt=39,Vt=40,Ht=0,Xt=1,_t=2,$t="webcodecs",ei="webgl",ti="webgl2",ii="webgpu",ri="offscreen",si="mse",ai="hls",oi="webrtc",ni="key",li="delta",hi='video/mp4; codecs="avc1.64002A"',Ai='video/mp4; codecs="hev1.1.6.L123.b0"',di='video/mp4;codecs="hev1.1.6.L120.90"',ci='video/mp4;codecs="hev1.2.4.L120.90"',ui='video/mp4;codecs="hev1.3.E.L120.90"',pi='video/mp4;codecs="hev1.4.10.L120.90"',gi="ended",mi="open",yi="closed",Ei=2e3,Ci=27,fi=38,Ii=40,wi="oneHour",Si="halfHour",Mi="tenMin",vi="fiveMin",ki={oneHour:"one-hour",halfHour:"half-hour",tenMin:"ten-min",fiveMin:"five-min"},Bi=["oneHour","halfHour","tenMin","fiveMin"],Di=["up","right","down","left","left-up","right-up","left-down","right-down"],bi="stop",Qi="fiStop",Ri="zoomExpand",Ti="zoomNarrow",Li="apertureFar",Ki="apertureNear",qi="focusFar",xi="focusNear",Fi="cruiseStart",Ui="cruiseStop",Gi="fogOpen",Oi="fogClose",Ji="wiperOpen",Yi="wiperClose",Ni="g711a",Pi="g711u",ji="pcm",zi="opus",Wi={png:"image/png",jpeg:"image/jpeg",webp:"image/webp"},Zi="sourceclose",Vi="sourceopen",Hi="sourceended",Xi="startstreaming",_i="endstreaming",$i="qualitychange",er="canplay",tr="waiting",ir="timeupdate",rr="ratechange",sr="avc",ar="hevc",or="A key frame is required after configure() or flush()",nr="Cannot call 'decode' on a closed codec",lr="Unsupported configuration",hr="Decoder failure",Ar="Decoding error",dr="Decoder error",cr="HEVC decoding is not supported",ur="The user aborted a request",pr="AbortError",gr="AbortError",mr="loading",yr="playing",Er="paused",Cr="destroy",fr=0,Ir=1,wr=8,Sr=0,Mr=98,vr="empty",kr="rtp",Br="tcp",Dr="open",br="close",Qr="error",Rr="message",Tr="worklet",Lr="script",Kr={encType:Ni,packetType:kr,packetTcpSendType:Br,rtpSsrc:"0000000000",numberChannels:1,sampleRate:8e3,sampleBitsWidth:16,sendInterval:20,debug:!1,debugLevel:re,testMicrophone:!1,saveToTempFile:!1,audioBufferLength:160,engine:Tr,checkGetUserMediaTimeout:!1,getUserMediaTimeout:1e4,audioConstraints:{latency:!0,noiseSuppression:!0,autoGainControl:!0,echoCancellation:!0,sampleRate:48e3,channelCount:1}},qr="worklet",xr="script",Fr="active",Ur={name:"",index:0,icon:"",iconHover:"",iconTitle:"",activeIcon:"",activeIconHover:"",activeIconTitle:"",click:null,activeClick:null},Gr={content:"",click:null,index:0},Or=1,Jr="subtitle-segments",Yr="hls-manifest-loaded",Nr="hls-level-loaded",Pr="demuxed-track",jr="flv-script-data",zr="metadata-parsed",Wr="ttfb",Zr="load-retry",Vr="load-start",Hr="speed",Xr="load-complete",_r="load-response-headers",$r="sei",es="sei-in-time",ts="switch-url-failed",is="switch-url-success",rs="subtitle-playlist",ss="stream-parsed",as="error",os=[0,160,240,320,480,640],ns=[0,160,240,320,480,640],ls="idle",hs="buffering",As="complete",ds={1:"MEDIA_ERR_ABORTED",2:"MEDIA_ERR_NETWORK",3:"MEDIA_ERR_DECODE",4:"MEDIA_ERR_SRC_NOT_SUPPORTED"},cs="video decoder initialization failed",us="audio packet",ps=1,gs=2,ms=0,ys=1,Es=3,Cs=16,fs="candidate-pair",Is="inbound-rtp",ws="local-candidate",Ss="remote-candidate",Ms="track",vs=9e4,ks=45e4,Bs=9e4,Ds="ulaw",bs="alaw",Qs="mp3",Rs="ws1006",Ts="mseDecodeError",Ls="wcsDecodeError";class Ks{constructor(e){this.log=function(t){if(e._opt.debug&&e._opt.debugLevel==ie){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==ie||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.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 qs="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function xs(e,t){return e(t={exports:{}},t.exports),t.exports}var Fs=xs((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}}()}));Fs.isEnabled;class Us{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 Gs(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 Os(e){return Js(e)&&e[1]===fr}function Js(e){return e[0]>>4===Kt.AAC}const Ys=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350],Ns=Ys,Ps=Ys;function js(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 zs(e){return 1024*(arguments.length>1&&void 0!==arguments[1]?arguments[1]:9e4)/e}const Ws=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];function Zs(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>=Ws.length)return void console.error("Flv: AAC invalid sampling frequency index!");let n=Ws[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 Vs{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 Hs(e){let t=e.read(5);return 31===t&&(t=e.read(6)+32),t}function Xs(e,t){return t.sampling_index=e.read(4),15==t.sampling_index?e.read(24):_s[t.sampling_index]}const _s=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350,0,0,0],$s=[0,1,2,3,4,5,6,8];class ea{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 A=1===a?7:9,d=h-A;i+=A;let c=this.findNextSyncwordOffset(i+d);if(this.current_syncword_offset_=c,0!==r&&1!==r||0!==s)continue;let u=e.subarray(i,i+d);t={},t.audio_object_type=o+1,t.sampling_freq_index=n,t.sampling_frequency=Ns[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 ta{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 Us(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=Ns[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=Ns[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 ia(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 ra(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 sa(){}function aa(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 oa(e){let t=null;return t=e.getContext("webgl2"),t}function na(){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 la(){return(new Date).getTime()}function ha(e,t,i){return Math.max(Math.min(e,Math.max(t,i)),Math.min(t,i))}function Aa(e,t,i){if(e)return"object"==typeof t&&Object.keys(t).forEach((i=>{Aa(e,i,t[i])})),e.style[t]=i,e}function da(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 ca(){return performance&&"function"==typeof performance.now?performance.now():Date.now()}function ua(e){let t=0,i=ca();return r=>{if(!va(r))return;t+=r;const s=ca(),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 pa(){return/iphone|ipod|android.*mobile|windows.*phone|blackberry.*mobile/i.test(window.navigator.userAgent.toLowerCase())}function ga(){return!(pa()||/ipad|android(?!.*mobile)|tablet|kindle|silk/i.test(window.navigator.userAgent.toLowerCase()))}function ma(){const e=window.navigator.userAgent.toLowerCase();return/android/i.test(e)}function ya(){const e=window.navigator.userAgent.toLowerCase();return/firefox/i.test(e)}function Ea(){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 Ca(){const e=window.navigator.userAgent;return!e.match(/Chrome/gi)&&!!e.match(/Safari/gi)}function fa(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 Ia(){return"VideoFrame"in window}function wa(e){if("string"!=typeof e)return e;var t=Number(e);return isNaN(t)?e:t}function Sa(){return"xxxxxxxxxxxx4xxx".replace(/[xy]/g,(function(e){var t=16*Math.random()|0;return("x"==e?t:3&t|8).toString(16)}))}function Ma(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 va(e){return"[object Number]"===Object.prototype.toString.call(e)}function ka(){let e=!1;return"MediaSource"in self&&(self.MediaSource.isTypeSupported(Ai)||self.MediaSource.isTypeSupported(di)||self.MediaSource.isTypeSupported(ci)||self.MediaSource.isTypeSupported(ui)||self.MediaSource.isTypeSupported(pi))&&(e=!0),e}function Ba(){const e=Ea();return"chrome"===e.type.toLowerCase()&&e.version>=107}function Da(){let e=!1;return"MediaStreamTrackGenerator"in window&&(e=!0),e}function ba(){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)}),$a()?1e3:0)}function Ra(e){return null==e}function Ta(e){return!0===e||!1===e}function La(e){return!Ra(e)}function Ka(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 qa(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 xa(e,t){return new Promise(((i,r)=>{let s=Ka(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;va(s.left)?n=s.left:va(s.right)&&(n=a.width-s.right),va(s.top)?l=s.top:va(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 Fa(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 Ua(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,Ra(t)||(t<10&&(t="0"+t),i+=":"+t)}return i}function Ga(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 Oa(e,t){const i=Math.floor(t/60)%60,r=Math.floor(t%60);return new Date(e).setHours(i,r,0,0)}function Ja(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 Ya(e){return(""+e).length}function Na(e){return e&&0===Object.keys(e).length}function Pa(e){return!Na(e)}function ja(e){return"string"==typeof e}const za=()=>{const e=window.navigator.userAgent;return/MicroMessenger/i.test(e)},Wa=()=>{const e=window.navigator.userAgent;return/Chrome/i.test(e)};function Za(e){const t=e||window.event;return t.target||t.srcElement}function Va(){return ya()&&function(){const e=navigator.userAgent.toLowerCase();return/macintosh|mac os x/i.test(e)}()}function Ha(e){return"function"==typeof e}function Xa(e){if(pa()){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 _a(){let e=document.createElement("video"),t=e.canPlayType("application/vnd.apple.mpegurl");return e=null,t}function $a(){return/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream}function eo(e){let t=po(e.hasAudio)&&(e.useMSE||e.useWCS&&!e.useOffscreen)&&po(e.demuxUseWorker);return!!(po(t)&&e.useMSE&&e.mseDecodeAudio&&po(e.demuxUseWorker))||t}function to(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 io(e){e.close()}function ro(){return"https:"===window.location.protocol||"localhost"===window.location.hostname}function so(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 oo(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 no(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 lo(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 ho(){return lo(ce)}function Ao(){return lo(ue)}function co(e){return e[0]>>4===Ir&&e[1]===fr}function uo(e){return!0===e||"true"===e}function po(e){return!0!==e&&"true"!==e}function go(e){return e.replace(/-([a-z])/g,(function(e,t){return t.toUpperCase()}))}function mo(){return/iphone/i.test(navigator.userAgent)}function yo(){try{var e=document.createElement("canvas");return!(!window.WebGL2RenderingContext||!e.getContext("webgl2"))}catch(e){return!1}}function Eo(e){return e.trim().match(/^function\s*\w*\s*\([\w\s,]*\)\s*{([\w\W]*?)}$/)[1]}function Co(){let e=!1;return"requestVideoFrameCallback"in HTMLVideoElement.prototype&&(e=!0),e}function fo(){let e=!1;return"PressureObserver"in window&&(e=!0),e}function Io(){return window.MediaSource&&window.MediaSource.isTypeSupported('video/mp4; codecs="hev1.1.6.L123.b0"')}function wo(){return window.MediaSource&&window.MediaSource.isTypeSupported('video/mp4; codecs="avc1.64002A"')}function So(){const e=Ea();return"chrome"===e.type.toLowerCase()&&e.version>=107&&("https:"===location.protocol||"localhost"===location.hostname)}function Mo(){return"VideoEncoder"in window}class vo{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=()=>{Ha(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=[]}}class ko{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}}var Bo=1e-6,Do="undefined"!=typeof Float32Array?Float32Array:Array;function bo(){var e=new Do(16);return Do!=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 Qo(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 Ro,To=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 Lo(e,t,i){var r=new Do(3);return r[0]=e,r[1]=t,r[2]=i,r}Ro=new Do(3),Do!=Float32Array&&(Ro[0]=0,Ro[1]=0,Ro[2]=0);class Ko{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 highp float y = texture2D(yTexture, vTexturePosition).r;\n highp float u = texture2D(uTexture, vTexturePosition).r;\n highp float v = texture2D(vTexture, vTexturePosition).r;\n gl_FragColor = vec4(y, u, v, 1) * YUV2RGB;\n\n } else {\n gl_FragColor = texture2D(rgbaTexture, vTexturePosition);\n }\n }\n "),i=this.gl.createProgram();return this.gl.attachShader(i,e),this.gl.attachShader(i,t),this.gl.linkProgram(i),this.gl.getProgramParameter(i,this.gl.LINK_STATUS)?i:(console.log("Unable to initialize the shader program: "+this.gl.getProgramInfoLog(i)),null)}_loadShader(e,t){co