mirror of
https://github.com/zhw2590582/ArtPlayer.git
synced 2026-10-20 20:21:20 -08:00
remove sourceMap
This commit is contained in:
1 parent
c3343ad74f
commit
ab06749c15
105 files changed
+1665
-12149
No files matched your search
@@ -5,63 +5,4 @@
|
||||
* (c) 2017-2025 Harvey Zack
|
||||
* Released under the MIT License.
|
||||
*/
|
||||
|
||||
!function(t,e,r,s,a,n,o,l){var h="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{},d="function"==typeof h[s]&&h[s],u=d.i||{},p=d.cache||{},c="undefined"!=typeof module&&"function"==typeof module.require&&module.require.bind(module);function f(e,r){if(!p[e]){if(!t[e]){if(a[e])return a[e];var n="function"==typeof h[s]&&h[s];if(!r&&n)return n(e,!0);if(d)return d(e,!0);if(c&&"string"==typeof e)return c(e);var o=Error("Cannot find module '"+e+"'");throw o.code="MODULE_NOT_FOUND",o}u.resolve=function(r){var s=t[e][1][r];return null!=s?s:r},u.cache={};var l=p[e]=new f.Module(e);t[e][0].call(l.exports,u,l,l.exports,h)}return p[e].exports;function u(t){var e=u.resolve(t);return!1===e?{}:f(e)}}f.isParcelRequire=!0,f.Module=function(t){this.id=t,this.bundle=f,this.require=c,this.exports={}},f.modules=t,f.cache=p,f.parent=d,f.distDir=void 0,f.publicUrl=void 0,f.devServer=void 0,f.i=u,f.register=function(e,r){t[e]=[function(t,e){e.exports=r},{}]},Object.defineProperty(f,"root",{get:function(){return h[s]}}),h[s]=f;for(var m=0;m<e.length;m++)f(e[m]);if(r){var _=f(r);"object"==typeof exports&&"undefined"!=typeof module?module.exports=_:"function"==typeof define&&define.amd&&define(function(){return _})}}({"3MqzM":[function(t,e,r,s){var a=t("@parcel/transformer-js/src/esmodule-helpers.js");a.defineInteropFlag(r),a.export(r,"default",()=>o);var n=t("@webav/av-cliper");function o(t={}){return e=>{let r,s,{option:a,constructor:o}=e,{createElement:l,def:h}=o.utils,d=l("canvas"),u=d.getContext("2d"),p=null,c=null,f=null,m=null,_=0,g={playing:!1,duration:0,videoWidth:0,videoHeight:0,currentTime:0,playbackRate:1,paused:!0,ended:!1,readyState:0,buffered:0,muted:a.muted,volume:a.volume,autoplay:a.autoplay};function y(){f&&(clearInterval(f),f=null),c&&(c.stop(),c=null)}function w(){if(s){let t=g.muted?0:g.volume;s.gain.setValueAtTime(t,r.currentTime)}}async function b(){r||(s=(r=new AudioContext).createGain()).connect(r.destination);let t=1e6*g.currentTime,a=0,n=!0,o=performance.now();async function l(){if(!g.playing)return;let l=performance.now(),h=l-o;o=l,null!==m?(t=1e6*m,m=null,n=!0):t+=1e3*h*g.playbackRate,g.currentTime=t/1e6;let{state:d,video:f,audio:_}=await p.tick(Math.round(t));if(e.emit("video:timeupdate",{type:"timeupdate"}),"done"===d){y(),g.ended=!0,g.playing=!1,g.paused=!0,e.emit("video:ended",{type:"ended"});return}if(f&&"success"===d&&(u.clearRect(0,0,g.videoWidth,g.videoHeight),u.drawImage(f,0,0,g.videoWidth,g.videoHeight),f.close()),n)n=!1;else if(_?.[0]?.length){let t=r.createBuffer(2,_[0].length,48e3);t.copyToChannel(_[0],0),t.copyToChannel(_[1],1),(c=r.createBufferSource()).buffer=t,c.connect(s),c.playbackRate.setValueAtTime(g.playbackRate,r.currentTime),a=Math.max(r.currentTime,a),c.start(a),a+=t.duration/g.playbackRate}}y(),w(),g.playing=!0,g.paused=!1,f=setInterval(l,1e3/60)}async function v(t){let{video:e}=await p.tick(1e6*t);e&&(u.clearRect(0,0,d.width,d.height),u.drawImage(e,0,0,d.width,d.height),e.close())}function S(){let t=e.template?.$player;if(!t||a.autoSize)return;let r=d.videoWidth/d.videoHeight,s=t.clientWidth,n=t.clientHeight,o=0,l=0;s/n>r?o=(s-n*r)/2:l=(n-s/r)/2,Object.assign(d.style,{padding:`${l}px ${o}px`})}async function x(){if(!await n.Combinator.isSupported())throw e.notice.show="WebAV is not supported",Error("WebAV is not supported");y(),Object.assign(g,{playing:!1,duration:0,videoWidth:0,videoHeight:0,currentTime:0,playbackRate:1,paused:!0,ended:!1,readyState:0,buffered:0,muted:a.muted,volume:a.volume,autoplay:a.autoplay}),p&&(p.destroy(),e.emit("video:abort",{type:"abort"}),e.emit("video:emptied",{type:"emptied"}));try{await Promise.resolve(),g.readyState=1,e.emit("video:loadstart",{type:"loadstart"});let r=await fetch(a.url);if(!r.body)throw Error("No response body");p=new(0,n.MP4Clip)(r.body,t)}catch(t){throw g.readyState=0,e.emit("video:error",t),t}let r=await p.ready;Object.assign(g,{readyState:4,duration:Math.round(r.duration/1e6),videoWidth:r.width,videoHeight:r.height}),d.width=g.videoWidth,d.height=g.videoHeight,await v(.1),S(),e.emit("video:loadedmetadata",{type:"loadedmetadata"}),e.emit("video:durationchange",{type:"durationchange"}),e.emit("video:loadeddata",{type:"loadeddata"}),e.emit("video:canplay",{type:"canplay"}),e.emit("video:canplaythrough",{type:"canplaythrough"})}return h(d,"duration",{get:()=>g.duration}),h(d,"videoWidth",{get:()=>g.videoWidth}),h(d,"videoHeight",{get:()=>g.videoHeight}),h(d,"volume",{get:()=>g.volume,set:t=>{g.volume=Math.max(0,Math.min(1,t)),w(),e.emit("video:volumechange",{type:"volumechange"})}}),h(d,"currentTime",{get:()=>g.currentTime,set:t=>{if(g.readyState<4)return;let r=Math.max(0,Math.min(t,g.duration)),s=performance.now();s-_>16&&(_=s,m=r,g.currentTime=r,g.playing||v(r),e.emit("video:timeupdate",{type:"timeupdate"}))}}),h(d,"autoplay",{get:()=>g.autoplay,set:t=>{g.autoplay=t,t&&g.readyState>=4&&d.play()}}),h(d,"src",{get:()=>a.url,set:t=>{a.url=tLine truncated
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="${s}" height="${a}">
|
||||
<foreignObject width="100%" height="100%">
|
||||
<div xmlns="http://www.w3.org/1999/xhtml">${r.outerHTML}</div>
|
||||
</foreignObject>
|
||||
</svg>
|
||||
`.replace(/\t/g,"").replace(/#/g,"%23");return n.src=`data:image/svg+xml;charset=utf-8,${o}`,n}(t,e);await new Promise(t=>{r.onload=t});let s=new OffscreenCanvas(r.width,r.height),a=s.getContext("2d");return null==a||a.drawImage(r,0,0,r.width,r.height),await createImageBitmap(s)}function ed(t){let e=new Float32Array(t.map(t=>t.length).reduce((t,e)=>t+e)),r=0;for(let s of t)e.set(s,r),r+=s.length;return e}function eu(t){if("f32-planar"===t.format){let e=[];for(let r=0;r<t.numberOfChannels;r+=1){let s=new ArrayBuffer(t.allocationSize({planeIndex:r}));t.copyTo(s,{planeIndex:r}),e.push(new Float32Array(s))}return e}if("f32"===t.format){let e=new ArrayBuffer(t.allocationSize({planeIndex:0}));return t.copyTo(e,{planeIndex:0}),function(t,e){let r=t.length/e,s=Array.from({length:e},()=>new Float32Array(r));for(let a=0;a<r;a++)for(let r=0;r<e;r++)s[r][a]=t[a*e+r];return s}(new Float32Array(e),t.numberOfChannels)}if("s16"===t.format){let e=new ArrayBuffer(t.allocationSize({planeIndex:0}));return t.copyTo(e,{planeIndex:0}),function(t,e){let r=t.length/e,s=Array.from({length:e},()=>new Float32Array(r));for(let a=0;a<r;a++)for(let r=0;r<e;r++){let n=t[a*e+r];s[r][a]=n/32768}return s}(new Int16Array(e),t.numberOfChannels)}throw Error("Unsupported audio data format")}function ep(t){return Array(t.numberOfChannels).fill(0).map((e,r)=>t.getChannelData(r))}async function ec(t,e){var r;let s=new ImageDecoder({type:e,data:t});await Promise.all([s.completed,s.tracks.ready]);let a=(null==(r=s.tracks.selectedTrack)?void 0:r.frameCount)??1,n=[];for(let t=0;t<a;t+=1)n.push((await s.decode({frameIndex:t})).image);return n}function ef(t){var e,r;let s=Math.max(...t.map(t=>{var e;return(null==(e=t[0])?void 0:e.length)??0})),a=new Float32Array(2*s);for(let n=0;n<s;n++){let o=0,l=0;for(let s=0;s<t.length;s++){let a=(null==(e=t[s][0])?void 0:e[n])??0,h=(null==(r=t[s][1])?void 0:r[n])??a;o+=a,l+=h}a[n]=o,a[n+s]=l}return a}async function em(t,e,r){let s=t.length,a=Array(r.chanCount).fill(0).map(()=>new Float32Array(0));if(0===s)return a;let n=Math.max(...t.map(t=>t.length));if(0===n)return a;if(null==globalThis.OfflineAudioContext)return t.map(t=>new Float32Array(t7.resample(t,e,r.rate,{method:"sinc",LPF:!1})));let o=new globalThis.OfflineAudioContext(r.chanCount,n*r.rate/e,r.rate),l=o.createBufferSource(),h=o.createBuffer(s,n,e);return t.forEach((t,e)=>h.copyToChannel(t,e)),l.buffer=h,l.connect(o.destination),l.start(),ep(await o.startRendering())}function e_(t){return new Promise(e=>{let r=(0,t5.workerTimer)(()=>{r(),e()},t)})}function eg(t,e,r){let s=r-e,a=new Float32Array(s),n=0;for(;n<s;)a[n]=t[(e+n)%t.length],n+=1;return a}function ey(t,e){let r=Math.floor(t.length/e),s=new Float32Array(r);for(let a=0;a<r;a++){let r=a*e,n=Math.floor(r),o=r-n;n+1<t.length?s[a]=t[n]*(1-o)+t[n+1]*o:s[a]=t[n]}return s}let ew={sampleRate:48e3,channelCount:2,codec:"mp4a.40.2"};function eb(t,e){let r=e.videoTracks[0],s={};if(null!=r){let a=function(t){for(let e of t.mdia.minf.stbl.stsd.entries){let t=e.avcC??e.hvcC??e.av1C??e.vpcC;if(null!=t){let e=new t4.default.DataStream(void 0,0,t4.default.DataStream.BIG_ENDIAN);return t.write(e),new Uint8Array(e.buffer.slice(8))}}throw Error("avcC, hvcC, av1C or VPX not found")}(t.getTrackById(r.id)).buffer,{descKey:n,type:o}=r.codec.startsWith("avc1")?{descKey:"avcDecoderConfigRecord",type:"avc1"}:r.codec.startsWith("hvc1")?{descKey:"hevcDecoderConfigRecord",type:"hvc1"}:{descKey:"",type:""};""!==n&&(s.videoTrackConf={timescale:r.timescale,duration:r.duration,width:r.video.width,height:r.video.height,brands:e.brands,type:o,[n]:a}),s.videoDecoderConf={codec:r.codec,codedHeight:r.video.height,codedWidth:r.video.width,description:a}}let a=e.audioTracks[0];if(null!=a){let e=ev(t);s.audioTrackConf={timescale:a.timescale,samplerate:a.audio.sample_rate,channel_count:a.audio.channel_count,hdlr:"soun",type:a.codec.startsWith("mp4a")?"mp4a":a.codec,description:ev(t)},s.audioDecoderConf={codec:a.codec.startsWith("mp4a")?ew.codec:a.codec,numberOfChannels:a.audio.channel_count,sampleRate:a.audio.sample_rate,...null==e?{}:function(t){var e;let r=null==(e=t.esd.descs[0])?void 0:e.descs[0];if(null==r)return{};let[s,a]=r.data;return{sampleRate:[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350][((7&s)<<1)+(a>>7)],numberOfChannels:(127&a)>>3}}(e)}}return s}function ev(t,e="mp4a"){var r;let s=null==(r=t.moov)?void 0:r.traks.map(t=>t.mdia.minf.stbl.stsd.entries).flat().find(({type:t})=>t===e);return null==s?void 0:s.esds}async function eS(t,e,r){let s=t4.default.createFile(!1);async function a(){let e=0;for(;;){let r=await t.read(0x1e00000,{at:e});if(0===r.byteLength)break;r.fileStart=e;let a=s.appendBuffer(r);if(null==a)break;e=a}s.stop()}s.onReady=t=>{var r,a;e({mp4boxFile:s,info:t});let n=null==(r=t.videoTracks[0])?void 0:r.id;null!=n&&s.setExtractionOptions(n,"video",{nbSamples:100});let o=null==(a=t.audioTracks[0])?void 0:a.id;null!=o&&s.setExtractionOptions(o,"audio",{nbSamples:100}),s.start()},s.onSamples=r,aw
Line truncated
|
||||
${e}`}else t.push({start:eV(r[1]),end:eV(r[2]),text:""});return t},[]).map(({start:t,end:e,text:r})=>({start:1e6*t,end:1e6*e,text:r}))),0===ea(this,td).length)throw Error("No subtitles content");eo(this,tp,Object.assign(ea(this,tp),e)),eo(this,tg,null==e.textBgColor?0:(e.fontSize??50)*.2);let{fontSize:s,fontFamily:a,videoWidth:n,videoHeight:o,letterSpacing:l}=ea(this,tp);eo(this,t_,s+2*ea(this,tg)),eo(this,tc,new OffscreenCanvas(n,o)),eo(this,tf,ea(this,tc).getContext("2d")),ea(this,tf).font=`${s}px ${a}`,ea(this,tf).textAlign="center",ea(this,tf).textBaseline="top",ea(this,tf).letterSpacing=l??"0px",eo(this,tu,{width:n,height:o,duration:(null==(r=ea(this,td).at(-1))?void 0:r.end)??0}),this.ready=Promise.resolve(this.meta)}get meta(){return{...ea(this,tu)}}async tick(t){var e,r;if(null!=ea(this,tm)&&t>=ea(this,tm).timestamp&&t<=ea(this,tm).timestamp+(ea(this,tm).duration??0))return{video:ea(this,tm).clone(),state:"success"};let s=0;for(;s<ea(this,td).length&&!(t<=ea(this,td)[s].end);s+=1);let a=ea(this,td)[s]??ea(this,td).at(-1);if(t>a.end)return{state:"done"};if(t<a.start){ea(this,tf).clearRect(0,0,ea(this,tc).width,ea(this,tc).height);let r=new VideoFrame(ea(this,tc),{timestamp:t,duration:a.start-t});return null==(e=ea(this,tm))||e.close(),eo(this,tm,r),{video:r.clone(),state:"success"}}el(this,ty,tw).call(this,a.text);let n=new VideoFrame(ea(this,tc),{timestamp:t,duration:a.end-t});return null==(r=ea(this,tm))||r.close(),eo(this,tm,n),{video:n.clone(),state:"success"}}async split(e){await this.ready;let r=-1;for(let t=0;t<ea(this,td).length;t++)if(!(e>ea(this,td)[t].start)){r=t;break}if(-1===r)throw Error("Not found subtitle by time");let s=ea(this,td).slice(0,r).map(t=>({...t})),a=s.at(-1),n=null;null!=a&&a.end>e&&(n={start:0,end:a.end-e,text:a.text},a.end=e);let o=ea(this,td).slice(r).map(t=>({...t,start:t.start-e,end:t.end-e}));return null!=n&&o.unshift(n),[new t(s,ea(this,tp)),new t(o,ea(this,tp))]}async clone(){return new t(ea(this,td).slice(0),ea(this,tp))}destroy(){var t;null==(t=ea(this,tm))||t.close()}};td=new WeakMap,tu=new WeakMap,tp=new WeakMap,tc=new WeakMap,tf=new WeakMap,tm=new WeakMap,t_=new WeakMap,tg=new WeakMap,ty=new WeakSet,tw=function(t){let e=t.split(`
|
||||
`).reverse().map(t=>t.trim()),{width:r,height:s}=ea(this,tc),{color:a,fontSize:n,textBgColor:o,textShadow:l,strokeStyle:h,lineWidth:d,lineCap:u,lineJoin:p,bottomOffset:c}=ea(this,tp),f=ea(this,tf);f.clearRect(0,0,r,s),f.globalAlpha=.6;let m=c;for(let t of e){let e=f.measureText(t),c=r/2;null!=o&&(f.shadowOffsetX=0,f.shadowOffsetY=0,f.shadowBlur=0,f.fillStyle=o,f.globalAlpha=.5,f.fillRect(c-e.actualBoundingBoxLeft-ea(this,tg),s-m-ea(this,t_),e.width+2*ea(this,tg),ea(this,t_))),f.shadowColor=l.color,f.shadowOffsetX=l.offsetX,f.shadowOffsetY=l.offsetY,f.shadowBlur=l.blur,f.globalAlpha=1,null!=h&&(f.lineWidth=d??n/6,null!=u&&(f.lineCap=u),null!=p&&(f.lineJoin=p),f.strokeStyle=h,f.strokeText(t,c,s-m-ea(this,t_)+ea(this,tg))),f.fillStyle=a,f.fillText(t,c,s-m-ea(this,t_)+ea(this,tg)),m+=ea(this,t_)+.2*n}};let eH=eY;function eV(t){let e=t.match(/(\d{2}):(\d{2}):(\d{2}),(\d{3})/);if(null==e)throw Error(`time format error: ${t}`);let r=Number(e[1]),s=Number(e[2]);return 3600*r+60*s+Number(e[3])+Number(e[4])/1e3}class ej{constructor(){er(this,"readable"),er(this,"writable"),en(this,tb,0);let t=t4.default.createFile(),e=!1;this.readable=new ReadableStream({start:e=>{t.onReady=r=>{var s,a;let n=null==(s=r.videoTracks[0])?void 0:s.id;null!=n&&t.setExtractionOptions(n,"video",{nbSamples:100});let o=null==(a=r.audioTracks[0])?void 0:a.id;null!=o&&t.setExtractionOptions(o,"audio",{nbSamples:100}),e.enqueue({chunkType:"ready",data:{info:r,file:t}}),t.start()};let r={};t.onSamples=(s,a,n)=>{e.enqueue({chunkType:"samples",data:{id:s,type:a,samples:n.map(t=>({...t}))}}),r[s]=(r[s]??0)+n.length,t.releaseUsedSamples(s,r[s])},t.onFlush=()=>{e.close()}},cancel:()=>{t.stop(),e=!0}},{highWaterMark:50}),this.writable=new WritableStream({write:async r=>{if(e)return void this.writable.abort();let s=r.buffer;s.fileStart=ea(this,tb),eo(this,tb,ea(this,tb)+s.byteLength),t.appendBuffer(s)},close:()=>{var e;t.flush(),t.stop(),null==(e=t.onFlush)||e.call(t)}})}}async function eZ(t){let e=t4.default.createFile(),r=function(t){let e=0,r=t.boxes,s=[],a=0;async function n(){let n=f(r,e);e=r.length,s.forEach(({track:e,id:r})=>{let s=e.samples.at(-1);null!=s&&(a=Math.max(a,s.cts+s.duration)),t.releaseUsedSamples(r,e.samples.length),e.samples=[]}),t.mdats=[],t.moofs=[],null!=n&&await (null==u?void 0:u.write(n))}let o=[];function l(){if(o.length>0)return!0;let a=r.findIndex(t=>"moov"===t.type);if(-1===a)return!1;if(o=r.slice(0,a+1),e=a+1,0===s.length)for(let e=1;;e+=1){let r=t.getTrackById(e);if(null==r)break;s.push({track:r,id:e})}return!0}let h=0,d=(0,t9.tmpfile)(),u=null,p=(async()=>{u=await d.createWriter(),h=self.setInterval(()=>{l()&&n()},100)})(),c=!1;return async()=>{if(c)throw Error("File exported");if(c=!0,await p,clearInterval(h),!l()||null==u)return null;t.flush(),await n(),await (null==u?void 0:u.close());let e=o.find(t=>"moov"===t.type);if(null==e)return null;e.mvhd.duration=a;let r=(0,t9.tmpfile)(),s=f(o,0);return await (0,t9.write)(r,s),await (0,t9.write)(r,d,{overwrite:!1}),await r.stream()};function f(t,e){if(e>=t.length)return null;let r=new t4.default.DataStream;r.endianness=t4.default.DataStream.BIG_ENDIAN;for(let s=e;s<t.length;s++)null!==t[s]&&(t[s].write(r),delete t[s]);return new Uint8Array(r.buffer)}}(e);await eX(t,e);let s=await r();if(null==s)throw Error("Can not generate file from streams");return s}async function eX(t,e){let r=0,s=0,a=0,n=0,o=0,l=0,h=null,d=null;for(let u of t)await new Promise(async t=>{(0,t5.autoReadStream)(u.pipeThrough(new ej),{onDone:t,onChunk:async({chunkType:t,data:u})=>{if("ready"===t){let{videoTrackConf:t,audioTrackConf:s}=eb(u.file,u.info);0===r&&null!=t&&(r=e.addTrack(t)),0===n&&null!=s&&(n=e.addTrack(s))}else if("samples"===t){let{type:t,samples:p}=u,c="video"===t?r:n,f="video"===t?s:o,m="video"===t?a:l;p.forEach(t=>{e.addSample(c,t.data,{duration:t.duration,dts:t.dts+f,cts:t.cts+m,is_sync:t.is_sync})});let _=p.at(-1);if(null==_)return;"video"===t?h=_:"audio"===t&&(d=_)}}})}),null!=h&&(s+=h.dts,a+=h.cts),null!=d&&(o+=d.dts,l+=d.cts)}async function e$(t){return await eZ([t])}function eK(t,e){t5.Log.info("mixinMP4AndAudio, opts:",{volume:e.volume,loop:e.loop});let r=t4.default.createFile(),{stream:s,stop:a}=(0,t5.file2stream)(r,500),n=null,o=null,l=[],h=0,d=0,u=0,p=!0,c=ew.sampleRate;function f(t){let r=l.map(r=>e.loop?eg(r,u,u+t):r.slice(u,u+t));if(u+=t,1!==e.volume)for(let t of r)for(let r=0;r<t.length;r++)t[r]*=e.volume;return r}async function m(t){let e=t[0],r=t[t.length-1],s=ef([f(Math.floor((r.cts+r.duration-e.cts)/r.timescale*c))]);0!==s.length&&(null==o||o.encode(s,e.cts/e.timescale*1e6))}async function _(t){if(null==n)return;let e=function(t){let e=[];for(let r=0;r<t.length;r+=1)for(let s=0;s<t[r].length;s+=1)null==e[s]&&(e[s]=[]),e[s].push(t[r][s]);return e.map(ed)}((await n.decode(t)).map(eu)),r=f(e[0].length),s=t[0];null==o||o.encode(ef([e,r]),s.cts/s.timescale*1e6)}return(0,t5.autoReadStream)(t.pipeThrough(new ej),{onDone:async()=>{await (null==o?void 0:o.stop()),null==n||n.close(
Line truncated
|
||||
layout (location = 0) in vec4 a_position;
|
||||
layout (location = 1) in vec2 a_texCoord;
|
||||
out vec2 v_texCoord;
|
||||
void main () {
|
||||
gl_Position = a_position;
|
||||
v_texCoord = a_texCoord;
|
||||
}
|
||||
`,eJ=`#version 300 es
|
||||
precision mediump float;
|
||||
out vec4 FragColor;
|
||||
in vec2 v_texCoord;
|
||||
|
||||
uniform sampler2D frameTexture;
|
||||
uniform vec3 keyColor;
|
||||
|
||||
// \u{8272}\u{5EA6}\u{7684}\u{76F8}\u{4F3C}\u{5EA6}\u{8BA1}\u{7B97}
|
||||
uniform float similarity;
|
||||
// \u{900F}\u{660E}\u{5EA6}\u{7684}\u{5E73}\u{6ED1}\u{5EA6}\u{8BA1}\u{7B97}
|
||||
uniform float smoothness;
|
||||
// \u{964D}\u{4F4E}\u{7EFF}\u{5E55}\u{9971}\u{548C}\u{5EA6}\u{FF0C}\u{63D0}\u{9AD8}\u{62A0}\u{56FE}\u{51C6}\u{786E}\u{5EA6}
|
||||
uniform float spill;
|
||||
|
||||
vec2 RGBtoUV(vec3 rgb) {
|
||||
return vec2(
|
||||
rgb.r * -0.169 + rgb.g * -0.331 + rgb.b * 0.5 + 0.5,
|
||||
rgb.r * 0.5 + rgb.g * -0.419 + rgb.b * -0.081 + 0.5
|
||||
);
|
||||
}
|
||||
|
||||
void main() {
|
||||
// \u{83B7}\u{53D6}\u{5F53}\u{524D}\u{50CF}\u{7D20}\u{7684}rgba\u{503C}
|
||||
vec4 rgba = texture(frameTexture, v_texCoord);
|
||||
// \u{8BA1}\u{7B97}\u{5F53}\u{524D}\u{50CF}\u{7D20}\u{4E0E}\u{7EFF}\u{5E55}\u{50CF}\u{7D20}\u{7684}\u{8272}\u{5EA6}\u{5DEE}\u{503C}
|
||||
vec2 chromaVec = RGBtoUV(rgba.rgb) - RGBtoUV(keyColor);
|
||||
// \u{8BA1}\u{7B97}\u{5F53}\u{524D}\u{50CF}\u{7D20}\u{4E0E}\u{7EFF}\u{5E55}\u{50CF}\u{7D20}\u{7684}\u{8272}\u{5EA6}\u{8DDD}\u{79BB}\u{FF08}\u{5411}\u{91CF}\u{957F}\u{5EA6}\u{FF09}, \u{8D8A}\u{76F8}\u{50CF}\u{5219}\u{8272}\u{5EA6}\u{8DDD}\u{79BB}\u{8D8A}\u{5C0F}
|
||||
float chromaDist = sqrt(dot(chromaVec, chromaVec));
|
||||
// \u{8BBE}\u{7F6E}\u{4E86}\u{4E00}\u{4E2A}\u{76F8}\u{4F3C}\u{5EA6}\u{9608}\u{503C}\u{FF0C}baseMask\u{4E3A}\u{8D1F}\u{FF0C}\u{5219}\u{8868}\u{660E}\u{662F}\u{7EFF}\u{5E55}\u{FF0C}\u{4E3A}\u{6B63}\u{5219}\u{8868}\u{660E}\u{4E0D}\u{662F}\u{7EFF}\u{5E55}
|
||||
float baseMask = chromaDist - similarity;
|
||||
// \u{5982}\u{679C}baseMask\u{4E3A}\u{8D1F}\u{6570}\u{FF0C}fullMask\u{7B49}\u{4E8E}0\u{FF1B}baseMask\u{4E3A}\u{6B63}\u{6570}\u{FF0C}\u{8D8A}\u{5927}\u{FF0C}\u{5219}\u{900F}\u{660E}\u{5EA6}\u{8D8A}\u{4F4E}
|
||||
float fullMask = pow(clamp(baseMask / smoothness, 0., 1.), 1.5);
|
||||
rgba.a = fullMask; // \u{8BBE}\u{7F6E}\u{900F}\u{660E}\u{5EA6}
|
||||
// \u{5982}\u{679C}baseMask\u{4E3A}\u{8D1F}\u{6570}\u{FF0C}spillVal\u{7B49}\u{4E8E}0\u{FF1B}baseMask\u{4E3A}\u{6574}\u{6570}\u{FF0C}\u{8D8A}\u{5C0F}\u{FF0C}\u{9971}\u{548C}\u{5EA6}\u{8D8A}\u{4F4E}
|
||||
float spillVal = pow(clamp(baseMask / spill, 0., 1.), 1.5);
|
||||
float desat = clamp(rgba.r * 0.2126 + rgba.g * 0.7152 + rgba.b * 0.0722, 0., 1.); // \u{8BA1}\u{7B97}\u{5F53}\u{524D}\u{50CF}\u{7D20}\u{7684}\u{7070}\u{5EA6}\u{503C}
|
||||
rgba.rgb = mix(vec3(desat, desat, desat), rgba.rgb, spillVal);
|
||||
FragColor = rgba;
|
||||
}
|
||||
`,eq=[-1,1,-1,-1,1,-1,1,-1,1,1,-1,1],e0=[0,1,0,0,1,0,1,0,1,1,0,1];function e1(t,e,r){let s=t.createShader(e);if(t.shaderSource(s,r),t.compileShader(s),!t.getShaderParameter(s,t.COMPILE_STATUS)){let e=t.getShaderInfoLog(s);throw t.deleteShader(s),Error(e??"An error occurred compiling the shaders")}return s}let e2=t=>{let e=null,r=null,s=t.keyColor,a=null;return async n=>{var o,l;if((null==e||null==r||null==a)&&(null==s&&(s=function(t){let e=new OffscreenCanvas(1,1).getContext("2d");e.drawImage(t,0,0);let{data:[r,s,a]}=e.getImageData(0,0,1,1);return[r,s,a]}(n)),{cvs:e,gl:r}=function(t){let e="document"in globalThis?globalThis.document.createElement("canvas"):new OffscreenCanvas(t.width,t.height);e.width=t.width,e.height=t.height;let r=e.getContext("webgl2",{premultipliedAlpha:!1,alpha:!0});if(null==r)throw Error("Cant create gl context");let s=function(t,e,r){let s=e1(t,t.VERTEX_SHADER,e),a=e1(t,t.FRAGMENT_SHADER,r),n=t.createProgram();if(t.attachShader(n,s),t.attachShader(n,a),t.linkProgram(n),!t.getProgramParameter(n,t.LINK_STATUS))throw Error(t.getProgramInfoLog(n)??"Unable to initialize the shader program");return n}(r,eQ,eJ);r.useProgram(s),r.uniform3fv(r.getUniformLocation(s,"keyColor"),t.keyColor.map(t=>t/255)),r.uniform1f(r.getUniformLocation(s,"similarity"),t.similarity),r.uniform1f(r.getUniformLocation(s,"smoothness"),t.smoothness),r.uniform1f(r.getUniformLocation(s,"spill"),t.spill);let a=r.createBuffer();r.bindBuffer(r.ARRAY_BUFFER,a),r.bufferData(r.ARRAY_BUFFER,new Float32Array(eq),r.STATIC_DRAW);let n=r.getAttribLocation(s,"a_position");r.vertexAttribPointer(n,2,r.FLOAT,!1,2*Float32Array.BYTES_PER_ELEMENT,0),r.enableVertexAttribArray(n);let o=r.createBuffer();r.bindBuffer(r.ARRAY_BUFFER,o),r.bufferData(r.ARRAY_BUFFER,new Float32Array(e0),r.STATIC_DRAW);let l=r.getAttribLocation(s,"a_texCoord");return r.vertexAttribPointer(l,2,r.FLOAT,!1,2*Float32Array.BYTES_PER_ELEMENT,0),r.enableVertexAttribArray(l),r.pixelStorei(r.UNPACK_FLIP_Y_WEBGL,1),{cvs:e,gl:r}}({...n instanceof VideoFrame?{width:n.codedWidth,height:n.codedHeight}:{width:n.width,height:n.height},keyColor:s,...t}),a=function(t){let e=t.createTexture();if(null==e)throw Error("Create WebGL texture error");t.bindTexture(t.TEXTURE_2D,e);let r=t.RGBA,s=t.RGBA,a=t.UNSIGNED_BYTE,n=new Uint8Array([0,0,255,255]);return t.texImage2D(t.TEXTURE_2D,0,r,1,1,0,s,a,n),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),e}(r)),o=r,l=a,o.bindTexture(o.TEXTURE_2D,l),o.texImage2D(o.TEXTURE_2D,0,o.RGBA,o.RGBA,o.UNSIGNED_BYTE,n),o.drawArrays(o.TRIANGLES,0,6),null!=globalThis.VideoFrame&&n instanceof globalThis.VideoFrame){let t=new VideoFrame(e,{alpha:"keep",timestamp:n.timestamp,duration:n.duration??void 0});return n.close(),t}return createImageBitmap(e,{imageOrientation:n instanceof ImageBitmap?"flipY":"none"})}},e3=class t{constructor(t,e,r,s,a){en(this,tC),en(this,tv,new(0,t5.EventTool)),er(this,"on",ea(this,tv).on),en(this,tS,0),en(this,tx,0),en(this,tU,0),en(this,tE,0),en(this,tA,0),en(this,tk,null),er(this,"fixedAspectRatio",!1),er(this,"fixedScaleCenter",!1),this.x=t??0,this.y=e??0,this.w=r??0,this.h=s??0,eo(this,tk,a??null)}get x(){return ea(this,tS)}set x(t){el(this,tC,tT).call(this,"x",t)}get y(){return ea(this,tx)}set y(t){el(this,tC,tT).call(this,"y",t)}get w(){return ea(this,tU)}set w(t){el(this,tC,tT).call(this,"w",t)}get h(){return ea(this,tE)}set h(t){el(this,tC,tT).call(this,"h",t)}get angle(){return ea(this,tA)}set angle(t){el(this,tC,tT).call(this,"angle",t)}get center(){let{x:t,y:e,w:r,h:s}=this;return{x:t+r/2,y:e+s/2}}clone(){let{x:e,y:r,w:s,h:a}=this,n=new t(e,r,s,a,ea(this,tk));return n.angle=this.angle,n.fixedAspectRatio=this.fixedAspectRatio,n.fixedScaleCenter=this.fixedScaleCenter,n}checkHit(t,e){var r,s;let{angle:a,center:n,x:o,y:l,w:h,h:d}=this,u=(null==(r=ea(this,tk))?void 0:r.center)??n,p=(null==(s=ea(this,tk))?void 0:s.angle)??a;null==ea(this,tk)&&(o-=u.x,l-=u.y);let c=t-u.x,f=e-u.y,m=c,_=f;return 0!==p&&(m=c*Math.cos(p)+f*Math.sin(p),_=f*Math.cos(p)-c*Math.sin(p)),!(m<o||m>o+h||_<l||_>l+d)}};tv=new WeakMap,tS=new WeakMap,tx=new WeakMap,tU=new WeakMap,tE=new WeakMap,tA=new WeakMap,tC=new WeakSet,tT=function(t,e){let r=this[t]!==e;switch(t){case"x":eo(this,tS,e);break;case"y":eo(this,tx,e);break;case"w":eo(this,tU,e);break;case"h":eo(this,tE,e);break;case"angle":eo(this,tA,e)}r&&ea(this,tv).emit("propsChange",{[t]:e})},tk=new WeakMap;let e6=e3;class e8{constructor(){er(this,"rect",new e6),en(this,tB,{offset:0,duration:0,playbackRate:1}),en(this,tF,new(0,t5.EventTool)),er(this,"on",ea(this,tF).on),en(this,tI,0),er(this,"opacity",1),er(this,"flip",null),en(this,tz,null),en(this,tP,null),er(this,"ready",Promise.resolve()),this.rect.on("propsChange",t=>{ea(this,tF).emit("propsChange",{rect:t})})}get time(){return ea(this,tB)}set time(t){Object
Line truncated
|
||||
`,"")};function P(t){z.info("recodemux opts:",t);let e=l.default.createFile(),r=new _,s=(t,e)=>{let r=t.add("udta").add("meta");r.data=T(e),r.size=r.data.byteLength},a=!1,n=()=>{null==e.moov||a||(a=!0,null!=t.metaDataTags&&s(e.moov,t.metaDataTags),null!=t.duration&&(e.moov.mvhd.duration=t.duration))};r.once("VideoReady",n),r.once("AudioReady",n);let o=null!=t.video?function(t,e,r){let s={timescale:1e6,width:t.width,height:t.height,brands:["isom","iso2","avc1","mp42","mp41"],avcDecoderConfigRecord:null,name:"Track created with WebAV"},a=-1,n=!1;r.once("AudioReady",()=>{n=!0});let o={encoder0:[],encoder1:[]},l=(t,n,l)=>{var h;if(-1===a&&null!=l){let t=null==(h=l.decoderConfig)?void 0:h.description;(function(t){let e=new Uint8Array(t);e[2].toString(2).slice(-2).includes("1")&&(e[2]=0)})(t),s.avcDecoderConfigRecord=t,a=e.addTrack(s),r.emit("VideoReady"),z.info("VideoEncoder, video track ready, trackId:",a)}o[t].push(R(n))},h="encoder1",d=0,u=Math.floor(1e3/t.expectFPS*1e3);function p(){if(!n)return;let t="encoder1"===h?"encoder0":"encoder1",e=o[h],r=o[t];if(0===e.length&&0===r.length)return;let s=e[0];if(null!=s&&(!s.is_sync||s.cts-d<u)){let t=c(e);t>d&&(d=t)}let a=r[0];if(null!=a&&a.is_sync&&a.cts-d<u){h=t,p();return}if(null!=s&&s.is_sync&&null!=a&&a.is_sync)if(s.cts<=a.cts){let t=c(e);t>d&&(d=t)}else{h=t,p();return}}function c(t){let r=-1,s=0;for(;s<t.length;s++){let n=t[s];if(s>0&&n.is_sync)break;e.addSample(a,n.data,n),r=n.cts+n.duration}return t.splice(0,s),r}let f=v(p,15),m=L(t,(t,e)=>l("encoder0",t,e)),_=L(t,(t,e)=>l("encoder1",t,e)),g=0;return{get encodeQueueSize(){return m.encodeQueueSize+_.encodeQueueSize},encode:(t,e)=>{try{e.keyFrame&&(g+=1),(g%2==0?m:_).encode(t,e)}catch(s){let r=`encode video frame error: ${s.message}, state: ${JSON.stringify({ts:t.timestamp,keyFrame:e.keyFrame,duration:t.duration,gopId:g})}`;throw z.error(r),Error(r)}},flush:async()=>{await Promise.all(["configured"===m.state?await m.flush():null,"configured"===_.state?await _.flush():null]),f(),p()},close:()=>{"configured"===m.state&&m.close(),"configured"===_.state&&_.close()}}}(t.video,e,r):null,h=null!=t.audio?function(t,e,r){let s={timescale:1e6,samplerate:t.sampleRate,channel_count:t.channelCount,hdlr:"soun",type:"aac"===t.codec?"mp4a":"Opus",name:"Track created with WebAV"},a=-1,n=[],o=!1;r.once("VideoReady",()=>{o=!0,n.forEach(t=>{let r=R(t);e.addSample(a,r.data,r)}),n=[]});let h={codec:"aac"===t.codec?"mp4a.40.2":"opus",sampleRate:t.sampleRate,numberOfChannels:t.channelCount,bitrate:128e3},d=new AudioEncoder({error:t=>{let e=`AudioEncoder error: ${t.message}, config: ${JSON.stringify(h)}, state: ${JSON.stringify({qSize:d.encodeQueueSize,state:d.state})}`;throw z.error(e),Error(e)},output:(t,h)=>{var d;if(-1===a){let t=null==(d=h.decoderConfig)?void 0:d.description;a=e.addTrack({...s,description:null==t?void 0:function(t){let e=t.byteLength,r=new Uint8Array([0,0,0,0,3,23+e,0,2,0,4,18+e,64,21,0,0,0,0,0,0,0,0,0,0,0,5,e,...new Uint8Array(t instanceof ArrayBuffer?t:t.buffer),6,1,2]),s=new l.default.BoxParser.esdsBox(r.byteLength);return s.hdr_size=0,s.parse(new l.default.DataStream(r,0,l.default.DataStream.BIG_ENDIAN)),s}(t)}),r.emit("AudioReady"),z.info("AudioEncoder, audio track ready, trackId:",a)}if(o){let r=R(t);e.addSample(a,r.data,r)}else n.push(t)}});return d.configure(h),d}(t.audio,e,r):null;return null==t.video&&r.emit("VideoReady"),null==t.audio&&r.emit("AudioReady"),{encodeVideo:(t,e)=>{null==o||o.encode(t,e),t.close()},encodeAudio:t=>{if(null!=h)try{h.encode(t),t.close()}catch(e){let t=`encode audio chunk error: ${e.message}, state: ${JSON.stringify({qSize:h.encodeQueueSize,state:h.state})}`;throw z.error(t),Error(t)}},getEncodeQueueSize:()=>(null==o?void 0:o.encodeQueueSize)??(null==h?void 0:h.encodeQueueSize)??0,flush:async()=>{await Promise.all([null==o?void 0:o.flush(),(null==h?void 0:h.state)==="configured"?h.flush():null])},close:()=>{r.destroy(),null==o||o.close(),(null==h?void 0:h.state)==="configured"&&h.close()},mp4file:e}}function L(t,e){let r={codec:t.codec,framerate:t.expectFPS,hardwareAcceleration:t.__unsafe_hardwareAcceleration__,bitrate:t.bitrate,width:t.width,height:t.height,alpha:"discard",avc:{format:"avc"}},s=new VideoEncoder({error:t=>{let e=`VideoEncoder error: ${t.message}, config: ${JSON.stringify(r)}, state: ${JSON.stringify({qSize:s.encodeQueueSize,state:s.state})}`;throw z.error(e),Error(e)},output:e});return s.configure(r),s}function R(t){let e=new ArrayBuffer(t.byteLength);t.copyTo(e);let r=t.timestamp;return{duration:t.duration??0,dts:r,cts:r,is_sync:"key"===t.type,data:e}}I.set(z.debug,0),I.set(z.info,1),I.set(z.warn,2),I.set(z.error,3),async function(){await Promise.resolve(),null!=globalThis.navigator&&null!=globalThis.document&&(z.info(`@webav version: 1.1.0, date: ${new Date().toLocaleDateString()}`),z.info(globalThis.navigator.userAgent),document.addEventListener("visibilitychange",()=>{z.info(`visibilitychange: ${document.visibilityState}`)}),"PressureObserver"in globalThis&&
Line truncated
|
||||
//# sourceMappingURL=index.js.map
|
||||
!function(t,e,r,s,a,n,o,l){var h="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{},d="function"==typeof h[s]&&h[s],u=d.i||{},p=d.cache||{},c="undefined"!=typeof module&&"function"==typeof module.require&&module.require.bind(module);function f(e,r){if(!p[e]){if(!t[e]){if(a[e])return a[e];var n="function"==typeof h[s]&&h[s];if(!r&&n)return n(e,!0);if(d)return d(e,!0);if(c&&"string"==typeof e)return c(e);var o=Error("Cannot find module '"+e+"'");throw o.code="MODULE_NOT_FOUND",o}u.resolve=function(r){var s=t[e][1][r];return null!=s?s:r},u.cache={};var l=p[e]=new f.Module(e);t[e][0].call(l.exports,u,l,l.exports,h)}return p[e].exports;function u(t){var e=u.resolve(t);return!1===e?{}:f(e)}}f.isParcelRequire=!0,f.Module=function(t){this.id=t,this.bundle=f,this.require=c,this.exports={}},f.modules=t,f.cache=p,f.parent=d,f.distDir=void 0,f.publicUrl=void 0,f.devServer=void 0,f.i=u,f.register=function(e,r){t[e]=[function(t,e){e.exports=r},{}]},Object.defineProperty(f,"root",{get:function(){return h[s]}}),h[s]=f;for(var m=0;m<e.length;m++)f(e[m]);if(r){var _=f(r);"object"==typeof exports&&"undefined"!=typeof module?module.exports=_:"function"==typeof define&&define.amd&&define(function(){return _})}}({"5U85I":[function(t,e,r,s){var a=t("@parcel/transformer-js/src/esmodule-helpers.js");a.defineInteropFlag(r),a.export(r,"default",()=>o);var n=t("@webav/av-cliper");function o(t={}){return e=>{let r,s,{option:a,constructor:o}=e,{createElement:l,def:h}=o.utils,d=l("canvas"),u=d.getContext("2d"),p=null,c=null,f=null,m=null,_=0,g={playing:!1,duration:0,videoWidth:0,videoHeight:0,currentTime:0,playbackRate:1,paused:!0,ended:!1,readyState:0,buffered:0,muted:a.muted,volume:a.volume,autoplay:a.autoplay};function y(){f&&(clearInterval(f),f=null),c&&(c.stop(),c=null)}function w(){if(s){let t=g.muted?0:g.volume;s.gain.setValueAtTime(t,r.currentTime)}}async function b(){r||(s=(r=new AudioContext).createGain()).connect(r.destination);let t=1e6*g.currentTime,a=0,n=!0,o=performance.now();async function l(){if(!g.playing)return;let l=performance.now(),h=l-o;o=l,null!==m?(t=1e6*m,m=null,n=!0):t+=1e3*h*g.playbackRate,g.currentTime=t/1e6;let{state:d,video:f,audio:_}=await p.tick(Math.round(t));if(e.emit("video:timeupdate",{type:"timeupdate"}),"done"===d){y(),g.ended=!0,g.playing=!1,g.paused=!0,e.emit("video:ended",{type:"ended"});return}if(f&&"success"===d&&(u.clearRect(0,0,g.videoWidth,g.videoHeight),u.drawImage(f,0,0,g.videoWidth,g.videoHeight),f.close()),n)n=!1;else if(_?.[0]?.length){let t=r.createBuffer(2,_[0].length,48e3);t.copyToChannel(_[0],0),t.copyToChannel(_[1],1),(c=r.createBufferSource()).buffer=t,c.connect(s),c.playbackRate.setValueAtTime(g.playbackRate,r.currentTime),a=Math.max(r.currentTime,a),c.start(a),a+=t.duration/g.playbackRate}}y(),w(),g.playing=!0,g.paused=!1,f=setInterval(l,1e3/60)}async function v(t){let{video:e}=await p.tick(1e6*t);e&&(u.clearRect(0,0,d.width,d.height),u.drawImage(e,0,0,d.width,d.height),e.close())}function S(){let t=e.template?.$player;if(!t||a.autoSize)return;let r=d.videoWidth/d.videoHeight,s=t.clientWidth,n=t.clientHeight,o=0,l=0;s/n>r?o=(s-n*r)/2:l=(n-s/r)/2,Object.assign(d.style,{padding:`${l}px ${o}px`})}async function x(){if(!await n.Combinator.isSupported())throw e.notice.show="WebAV is not supported",Error("WebAV is not supported");y(),Object.assign(g,{playing:!1,duration:0,videoWidth:0,videoHeight:0,currentTime:0,playbackRate:1,paused:!0,ended:!1,readyState:0,buffered:0,muted:a.muted,volume:a.volume,autoplay:a.autoplay}),p&&(p.destroy(),e.emit("video:abort",{type:"abort"}),e.emit("video:emptied",{type:"emptied"}));try{await Promise.resolve(),g.readyState=1,e.emit("video:loadstart",{type:"loadstart"});let r=await fetch(a.url);if(!r.body)throw Error("No response body");p=new(0,n.MP4Clip)(r.body,t)}catch(t){throw g.readyState=0,e.emit("video:error",t),t}let r=await p.ready;Object.assign(g,{readyState:4,duration:Math.round(r.duration/1e6),videoWidth:r.width,videoHeight:r.height}),d.width=g.videoWidth,d.height=g.videoHeight,await v(.1),S(),e.emit("video:loadedmetadata",{type:"loadedmetadata"}),e.emit("video:durationchange",{type:"durationchange"}),e.emit("video:loadeddata",{type:"loadeddata"}),e.emit("video:canplay",{type:"canplay"}),e.emit("video:canplaythrough",{type:"canplaythrough"})}return h(d,"duration",{get:()=>g.duration}),h(d,"videoWidth",{get:()=>g.videoWidth}),h(d,"videoHeight",{get:()=>g.videoHeight}),h(d,"volume",{get:()=>g.volume,set:t=>{g.volume=Math.max(0,Math.min(1,t)),w(),e.emit("video:volumechange",{type:"volumechange"})}}),h(d,"currentTime",{get:()=>g.currentTime,set:t=>{if(g.readyState<4)return;let r=Math.max(0,Math.min(t,g.duration)),s=performance.now();s-_>16&&(_=s,m=r,g.currentTime=r,g.playing||v(r),e.emit("video:timeupdate",{type:"timeupdate"}))}}),h(d,"autoplay",{get:()=>g.autoplay,set:t=>{g.autoplay=t,t&&g.readyState>=4&&d.play()}}),h(d,"src",{get:()=>a.url,set:t=>{a.url=tLine truncated
|
||||
Reference in new issue
Block a user