quickvo-player 0.3.4 → 0.3.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -104,7 +104,7 @@ class N {
104
104
  this.worker.postMessage({ action: "destroy" }), this.worker.terminate();
105
105
  };
106
106
  }
107
- const S = `(function(){"use strict";class l{renderMap=new Map;constructor(){}push=async t=>{const{timestamp:s}=t,{bitmap:e}=t;if(e.height===0||e.width===0)return e.close();try{const n=[...this.renderMap.keys()];for(const i of n){const a=this.renderMap.get(i);if(!a)continue;const{pause:y=!1,writer:h,offscreen:c,option:u}=a;if(y===!0)continue;const f=r=>{if(h){const o=new VideoFrame(r,{timestamp:s});try{o&&h.write(o)}catch{}o.close()}else c&&(c.width=r.width,c.height=r.height,c?.getContext("2d")?.drawImage(r,0,0))};if(i==="default")f(e);else if(u){const{sx:r=0,sy:o=0,sw:p=e.width,sh:g=e.height}=u,M=await createImageBitmap(e,r,o,p,g);f(M)}}}catch{}e.close()};addCut=t=>{const{key:s,writable:e,offscreen:n,option:i}={key:"default",...t};if(e){const a=e.getWriter();this.renderMap.set(s,{writer:a,option:i,pause:!1})}else this.renderMap.set(s,{offscreen:n,option:i,pause:!1})};delCut=t=>{this.renderMap.delete(t)};setCut=t=>{const{key:s,cutOption:e}={key:"default",...t},n=this.renderMap.get(s);n&&this.renderMap.set(s,{...n,option:e})};setPause=t=>{const{key:s,pause:e}={key:"default",...t},n=this.renderMap.get(s);n&&this.renderMap.set(s,{...n,pause:e})};destroy=()=>{this.renderMap=new Map}}const w=new l;onmessage=d=>{const{action:t,data:s}=d.data,e=w[t];e&&e(s)}})();
107
+ const S = `(function(){"use strict";class w{renderMap=new Map;constructor(){}push=async t=>{const{timestamp:s}=t,{bitmap:e}=t;try{const n=[...this.renderMap.keys()];for(const a of n){const i=this.renderMap.get(a);if(!i)continue;const{pause:y=!1,writer:u,offscreen:o,option:f}=i;if(y===!0)continue;const h=async r=>{if(u){const c=new VideoFrame(r,{timestamp:s});try{await u.write(c)}catch{}c.close()}else o&&(o.width=r.width,o.height=r.height,o?.getContext("2d")?.drawImage(r,0,0))};if(a==="default")await h(e);else if(f){const{sx:r=0,sy:c=0,sw:p=e.width,sh:M=e.height}=f,g=await createImageBitmap(e,r,c,p,M);await h(g)}}}catch{}e.close()};addCut=t=>{const{key:s,writable:e,offscreen:n,option:a}={key:"default",...t};if(e){const i=e.getWriter();this.renderMap.set(s,{writer:i,option:a,pause:!1})}else this.renderMap.set(s,{offscreen:n,option:a,pause:!1})};delCut=t=>{this.renderMap.delete(t)};setCut=t=>{const{key:s,cutOption:e}={key:"default",...t},n=this.renderMap.get(s);n&&this.renderMap.set(s,{...n,option:e})};setPause=t=>{const{key:s,pause:e}={key:"default",...t},n=this.renderMap.get(s);n&&this.renderMap.set(s,{...n,pause:e})};destroy=()=>{this.renderMap=new Map}}const l=new w;onmessage=d=>{const{action:t,data:s}=d.data,e=l[t];e&&e(s)}})();
108
108
  `, C = typeof self < "u" && self.Blob && new Blob(["(self.URL || self.webkitURL).revokeObjectURL(self.location.href);", S], { type: "text/javascript;charset=utf-8" });
109
109
  function L(p) {
110
110
  let o;
@@ -626,7 +626,7 @@ class Q {
626
626
  * 初始化
627
627
  */
628
628
  init = (o) => {
629
- this.initDecoder(o), this.initRender(), this.initDemuxer(o), this.audioPlayer = new B(), this.audioPlayer.init();
629
+ this.initRender(), this.initDecoder(o), this.initDemuxer(o), this.audioPlayer = new B(), this.audioPlayer.init();
630
630
  };
631
631
  /**
632
632
  * 初始化解复器
@@ -1,4 +1,4 @@
1
1
  (function(p,o){typeof exports=="object"&&typeof module<"u"?o(exports):typeof define=="function"&&define.amd?define(["exports"],o):(p=typeof globalThis<"u"?globalThis:p||self,o(p["quickvo-player"]={}))})(this,(function(exports){"use strict";const x='(function(){"use strict";class P{pendingPayloads=[];payload=new Uint8Array(0);chunks=[];push=t=>{this.pendingPayloads.push(t)};next=(t=0)=>{this.payload=this.payload.slice(t);const s=this.pendingPayloads.shift();if(!s)return!1;const e=new Uint8Array(this.payload.byteLength+s.byteLength);return e.set(this.payload,0),e.set(s,this.payload.byteLength),this.payload=e,new DataView(this.payload.buffer)};pushChunk=t=>{this.chunks.push(t),this.chunks.length>100&&this.chunks.shift()};destroy=()=>{this.pendingPayloads=[],this.payload=new Uint8Array(0),this.chunks=[]}}const I=(y,t)=>{const s=new Uint8Array(y),e=new Uint8Array(t),n=new Uint8Array(11+s.length+e.length);let a=0;return n[a++]=1,n[a++]=s[1],n[a++]=s[2],n[a++]=s[3],n[a++]=255,n[a++]=225,n[a++]=s.length>>8&255,n[a++]=s.length&255,n.set(s,a),a+=s.length,n[a++]=1,n[a++]=e.length>>8&255,n[a++]=e.length&255,n.set(e,a),n},T=y=>{let t=0;const s=new DataView(y.buffer),e=s.getUint8(t);if(t=t+1,e!==1)throw new Error("Invalid AVC version");const n=s.getUint8(t)&255;t=t+1;const a=s.getUint8(t)&255;t=t+1;const o=s.getUint8(t)&255;t=t+1;const c=`avc1.${Array.from([n,a,o],U=>U.toString(16).padStart(2,"0")).join("")}`,r=(s.getUint8(t)&3)-1;t=t+1;const g=s.getUint8(t)&31;t=t+1;const p=s.getUint16(t,!1);t=t+2;const h=new Uint8Array(s.buffer.slice(t,t+p));t=t+p;const d=s.getUint8(t)&31;t=t+1;const u=s.getUint16(t,!1);t=t+2;const f=new Uint8Array(s.buffer.slice(t,t+u));return t=t+u,{version:e,codec:c,profile:n,compatibility:a,level:o,lengthSizeMinusOne:r,numOfSequenceParameterSets:g,sequenceParameterSetLength:p,sps:h,numOfPictureParameterSets:d,pictureParameterSetLength:u,pps:f}},M=y=>{const t=new Uint8Array(4+y.length);return new DataView(t.buffer).setUint32(0,y.length,!1),t.set(y,4),t},C=y=>{let t=0;for(const n of y)t+=n.length;const s=new Uint8Array(t);let e=0;for(const n of y){const a=n;s.set(a,e),e+=a.length}return s},D=y=>{let t="unknown";switch(y){case 1:case 2:case 27:case 36:t="video";break;case 3:case 4:case 15:t="audio";break;case 6:t="subtitle";break;case 134:t="ad";break}return t};class x{pat;pmt;audioConfig;videoConfig;payloadMap=new Map;on={};constructor(){}parse=async t=>{let s=0;for(;!(s+188>t.byteLength);){if(t.getInt8(s)!=71){s++;continue}await this.parsePacket(t,s),s+=188}return s};parsePacket=async(t,s)=>{if(s+188>t.byteLength)throw new Error("Invalid TS packet");if(t.getUint8(s)!==71)throw new Error("Invalid TS packet");let e=s;const n=this.parseHeader(t,e);e+=4;const{transport_error_indicator:a,pid:o,payload_unit_start_indicator:l,adaptation_field_control:i}=n;if(a===1||o===void 0)return;let c=184;if(i===2||i===3){const r=t.getUint8(e);e+=1,this.parseAdaptationField(t,e),e+=r,c-=r}if(i===3&&(c-=1),i===1||i===3){const r=new Uint8Array(t.buffer.slice(e,e+c));if(o===0)return this.parsePAT(t,e);{const{programs:h=[]}=this.pat||{};if(h.find(u=>u.pmt_pid===o))return this.parsePMT(t,e)}const{streams:g=[]}=this.pmt||{},p=g.find(h=>h.elementary_pid===o);if(p){if(l===1){const h=this.payloadMap.get(o);if(h){switch(p.kind){case"audio":{const d=await this.parseAudio(h);this.on.chunk&&this.on.chunk(d)}break;case"video":{const d=await this.parseVideo(h);this.on.chunk&&this.on.chunk(d),await new Promise(u=>setTimeout(()=>u(!0),0))}break}this.payloadMap.delete(o)}}{this.payloadMap.has(o)||this.payloadMap.set(o,new Uint8Array);const h=this.payloadMap.get(o),d=new Uint8Array(h.byteLength+r.byteLength);d.set(h,0),d.set(r,h.byteLength),this.payloadMap.set(o,d)}}}};parseHeader=(t,s)=>{let e=s;const n=t.getUint8(e),a=t.getUint8(e+1),o=t.getUint8(e+2),l=t.getUint8(e+3),i=(a&128)>>7;if(i===1)return{sync_byte:n,transport_error_indicator:i};const c=(a&64)>>6,r=(a&32)>>5,g=(a&31)<<8|o,p=(l&192)>>6,h=l>>4&3,d=l&15;return{sync_byte:n,transport_error_indicator:i,payload_unit_start_indicator:c,transport_priority:r,pid:g,transport_scrambling_control:p,adaptation_field_control:h,continuity_counter:d}};parsePAT=(t,s)=>{let e=s,n;{const l=t.getUint8(e);e+=1;const i=t.getUint8(e);if(e+=1,i!==0)throw new Error("Invalid PAT table_id");const c=t.getUint16(e)&4095;e+=2;const r=t.getUint16(e);e+=2;const g=(t.getUint8(e)&62)>>1,p=t.getUint8(e)&1;e+=1;const h=t.getUint8(e);e+=1;const d=t.getUint8(e);e+=1,n={pointer_field:l,table_id:i,section_length:c,transport_stream_id:r,version_number:g,current_next_indicator:p,section_number:h,last_section_number:d}}const a=[];{const l=n.section_length-5-4,i=e+l;for(;e<i;){const c=t.getUint16(e),r=t.getUint16(e+2)&8191;e+=4,c!==0&&r>=32&&r<=8190&&a.push({program_number:c,pmt_pid:r})}}const o=t.getUint32(e);this.pat={header:n,programs:a,crc32:o},this.on.debug&&this.on.debug({pat:this.pat})};parsePMT=(t,s)=>{let e=s,n;{const l=t.getUint8(e);e+=1;const i=t.getUint8(e);if(e+=1,i!==2)throw new Error("Invalid PMT table_id");const c=t.getUint16(e)&4095;e+=2;const r=t.getUint16(e);e+=2;const g=(t.getUint8(e)&62)>>1,p=t.getUint8(e)&1;e+=1;const h=t.getUint8(e);e+=1;const d=t.getUint8(e);e+=1;const u=t.getUint16(e)&8191;e+=2;const f=t.getUint16(e)&4095;e+=2,n={pointer_field:l,table_id:i,section_length:c,transport_stream_id:r,version_number:g,current_next_indicator:p,section_number:h,last_section_number:d,pcr_pid:u,program_info_length:f}}const a=[];{const l=n.section_length-9-4,i=e+l;for(;e<i;){const c=t.getUint8(e),r=D(c),g=t.getUint16(e+1)&8191,p=t.getUint16(e+3)&4095;if(e+=5,g<32||g>8190){console.warn(`Invalid elementary_pid: 0x${g.toString(16)}`);continue}a.push({kind:r,stream_type:c,elementary_pid:g,es_info_length:p})}}const o=t.getUint32(e);this.pmt={header:n,streams:a,crc32:o},this.on.debug&&this.on.debug({pmt:this.pmt})};parseAdaptationField=(t,s)=>{let e=s,n,a,o,l;const i=t.getUint8(e),c=!!(i&128),r=!!(i&64),g=!!(i&32),p=!!(i&16),h=!!(i&8),d=!!(i&4),u=!!(i&2),f=!!(i&1);e+=1;const U=(_,b)=>{let m=BigInt(0);m|=BigInt(_.getUint16(b))<<25n,m|=BigInt(_.getUint16(b+1))<<17n,m|=BigInt(_.getUint16(b+2))<<9n,m|=BigInt(_.getUint16(b+3))<<1n,m|=BigInt(_.getUint16(b+4)>>7);const S=(_.getUint16(b+4)&1)<<8|_.getUint16(b+5);return m=m*300n+BigInt(S),m};if(p&&(n=U(t,e),e+=6),h&&(a=U(t,e),e+=6),d&&(o=t.getInt8(e),e+=1),u){const _=t.getUint8(e);e+=1,l=new Uint8Array(t.buffer,e,_),e+=_}return{discontinuity_indicator:c,random_access_indicator:r,elementary_stream_priority_indicator:g,pcr_flag:p,opcr_flag:h,splicing_point_flag:d,transport_private_data_flag:u,adaptation_field_extension_flag:f,pcr:n,opcr:a,splice_countdown:o,transport_private_data:l}};parseAudio=async t=>{const s=new DataView(t.buffer);let e=0,n,a;{const o=s.getUint8(e)===0&&s.getUint8(e+1)===0&&s.getUint8(e+2)===1;if(e+=3,!o)throw new Error("invalid ts audio payload.");const l=s.getUint8(e);e+=1;const i=s.getUint8(e)<<8|s.getUint8(e+1);e+=2;let c,r,g,p,h;{const f=s.getUint8(e);e+=1,c=f>>4&3,r=(f>>3&1)===1,g=(f>>2&1)===1,p=(f>>1&1)===1,h=(f&1)===1}let d,u;{const f=s.getUint8(e);e+=1;const U=f>>6,_=s.getUint8(e);e+=1,(U&2)===2&&(d=this.parsePtsDts(s,e)),(U&1)===1?u=this.parsePtsDts(s,e+5):u=d,e+=_}n={stream_id:l,pes_packet_length:i,scrambling_control:c,priority:r,data_alignment:g,copyright:p,original_copy:h,pts:d,dts:u}}a=t.slice(e);{if(!this.audioConfig&&s.getUint8(e)===255){const g=s.getUint8(e+2),p=s.getUint8(e+3);let h,d;d=g>>2&15,h=(g&1)<<2|p>>6;const u=`mp4a.40.${h}`,U=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350][d];this.audioConfig={kind:"audio",codec:u,sampleRate:U,numberOfChannels:h},this.on.config&&this.on.config(this.audioConfig)}const{dts:o=0,pts:l=0}=n,i=l-o,c=a.slice(7);return{kind:"audio",type:"key",dts:o,pts:l,cts:i,data:c}}};parseVideo=async t=>{const s=new DataView(t.buffer);let e=0,n,a;{const o=s.getUint8(e)===0&&s.getUint8(e+1)===0&&s.getUint8(e+2)===1;if(e+=3,!o)throw new Error("invalid ts video payload.");const l=s.getUint8(e);e+=1;const i=s.getUint8(e)<<8|s.getUint8(e+1);e+=2;let c,r,g,p,h;{const f=s.getUint8(e);e+=1,c=f>>4&3,r=(f>>3&1)===1,g=(f>>2&1)===1,p=(f>>1&1)===1,h=(f&1)===1}let d,u;{const f=s.getUint8(e);e+=1;const U=f>>6,_=s.getUint8(e);e+=1,(U&2)===2&&(d=this.parsePtsDts(s,e)),(U&1)===1?u=this.parsePtsDts(s,e+5):u=d,e+=_}n={stream_id:l,pes_packet_length:i,scrambling_control:c,priority:r,data_alignment:g,copyright:p,original_copy:h,pts:d,dts:u}}a=t.slice(e);{const o=this.getNalus(a);if(!this.videoConfig){let h,d;if(h=o.find(f=>f.type===7)?.nalu.slice(4),d=o.find(f=>f.type===8)?.nalu.slice(4),h&&d){const u=I(h,d),{codec:f}=T(u);this.videoConfig={kind:"video",codec:f,description:u,sps:h,pps:d},this.on.config&&this.on.config(this.videoConfig)}}const l=[];let i="delta";for(const h of o){const{type:d,nalu:u}=h;switch(d){case 6:case 9:l.push(u);break;case 1:i="delta",l.push(u);break;case 5:i="key",l.push(u);break}}const c=C(l),{dts:r=0,pts:g=0}=n,p=g-r;return{kind:"video",type:i,dts:r,pts:g,cts:p,data:c,nalus:l}}};parsePtsDts(t,s){const e=t.getUint8(s),n=t.getUint8(s+1),a=t.getUint8(s+2),o=t.getUint8(s+3),l=t.getUint8(s+4),i=(BigInt(e)&0b00001110n)<<29n|(BigInt(n)&0b11111111n)<<22n|(BigInt(a)&0b11111110n)<<14n|(BigInt(o)&0b11111111n)<<7n|(BigInt(l)&0b11111110n)>>1n;return Number(i)/90}getNalus=t=>{const s=[];let e=0;for(;!(e+4>t.byteLength);){if(t[e]!==0||t[e+1]!==0||t[e+2]!==1){e+=1;continue}e+=3;let n=e;const a=t[e]&31;for(e+=1;!(e+1>t.byteLength);){if(t[e]!==0||t[e+1]!==0||t[e+2]!==1){e+=1;continue}break}let o=e-n;if(t[e-1]===0&&(o-=1),o!==0){const l=t.slice(n,n+o),i=M(l);s.push({type:a,nalu:i})}}return s}}const k=(y,t)=>y.getUint8(t)<<16|y.getUint8(t+1)<<8|y.getUint8(t+2);class L{audioConfig;videoConfig;header;textDecoder=new TextDecoder("utf-8");on={};constructor(){}parse=async t=>{let s=0;for(this.header||(this.parseHeader(t,s),s+=9);this.isSurplusTag(t,s)!==!1;){const n=this.parseTagHeader(t,s+4),{tagType:a,dataSize:o,timestamp:l}=n;if(a){const i=this.parseTagBody(a,t,s+4+11,o);switch(a){case"script":this.on.info&&this.on.info(i);break;case"audio":{const{accPacketType:c}=i;if(c===0){const{codec:r,sampleRate:g,channelConfiguration:p}=i;this.audioConfig={kind:"audio",codec:r,sampleRate:g,numberOfChannels:p},this.on.config&&this.on.config(this.audioConfig)}else{const{cts:r,data:g}=i,p="key",h=r===void 0?void 0:r+l;this.on.chunk&&this.on.chunk({kind:"audio",type:p,dts:l,pts:h,cts:r,data:g})}}break;case"video":{const{avcPacketType:c}=i;if(c===0){const{codec:r,sps:g,pps:p,data:h}=i;this.videoConfig={kind:"video",codec:r,description:h,sps:g,pps:p},this.on.config&&this.on.config(this.videoConfig)}else{const{frameType:r,cts:g,data:p,nalus:h}=i,d=r===1?"key":"delta",u=g===void 0?void 0:g+l;this.on.chunk&&this.on.chunk({kind:"video",type:d,dts:l,pts:u,cts:g,data:p,nalus:h})}}break}s=s+4+11+o}await new Promise(i=>setTimeout(()=>i(!0),8))}return s};parseHeader=(t,s)=>{let e,n,a,o;e=t.getUint8(s)<<16|t.getUint8(s+1)<<8|t.getUint8(s+2),n=t.getUint8(3);{const i=t.getUint8(0).toString(2).padStart(5,"0").split(""),[,,c,,r]=i;a={audio:r==="1",video:c==="1"}}o=t.getUint32(5),this.header={signature:e,version:n,flags:a,dataOffset:o}};isSurplusTag=(t,s)=>{let e=!0;const n=t.byteLength;if(s+4>n)e=!1;else if(s+4+11>n)e=!1;else{const a=k(t,s+4+1);s+4+11+a>n&&(e=!1)}return e};parseTagHeader=(t,s)=>{let e,n,a,o,l;{const i=t.getUint8(s);let c;switch(i){case 18:c="script";break;case 8:c="audio";break;case 9:c="video";break}e=c}return n=k(t,s+1),a=k(t,s+4),o=t.getUint8(s+7),l=k(t,s+8),{tagType:e,dataSize:n,timestamp:a,timestampExtended:o,streamID:l}};parseTagBody=(t,s,e,n)=>{let a;switch(t){case"script":a=this.parseMetaData(s,e);break;case"audio":a=this.parseAudio(s,e,n);break;case"video":a=this.parseVideo(s,e,n);break}return a};parseMetaData=(t,s)=>{let e=s;{if(t.getUint8(e)!==2)throw new Error("Invalid AMF type for onMetaData (expected 0x02)");e=e+1}const n=t.getUint16(e,!1);e=e+2;{const l=new Int8Array(t.buffer.slice(e,e+n));if((this.textDecoder?.decode(l)||"")!=="onMetaData")throw new Error("Expected \'onMetaData\' string");e=e+n}const a=this.getAmfType(t,e);return e=e+1,this.getAMFValue(t,e,a).value};parseAudio=(t,s,e)=>{let n=s;const a=t.getUint8(n),o=a>>4&15,l=a>>2&3,i=a>>1&1,c=a&1;n=n+1;const r=t.getUint8(n);n=n+1;const g=e,p=new Uint8Array(t.buffer.slice(n,n+g));if(o===10&&r===0){const h=t.getUint8(n),d=t.getUint8(n+1),u=h>>3&31,f=(h&7)<<1|d>>7,U=d>>3&15,_=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350],b=`mp4a.40.${u}`,m=_[f];return{soundFormat:o,soundRate:l,soundSize:i,soundType:c,accPacketType:r,data:p,samplingFrequencyIndex:f,channelConfiguration:U,codec:b,sampleRate:m}}return{soundFormat:o,soundRate:l,soundSize:i,soundType:c,accPacketType:r,data:p}};parseVideo=(t,s,e)=>{let n=s;const a=t.getUint8(n),o=a>>4&15,l=a&15;n=n+1;const i=t.getUint8(n);n=n+1;const c=k(t,n);n=n+3;const r=e-5,g=new Uint8Array(t.buffer.slice(n,n+r));switch(l){case 7:if(i===0){const p=T(g);return{frameType:o,codecID:l,avcPacketType:i,cts:c,data:g,...p}}else if(i===1){const p=[],h=n+e-5;for(;!(n+4>h);){const d=t.getUint32(n,!1),u=new Uint8Array(t.buffer.slice(n,n+4+d));n+=4+d,p.push(u)}return{frameType:o,codecID:l,avcPacketType:i,cts:c,data:g,nalus:p}}break;default:throw new Error("Unsupported codecID")}return{frameType:o,codecID:l,avcPacketType:i,cts:c,data:g}};getAmfType=(t,s)=>t.getUint8(s);getAMFName=(t,s,e)=>{const n=new Uint8Array(t.buffer.slice(s,s+e));return this.textDecoder?.decode(n)||""};getAMFValue=(t,s,e)=>{let n=s,a,o=0;switch(e){case 0:a=t.getFloat64(n,!1),o=8;break;case 1:a=!!t.getUint8(n),o=1;break;case 2:{a="";const i=t.getUint16(n,!1);n=n+2;const c=new Int8Array(t.buffer,n,i).filter(g=>g!==0);a=(this.textDecoder?.decode(c)||"").trim(),o=2+i}break;case 3:for(a={};n<t.byteLength;){const i=t.getUint16(n,!1);if(i===0)break;n=n+2;const c=this.getAMFName(t,n,i);n=n+i;const r=this.getAmfType(t,n);if(r===6)break;n=n+1;const g=this.getAMFValue(t,n,r);n=n+g.length,a[c]=g.value,o=2+i+1+g.length}break;case 8:{a={};const i=t.getUint32(n,!1);n=n+4;for(let c=0;c<i;c++){const r=t.getUint16(n,!1);n=n+2;const g=this.getAMFName(t,n,r);n=n+r;const p=this.getAmfType(t,n);n=n+1;const h=this.getAMFValue(t,n,p);n=n+h.length,a[g]=h.value,o=2+r+1+h.length}}break;case 10:{a=[];const i=t.getUint32(n,!1);n=n+4;for(let c=0;c<i;c++){const r=this.getAmfType(t,n);n=n+1;const g=this.getAMFValue(t,n,r);n=n+g.length,a.push(g.value),o=1+g.length}}break}return{amfType:e,length:o,value:a}}}class O{pattern;cacher=new P;isParseing=!1;offset=0;parser;on={};constructor(){}init=t=>{switch(this.destroy(),this.pattern=t,this.pattern){case"flv":this.parser=new L;break;case"hls":this.parser=new x;break;default:throw new Error("is error pattern.")}this.parser.on.debug=s=>this.on.debug&&this.on.debug(s),this.parser.on.info=s=>this.on.info&&this.on.info(s),this.parser.on.config=s=>this.on.config&&this.on.config(s),this.parser.on.chunk=s=>{this.cacher.pushChunk(s),this.on.chunk&&this.on.chunk(s)}};push=t=>{this.cacher.push(t),this.isParseing===!1&&this.parse()};destroy=()=>{this.cacher.destroy(),this.isParseing=!1,this.offset=0};parse=async()=>{try{if(this.isParseing=!0,!this.pattern)throw new Error("You need to set the pattern.");if(!this.parser)throw new Error("You need to init parser.");for(;;){const t=this.cacher.next(this.offset);if(this.offset=0,!t)break;this.offset=await this.parser.parse(t)}this.isParseing=!1}catch{this.destroy()}}}const A=new O;A.on.info=y=>postMessage({action:"on.info",data:y}),A.on.config=y=>postMessage({action:"on.config",data:y}),A.on.chunk=y=>postMessage({action:"on.chunk",data:y}),A.on.debug=y=>postMessage({action:"on.debug",data:y}),onmessage=y=>{const{action:t,data:s}=y.data,e=A[t];e&&e(s)}})();\n',T=typeof self<"u"&&self.Blob&&new Blob(["(self.URL || self.webkitURL).revokeObjectURL(self.location.href);",x],{type:"text/javascript;charset=utf-8"});function R(p){let o;try{if(o=T&&(self.URL||self.webkitURL).createObjectURL(T),!o)throw"";const a=new Worker(o,{name:p?.name});return a.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(o)}),a}catch{return new Worker("data:text/javascript;charset=utf-8,"+encodeURIComponent(x),{name:p?.name})}}class P{worker=new R;on={};constructor(){this.worker.onmessage=o=>{const{action:a,data:u}=o.data;switch(a){case"on.info":this.on.info&&this.on.info(u);break;case"on.config":this.on.config&&this.on.config(u);break;case"on.chunk":this.on.chunk&&this.on.chunk(u);break;case"on.debug":this.on.debug&&this.on.debug(u);break}}}init=o=>this.worker.postMessage({action:"init",data:o});push=o=>this.worker.postMessage({action:"push",data:o});destroy=()=>{this.worker.postMessage({action:"destroy",data:{}}),this.worker.terminate()}}const A=`(function(){"use strict";class a{pattern="flv";audioDecoderConfig;audioDecoder;videoDecoderConfig;videoDecoder;hasKeyFrame=!1;baseTime=0;pendingChunks=[];currentChunk;isProcessing=!1;decodeTimer=0;frameTrack=!1;isFrameTrack=!1;fameTrackOption={flv:[30,50],hls:[200,300],dash:[50,100],rtmp:[50,100]};decodingSpeedRatio=1;maxDecodingSpeedRatio=2;decodingSpeed=16;fps=0;firstVideoChunkTimestamp;secondVideoChunkTimestamp;frameStartTime;lastRenderTime;nextRenderTime;on={audio:{},video:{}};constructor(){}init=e=>{this.destroy(),this.pattern=e,this.baseTime=new Date().getTime()-performance.now(),this.initDecodeInterval()};initAudio=e=>{this.audio.destroy(),this.audioDecoderConfig={...e},this.audioDecoder=new AudioDecoder({output:i=>{const o=this.decodingSpeedRatio;this.on.audio.decode&&this.on.audio.decode({audioData:i,playbackRate:o})},error:i=>{this.on.audio.error&&this.on.audio.error(i)}}),this.audioDecoder.configure(this.audioDecoderConfig)};initVideo=e=>{this.video.destroy(),this.videoDecoderConfig={...e},this.videoDecoder=new VideoDecoder({output:async i=>{this.frameStartTime||(this.frameStartTime=i.timestamp);try{const o=i.timestamp-this.frameStartTime+this.baseTime*1e3,s=await createImageBitmap(i);if(i.close(),!s.width||!s.height)return s.close();this.on.video.decode&&this.on.video.decode({timestamp:o,bitmap:s}),this.currentChunk&&this.currentChunk.kind==="video"&&this.currentChunk.nalus&&this.on.nalus&&this.on.nalus(this.currentChunk.nalus)}catch{i.close()}},error:i=>{this.on.video.error&&this.on.video.error(i)}}),this.videoDecoder.configure(this.videoDecoderConfig)};setFrameTrack=e=>{this.frameTrack=e,this.frameTrack===!1&&(this.decodingSpeedRatio=1)};push=e=>{this.pendingChunks.push(e)};destroy=()=>{this.audio.destroy(),this.video.destroy(),this.pendingChunks=[],this.firstVideoChunkTimestamp=void 0,this.secondVideoChunkTimestamp=void 0,this.frameStartTime=void 0,this.lastRenderTime=void 0,this.nextRenderTime=void 0,clearInterval(this.decodeTimer)};initDecodeInterval=()=>{let e=this.decodingSpeed/this.decodingSpeedRatio;const i=this.baseTime+performance.now();if(this.lastRenderTime||(this.lastRenderTime=i),this.fps=Math.round(1e3/(i-this.lastRenderTime)),this.lastRenderTime=i,this.nextRenderTime){const o=this.lastRenderTime-this.nextRenderTime;e-=o}this.nextRenderTime=this.lastRenderTime+e,this.decodeTimer=setTimeout(()=>{this.decode(),this.initDecodeInterval()},e)};decode=()=>{if(this.isProcessing!==!0){for(this.isProcessing=!0;this.currentChunk=this.pendingChunks.shift(),!!this.currentChunk;){const e=this.pendingChunks.length;if(this.frameTrack){const[s,n]=this.fameTrackOption[this.pattern];if(e<=s&&(this.isFrameTrack=!1),e>=n&&(this.isFrameTrack=!0),this.isFrameTrack){const r=Math.min(1+(e-s)/100,this.maxDecodingSpeedRatio);this.decodingSpeedRatio=Number(r.toFixed(1))}else this.decodingSpeedRatio=1}if(this.on.analysis){const{decodingSpeed:s,decodingSpeedRatio:n,fps:r}=this;this.on.analysis({decodingSpeed:s,decodingSpeedRatio:n,fps:r,cacheLength:e})}const{kind:i,init:o}=this.currentChunk;switch(i){case"audio":this.decodeAudio(o);break;case"video":this.decodeVideo(o);break}if(i==="video")break}this.isProcessing=!1}};decodeAudio=e=>{if(!this.audioDecoder)return;const i=new EncodedAudioChunk(e);this.audioDecoder.decode(i)};decodeVideo=e=>{if(this.videoDecoder&&(e.type==="key"&&(this.hasKeyFrame=!0),this.firstVideoChunkTimestamp?this.secondVideoChunkTimestamp||(this.secondVideoChunkTimestamp=e.timestamp,this.decodingSpeed=(this.secondVideoChunkTimestamp-this.firstVideoChunkTimestamp)/1e3):this.firstVideoChunkTimestamp=e.timestamp,this.hasKeyFrame)){const i=new EncodedVideoChunk(e);this.videoDecoder.decode(i)}};audio={flush:()=>{this.audioDecoder?.flush()},destroy:()=>{this.audioDecoderConfig=void 0,this.audioDecoder?.close(),this.audioDecoder=void 0}};video={flush:()=>{this.videoDecoder?.flush()},destroy:()=>{this.videoDecoderConfig=void 0,this.videoDecoder?.close(),this.videoDecoder=void 0,this.hasKeyFrame=!1}}}const d=new a;d.on.audio.decode=t=>postMessage({action:"on.audio.decode",data:t},[t.audioData]),d.on.audio.error=t=>postMessage({action:"on.audio.error",data:t}),d.on.video.decode=t=>postMessage({action:"on.video.decode",data:t},[t.bitmap]),d.on.video.error=t=>postMessage({action:"on.video.error",data:t}),d.on.nalus=t=>postMessage({action:"on.nalus",data:t}),d.on.analysis=t=>postMessage({action:"on.analysis",data:t}),onmessage=t=>{const{action:e,data:i}=t.data,o=d[e];o&&o(i)}})();
2
- `,_=typeof self<"u"&&self.Blob&&new Blob(["(self.URL || self.webkitURL).revokeObjectURL(self.location.href);",A],{type:"text/javascript;charset=utf-8"});function I(p){let o;try{if(o=_&&(self.URL||self.webkitURL).createObjectURL(_),!o)throw"";const a=new Worker(o,{name:p?.name});return a.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(o)}),a}catch{return new Worker("data:text/javascript;charset=utf-8,"+encodeURIComponent(A),{name:p?.name})}}class N{worker=new I;on={audio:{},video:{}};constructor(){this.worker.onmessage=o=>{const{action:a,data:u}=o.data;switch(a){case"on.audio.decode":this.on.audio.decode&&this.on.audio.decode(u);break;case"on.audio.error":this.on.audio.error&&this.on.audio.error(u);break;case"on.video.decode":this.on.video.decode&&this.on.video.decode(u);break;case"on.video.error":this.on.video.error&&this.on.video.error(u);break;case"on.nalus":this.on.nalus&&this.on.nalus(u);break;case"on.analysis":this.on.analysis&&this.on.analysis(u);break}}}init=o=>this.worker.postMessage({action:"init",data:o});initAudio=o=>this.worker.postMessage({action:"initAudio",data:o});initVideo=o=>this.worker.postMessage({action:"initVideo",data:o});push=o=>this.worker.postMessage({action:"push",data:o});setFrameTrack=o=>this.worker.postMessage({action:"setFrameTrack",data:o});destroy=()=>{this.worker.postMessage({action:"destroy"}),this.worker.terminate()}}const S=`(function(){"use strict";class l{renderMap=new Map;constructor(){}push=async t=>{const{timestamp:s}=t,{bitmap:e}=t;if(e.height===0||e.width===0)return e.close();try{const n=[...this.renderMap.keys()];for(const i of n){const a=this.renderMap.get(i);if(!a)continue;const{pause:y=!1,writer:h,offscreen:c,option:u}=a;if(y===!0)continue;const f=r=>{if(h){const o=new VideoFrame(r,{timestamp:s});try{o&&h.write(o)}catch{}o.close()}else c&&(c.width=r.width,c.height=r.height,c?.getContext("2d")?.drawImage(r,0,0))};if(i==="default")f(e);else if(u){const{sx:r=0,sy:o=0,sw:p=e.width,sh:g=e.height}=u,M=await createImageBitmap(e,r,o,p,g);f(M)}}}catch{}e.close()};addCut=t=>{const{key:s,writable:e,offscreen:n,option:i}={key:"default",...t};if(e){const a=e.getWriter();this.renderMap.set(s,{writer:a,option:i,pause:!1})}else this.renderMap.set(s,{offscreen:n,option:i,pause:!1})};delCut=t=>{this.renderMap.delete(t)};setCut=t=>{const{key:s,cutOption:e}={key:"default",...t},n=this.renderMap.get(s);n&&this.renderMap.set(s,{...n,option:e})};setPause=t=>{const{key:s,pause:e}={key:"default",...t},n=this.renderMap.get(s);n&&this.renderMap.set(s,{...n,pause:e})};destroy=()=>{this.renderMap=new Map}}const w=new l;onmessage=d=>{const{action:t,data:s}=d.data,e=w[t];e&&e(s)}})();
3
- `,C=typeof self<"u"&&self.Blob&&new Blob(["(self.URL || self.webkitURL).revokeObjectURL(self.location.href);",S],{type:"text/javascript;charset=utf-8"});function L(p){let o;try{if(o=C&&(self.URL||self.webkitURL).createObjectURL(C),!o)throw"";const a=new Worker(o,{name:p?.name});return a.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(o)}),a}catch{return new Worker("data:text/javascript;charset=utf-8,"+encodeURIComponent(S),{name:p?.name})}}class V{worker=new L;constructor(){}push=o=>this.worker.postMessage({action:"push",data:o},[o.bitmap]);addCut=o=>{const a=[];o.writable&&a.push(o.writable),o.offscreen&&a.push(o.offscreen),this.worker.postMessage({action:"addCut",data:o},a)};delCut=o=>this.worker.postMessage({action:"delCut",data:o});setCut=o=>this.worker.postMessage({action:"setCut",data:o});setPause=o=>this.worker.postMessage({action:"setPause",data:o});destroy=()=>{this.worker.postMessage({action:"destroy",data:{}}),this.worker.terminate()}}class W{inputStream=new MediaStream;outputStream=new MediaStream;inputGain=1;enhanceGain=1;bgsGain=1;bgmGain=1;outputGain=1;mixAudioMap=new Map;audioContext=new AudioContext;sourceNode;inputGainNode;enhanceGainNode;bgsGainNode;bgmGainNode;rnnoiseNode;analyserNode;analyserArrayData;outputGainNode;destinationNode;denoise=!1;mute=!0;rnnoiseWorklet;rnnoiseWorkletNode;filterStream=o=>o;constructor(o,a){this.inputStream=o,a&&(this.audioContext=a),this.sourceNode=this.audioContext.createMediaStreamSource(this.inputStream),this.inputGainNode=this.audioContext.createGain(),this.inputGainNode.gain.setValueAtTime(this.inputGain,this.audioContext.currentTime),this.enhanceGainNode=this.audioContext.createGain(),this.enhanceGainNode.gain.setValueAtTime(this.enhanceGain,this.audioContext.currentTime),this.bgsGainNode=this.audioContext.createGain(),this.bgsGainNode.gain.setValueAtTime(this.bgsGain,this.audioContext.currentTime),this.bgmGainNode=this.audioContext.createGain(),this.bgmGainNode.gain.setValueAtTime(this.bgmGain,this.audioContext.currentTime),this.analyserNode=this.audioContext.createAnalyser(),this.analyserNode.fftSize=512,this.analyserArrayData=new Uint8Array(this.analyserNode.frequencyBinCount),this.outputGainNode=this.audioContext.createGain(),this.outputGainNode.gain.setValueAtTime(this.outputGain,this.audioContext.currentTime),this.destinationNode=this.audioContext.createMediaStreamDestination(),this.outputStream=this.destinationNode.stream;{const{sourceNode:u,inputGainNode:n,enhanceGainNode:r,bgsGainNode:i,bgmGainNode:e,analyserNode:t,outputGainNode:s,destinationNode:l}=this;u.connect(n),n.connect(r),r.connect(t),i.connect(t),e.connect(t),r.connect(l),i.connect(l),e.connect(l),s.connect(this.audioContext.destination)}this.audioContext.resume()}use=({rnnoise:o})=>{this.rnnoiseWorklet=new o.RnnoiseWorklet};_changeSource=()=>{this.sourceNode.disconnect(),this.sourceNode=this.audioContext.createMediaStreamSource(this.inputStream),this.sourceNode.connect(this.inputGainNode)};replaceTrack=o=>{const a=this.inputStream.getTracks();for(const u of a)this.inputStream.removeTrack(u);this.inputStream.addTrack(o),this._changeSource()};stop=()=>{{const o=this.inputStream.getTracks();for(const a of o)a.stop(),this.inputStream.removeTrack(a)}};pause=async o=>{const a=this.inputStream.getTracks();for(const u of a)u.enabled=!o};getStream=()=>this.filterStream(this.outputStream);setMute=(o=!0)=>{this.mute=o,this.analyserNode.disconnect(),o===!1&&this.analyserNode.connect(this.outputGainNode)};setDenoise=async(o=!0)=>{this.rnnoiseWorklet&&(this.inputGainNode.disconnect(),this.rnnoiseWorklet.destroy(),o?(this.rnnoiseWorkletNode=await this.rnnoiseWorklet.createRnnoiseWorkletNode(this.audioContext),this.inputGainNode.connect(this.rnnoiseWorkletNode),this.rnnoiseWorkletNode.connect(this.enhanceGainNode)):this.inputGainNode.connect(this.enhanceGainNode),this.denoise=o)};setInputGain=o=>{this.inputGain=o,this.inputGainNode.gain.setValueAtTime(o,this.audioContext.currentTime)};setEnhanceGain=async o=>{this.enhanceGain=o+1,this.enhanceGainNode.gain.setValueAtTime(this.enhanceGain,this.audioContext.currentTime)};setBgsGain=o=>{this.bgsGain=o,this.bgsGainNode.gain.setValueAtTime(o,this.audioContext.currentTime)};setBgmGain=o=>{this.bgmGain=o,this.bgmGainNode.gain.setValueAtTime(o,this.audioContext.currentTime)};setOutputGain=o=>{this.outputGain=o,this.outputGainNode.gain.setValueAtTime(this.outputGain,this.audioContext.currentTime)};getVolume=()=>{const{analyserNode:o,analyserArrayData:a}=this;o.getByteFrequencyData(a);let u=0;for(let n=0;n<a.length;n++)u+=a[n];return Math.ceil(u/a.length)};mixAudio=(o,a="bgm")=>new Promise(async(u,n)=>{try{{const e=this.mixAudioMap.get(a);e&&e.stop()}const r=a==="bgs"?this.bgsGainNode:this.bgmGainNode,i=this.audioContext.createBufferSource();this.mixAudioMap.set(a,i),i.buffer=o,i.connect(r),i.onended=()=>{i.disconnect(r),this.mixAudioMap.delete(a),u(!0)},i.start(0)}catch(r){n(r)}});mixAudioStop=o=>{this.mixAudioMap.get(o)?.stop()};changeMix=(o,a)=>{const u=o==="bgs"?this.bgsGainNode:this.bgmGainNode;a?u.connect(this.destinationNode):u.disconnect(this.destinationNode)}}const F=async(p,o)=>{try{const{format:a,numberOfChannels:u,numberOfFrames:n,sampleRate:r}=o,i=p.createBuffer(u,n,r);for(let e=0;e<u;e++){const t=o.allocationSize({planeIndex:e}),s=new Uint8Array(t);o.copyTo(s,{planeIndex:e});const l=new DataView(s.buffer),c=i.getChannelData(e);for(let d=0;d<n;d++){let f;switch(a){case"s16":case"s16-planar":f=l.getInt16(d*2,!0)/32768;break;case"f32":case"f32-planar":f=l.getFloat32(d*4,!0);break;case"u8":case"u8-planar":f=(l.getUint8(d)-128)/128;break;default:throw new Error(`Unsupported audio format: ${a}`)}c[d]=Math.max(-1,Math.min(1,f))}}return i}catch(a){throw console.error("Failed to convert AudioData to AudioBuffer:",a),a}};class B{prAudioStream;audioContext;destination;stream=new MediaStream;nextStartTime=0;pendingSources=[];constructor(){}init=o=>{o||(o=new(window.AudioContext||window.webkitAudioContext)),this.audioContext=o,this.destination=this.audioContext.createMediaStreamDestination(),this.stream=new MediaStream,this.stream.addTrack(this.destination.stream.getAudioTracks()[0]),this.prAudioStream=new W(this.stream,this.audioContext),this.nextStartTime=0,this.pendingSources=[]};async push(o){const{audioData:a,playbackRate:u=1}=o;if(!this.audioContext||!this.destination)return;let n=await F(this.audioContext,a);if(a.close(),!n)return;const r=this.audioContext.createBufferSource();r.buffer=n,r.playbackRate.value=u;const i=-1200*Math.log2(u);r.detune.value=i,r.connect(this.destination);const e=Math.max(this.nextStartTime,this.audioContext.currentTime),t=n.duration/u;this.nextStartTime=e+t,r.start(e),this.pendingSources.push(r),r.onended=()=>{this.pendingSources=this.pendingSources.filter(s=>s!==r)},this.audioContext.state==="suspended"&&await this.audioContext.resume()}getStream=()=>this.prAudioStream?.getStream();destroy(){this.audioContext?.close(),this.audioContext=void 0,this.destination=void 0,this.nextStartTime=0,this.prAudioStream?.stop(),this.pendingSources.forEach(o=>o.stop()),this.pendingSources=[]}}const G=p=>{const o=p.toLowerCase();return o.includes(".m3u8")||o.includes("hls")||o.includes("master.m3u8")||o.match(/index\d*\.m3u8/)?"hls":o.includes(".mpd")||o.includes("dash")?"dash":o.startsWith("rtmp://")||o.startsWith("rtmps://")?"rtmp":o.includes(".flv")||o.includes("flv")&&!o.includes("flash")?"flv":"unknown"},E=p=>{const o=p?.getTracks()||[];for(const a of o)a.stop()};class O{resolvesMap=new Map;index=0;constructor(){}add=(o,a=()=>!1,u=0)=>new Promise(n=>{if(a())return n(!0);this.resolvesMap.has(o)||this.resolvesMap.set(o,new Map),this.index++;const r=`${this.index}`;if(u=Math.max(0,u),u===0){this.resolvesMap.get(o)?.set(r,{resolve:n,timer:0});return}const i=window.setTimeout(()=>{this.emit(o)},u);this.resolvesMap.get(o)?.set(r,{resolve:n,timer:i})});emit=async o=>{const a=this.resolvesMap.get(o);if(!a)return;const u=[...a.keys()];for(const n of u){const r=a.get(n);r&&(clearTimeout(r.timer),r.resolve(),a.delete(n))}}}const q=p=>{const o=new DataView(p.buffer);let a=0,u,n,r;u=o.getUint32(a,!1),a+=4;{const i=o.getUint8(a),e=i>>7&1,t=i>>5&3,s=i&31;n={forbidden_zero_bit:e,nal_ref_idc:t,nal_unit_type:s},a+=1}{const i=u-1;r=new Uint8Array(o.buffer.slice(a,a+i))}return{size:u,header:n,data:r}};class v{#t={timeout:5*1e3,check:!1};#e=null;constructor(o={}){this.#t={...this.#t,...o}}#i=(o,a)=>new Promise(async u=>{this.#e=new AbortController;const{signal:n}=this.#e,r=this.#t.timeout,i=setTimeout(()=>{this.#e?.abort(`Timeout (${r}ms)`)},r);await fetch(o,{cache:"no-store",...a,method:"HEAD",signal:n}).then(e=>{clearTimeout(i),u({status:e.status===200?"successed":"failed",reason:e.status===200?"":`HTTP ${e.status}`})}).catch(e=>{if(clearTimeout(i),e.name==="AbortError"){const t=n.reason||"Actively stopped";u({status:t.includes("Timeout")?"timeout":"stopped",reason:t})}else u({status:"error",reason:e.message})})});request=(o,a)=>new Promise(async(u,n)=>{try{this.stop(),this.#t.check&&await this.#i(o),this.#e=new AbortController;const{signal:r}=this.#e,i=await fetch(o,{cache:"no-store",...a,signal:r});u(i)}catch(r){n(r)}});stop=()=>{if(this.#e?.signal.aborted===!1){const o=new Error("Actively stopped.");o.name="AbortError",this.#e.abort(o)}}}class Q{option={debug:!1,frameTrack:!1};converter="MediaStreamTrackGenerator"in window?"generator":"canvas";prFetch=new v;getSegmentsFetch=new v;prResolves=new O;url="";start_resolve;demuxerWorker;decoderWorker;audioPlayer;renderWorker;stream;on={demuxer:{},decoder:{}};cutRenders=new Map;trackGenerator;constructor(o={}){const{debug:a=!1}=o;this.option.debug=a}start=async o=>{await this.stop(),this.url=o;const a=G(o);if(a==="unknown")throw new Error("This address cannot be parsed.");switch(this.init(a),a){case"flv":this.flv.start();break;case"hls":this.hls.start();break}};stop=async()=>{try{this.url="",clearInterval(this.hls.getSegmentsTimer),this.prFetch.stop(),this.getSegmentsFetch.stop(),this.demuxerWorker?.destroy(),this.decoderWorker?.destroy(),this.renderWorker?.destroy(),this.cutRenders=new Map,E(this.stream),this.audioPlayer?.destroy()}catch(o){console.log("\x1B[38;2;0;151;255m%c%s\x1B[0m","color:#0097ff;","------->pr-player: error",o)}};getStream=()=>this.stream;setPause=o=>{this.renderWorker?.setPause({pause:o})};setMute=o=>this.audioPlayer?.prAudioStream?.setMute(o);setOutputGain=o=>{this.audioPlayer?.prAudioStream?.setOutputGain(o)};setFrameTrack=o=>{this.option.frameTrack=o,this.decoderWorker?.setFrameTrack(o)};isReady=()=>{const o=()=>this.stream?.active===!0;return this.prResolves.add("isReady",o)};cut={create:(o,a)=>{if(this.converter==="generator"){const i=new MediaStreamTrackGenerator({kind:"video"}),e=new MediaStream([i]);return this.renderWorker?.addCut({key:o,writable:i.writable,option:a}),this.cutRenders.set(o,{stream:e}),e}const u=document.createElement("canvas"),n=u.captureStream(),r=u.transferControlToOffscreen();return this.renderWorker?.addCut({key:o,offscreen:r,option:a}),this.cutRenders.set(o,{stream:n}),n},setCut:(o,a)=>{this.renderWorker?.setCut({key:o,cutOption:a})},getStream:o=>this.cutRenders.get(o)?.stream,remove:o=>{this.renderWorker?.delCut(o),this.cutRenders.delete(o)},setPause:(o,a)=>{this.renderWorker?.setPause({key:o,pause:a})}};init=o=>{this.initDecoder(o),this.initRender(),this.initDemuxer(o),this.audioPlayer=new B,this.audioPlayer.init()};initDemuxer=o=>{this.demuxerWorker=new P,this.demuxerWorker.init(o),this.demuxerWorker.on.debug=a=>{this.option.debug&&this.on.debug&&this.on.debug(a)},this.demuxerWorker.on.info=a=>{this.option.debug&&console.log("\x1B[38;2;0;151;255m%c%s\x1B[0m","color:#0097ff;","------->pr-player: info",a),this.on.demuxer.info&&this.on.demuxer.info(a)},this.demuxerWorker.on.config=a=>{this.option.debug&&console.log("\x1B[38;2;0;151;255m%c%s\x1B[0m","color:#0097ff;","------->pr-player: config",a),this.on.demuxer.config&&this.on.demuxer.config(a);const{kind:u}=a;switch(u){case"audio":{const{codec:n,sampleRate:r,numberOfChannels:i}=a;this.decoderWorker?.initAudio({codec:n,sampleRate:r,numberOfChannels:i})}break;case"video":{const{codec:n,description:r}=a;this.decoderWorker?.initVideo({codec:n,description:r})}break}},this.demuxerWorker.on.chunk=a=>{if(this.on.demuxer.chunk&&this.on.demuxer.chunk(a),!this.decoderWorker)return;const{kind:u}=a;switch(u){case"audio":{const{type:n,dts:r,data:i}=a,e=r*1e3;this.decoderWorker.push({kind:u,init:{type:n,timestamp:e,data:i}})}break;case"video":{const{type:n,dts:r,data:i,nalus:e=[]}=a,t=r*1e3;this.decoderWorker.push({kind:u,init:{type:n,timestamp:t,data:i},nalus:e})}break}}};initDecoder=o=>{this.decoderWorker=new N,this.decoderWorker.init(o);const{frameTrack:a=!1}=this.option;this.decoderWorker.setFrameTrack(a),this.decoderWorker.on.audio.decode=u=>{this.audioPlayer?.push(u),this.on.decoder.audio&&this.on.decoder.audio(u)},this.decoderWorker.on.audio.error=u=>{this.option.debug&&console.log("\x1B[38;2;0;151;255m%c%s\x1B[0m","color:#0097ff;","------->pr-player: audio.error ",u),this.on.error&&this.on.error(u)},this.decoderWorker.on.video.decode=async u=>{this.start_resolve&&(this.start_resolve(!0),this.start_resolve=void 0),this.renderWorker?.push(u),this.on.decoder.video&&this.on.decoder.video(u)},this.decoderWorker.on.video.error=u=>{this.on.error&&this.on.error(u)},this.decoderWorker.on.nalus=async u=>{for(const n of u){if(n.byteLength<=4)continue;const{header:r,data:i}=q(n),{nal_unit_type:e}=r;e===6&&this.on.decoder.sei&&this.on.decoder.sei(i)}},this.decoderWorker.on.analysis=u=>{this.on.decoder.analysis&&this.on.decoder.analysis(u)}};initRender=()=>{if(this.renderWorker=new V,this.converter==="generator"){const o=new MediaStreamTrackGenerator({kind:"video"}),a=new MediaStream([o]);this.renderWorker?.addCut({writable:o.writable}),this.stream=a}else{const o=document.createElement("canvas"),a=o.captureStream(),u=o.transferControlToOffscreen();this.renderWorker?.addCut({offscreen:u}),this.stream=a}this.renderWorker?.setPause({pause:!1})};flv={start:()=>new Promise(async(o,a)=>{try{this.start_resolve=o;let u,n=0;for(;;){n+=1;try{u=await this.prFetch.request(this.url)}catch(i){console.log("\x1B[38;2;0;151;255m%c%s\x1B[0m","color:#0097ff;","------->Breathe: error",i)}if(u?.status===200||n===3)break;await new Promise(i=>setTimeout(()=>i(!0),500))}if(!u||u.status!==200)return a("request is error.");const r=u.body?.getReader();if(!r)return a("reader is error.");for(;;){const{done:i,value:e}=await r.read();if(e&&this.demuxerWorker?.push(e),i||this.url==="")break}}catch(u){u.name!=="AbortError"&&a(u)}})};hls={isLive:!1,urls:[],url:"",getSegmentsTimer:0,parse:async o=>{const a=new TextDecoder("utf-8").decode(o).split(`
2
+ `,_=typeof self<"u"&&self.Blob&&new Blob(["(self.URL || self.webkitURL).revokeObjectURL(self.location.href);",A],{type:"text/javascript;charset=utf-8"});function I(p){let o;try{if(o=_&&(self.URL||self.webkitURL).createObjectURL(_),!o)throw"";const a=new Worker(o,{name:p?.name});return a.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(o)}),a}catch{return new Worker("data:text/javascript;charset=utf-8,"+encodeURIComponent(A),{name:p?.name})}}class N{worker=new I;on={audio:{},video:{}};constructor(){this.worker.onmessage=o=>{const{action:a,data:u}=o.data;switch(a){case"on.audio.decode":this.on.audio.decode&&this.on.audio.decode(u);break;case"on.audio.error":this.on.audio.error&&this.on.audio.error(u);break;case"on.video.decode":this.on.video.decode&&this.on.video.decode(u);break;case"on.video.error":this.on.video.error&&this.on.video.error(u);break;case"on.nalus":this.on.nalus&&this.on.nalus(u);break;case"on.analysis":this.on.analysis&&this.on.analysis(u);break}}}init=o=>this.worker.postMessage({action:"init",data:o});initAudio=o=>this.worker.postMessage({action:"initAudio",data:o});initVideo=o=>this.worker.postMessage({action:"initVideo",data:o});push=o=>this.worker.postMessage({action:"push",data:o});setFrameTrack=o=>this.worker.postMessage({action:"setFrameTrack",data:o});destroy=()=>{this.worker.postMessage({action:"destroy"}),this.worker.terminate()}}const S=`(function(){"use strict";class w{renderMap=new Map;constructor(){}push=async t=>{const{timestamp:s}=t,{bitmap:e}=t;try{const n=[...this.renderMap.keys()];for(const a of n){const i=this.renderMap.get(a);if(!i)continue;const{pause:y=!1,writer:u,offscreen:o,option:f}=i;if(y===!0)continue;const h=async r=>{if(u){const c=new VideoFrame(r,{timestamp:s});try{await u.write(c)}catch{}c.close()}else o&&(o.width=r.width,o.height=r.height,o?.getContext("2d")?.drawImage(r,0,0))};if(a==="default")await h(e);else if(f){const{sx:r=0,sy:c=0,sw:p=e.width,sh:M=e.height}=f,g=await createImageBitmap(e,r,c,p,M);await h(g)}}}catch{}e.close()};addCut=t=>{const{key:s,writable:e,offscreen:n,option:a}={key:"default",...t};if(e){const i=e.getWriter();this.renderMap.set(s,{writer:i,option:a,pause:!1})}else this.renderMap.set(s,{offscreen:n,option:a,pause:!1})};delCut=t=>{this.renderMap.delete(t)};setCut=t=>{const{key:s,cutOption:e}={key:"default",...t},n=this.renderMap.get(s);n&&this.renderMap.set(s,{...n,option:e})};setPause=t=>{const{key:s,pause:e}={key:"default",...t},n=this.renderMap.get(s);n&&this.renderMap.set(s,{...n,pause:e})};destroy=()=>{this.renderMap=new Map}}const l=new w;onmessage=d=>{const{action:t,data:s}=d.data,e=l[t];e&&e(s)}})();
3
+ `,C=typeof self<"u"&&self.Blob&&new Blob(["(self.URL || self.webkitURL).revokeObjectURL(self.location.href);",S],{type:"text/javascript;charset=utf-8"});function L(p){let o;try{if(o=C&&(self.URL||self.webkitURL).createObjectURL(C),!o)throw"";const a=new Worker(o,{name:p?.name});return a.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(o)}),a}catch{return new Worker("data:text/javascript;charset=utf-8,"+encodeURIComponent(S),{name:p?.name})}}class V{worker=new L;constructor(){}push=o=>this.worker.postMessage({action:"push",data:o},[o.bitmap]);addCut=o=>{const a=[];o.writable&&a.push(o.writable),o.offscreen&&a.push(o.offscreen),this.worker.postMessage({action:"addCut",data:o},a)};delCut=o=>this.worker.postMessage({action:"delCut",data:o});setCut=o=>this.worker.postMessage({action:"setCut",data:o});setPause=o=>this.worker.postMessage({action:"setPause",data:o});destroy=()=>{this.worker.postMessage({action:"destroy",data:{}}),this.worker.terminate()}}class W{inputStream=new MediaStream;outputStream=new MediaStream;inputGain=1;enhanceGain=1;bgsGain=1;bgmGain=1;outputGain=1;mixAudioMap=new Map;audioContext=new AudioContext;sourceNode;inputGainNode;enhanceGainNode;bgsGainNode;bgmGainNode;rnnoiseNode;analyserNode;analyserArrayData;outputGainNode;destinationNode;denoise=!1;mute=!0;rnnoiseWorklet;rnnoiseWorkletNode;filterStream=o=>o;constructor(o,a){this.inputStream=o,a&&(this.audioContext=a),this.sourceNode=this.audioContext.createMediaStreamSource(this.inputStream),this.inputGainNode=this.audioContext.createGain(),this.inputGainNode.gain.setValueAtTime(this.inputGain,this.audioContext.currentTime),this.enhanceGainNode=this.audioContext.createGain(),this.enhanceGainNode.gain.setValueAtTime(this.enhanceGain,this.audioContext.currentTime),this.bgsGainNode=this.audioContext.createGain(),this.bgsGainNode.gain.setValueAtTime(this.bgsGain,this.audioContext.currentTime),this.bgmGainNode=this.audioContext.createGain(),this.bgmGainNode.gain.setValueAtTime(this.bgmGain,this.audioContext.currentTime),this.analyserNode=this.audioContext.createAnalyser(),this.analyserNode.fftSize=512,this.analyserArrayData=new Uint8Array(this.analyserNode.frequencyBinCount),this.outputGainNode=this.audioContext.createGain(),this.outputGainNode.gain.setValueAtTime(this.outputGain,this.audioContext.currentTime),this.destinationNode=this.audioContext.createMediaStreamDestination(),this.outputStream=this.destinationNode.stream;{const{sourceNode:u,inputGainNode:n,enhanceGainNode:r,bgsGainNode:i,bgmGainNode:e,analyserNode:t,outputGainNode:s,destinationNode:l}=this;u.connect(n),n.connect(r),r.connect(t),i.connect(t),e.connect(t),r.connect(l),i.connect(l),e.connect(l),s.connect(this.audioContext.destination)}this.audioContext.resume()}use=({rnnoise:o})=>{this.rnnoiseWorklet=new o.RnnoiseWorklet};_changeSource=()=>{this.sourceNode.disconnect(),this.sourceNode=this.audioContext.createMediaStreamSource(this.inputStream),this.sourceNode.connect(this.inputGainNode)};replaceTrack=o=>{const a=this.inputStream.getTracks();for(const u of a)this.inputStream.removeTrack(u);this.inputStream.addTrack(o),this._changeSource()};stop=()=>{{const o=this.inputStream.getTracks();for(const a of o)a.stop(),this.inputStream.removeTrack(a)}};pause=async o=>{const a=this.inputStream.getTracks();for(const u of a)u.enabled=!o};getStream=()=>this.filterStream(this.outputStream);setMute=(o=!0)=>{this.mute=o,this.analyserNode.disconnect(),o===!1&&this.analyserNode.connect(this.outputGainNode)};setDenoise=async(o=!0)=>{this.rnnoiseWorklet&&(this.inputGainNode.disconnect(),this.rnnoiseWorklet.destroy(),o?(this.rnnoiseWorkletNode=await this.rnnoiseWorklet.createRnnoiseWorkletNode(this.audioContext),this.inputGainNode.connect(this.rnnoiseWorkletNode),this.rnnoiseWorkletNode.connect(this.enhanceGainNode)):this.inputGainNode.connect(this.enhanceGainNode),this.denoise=o)};setInputGain=o=>{this.inputGain=o,this.inputGainNode.gain.setValueAtTime(o,this.audioContext.currentTime)};setEnhanceGain=async o=>{this.enhanceGain=o+1,this.enhanceGainNode.gain.setValueAtTime(this.enhanceGain,this.audioContext.currentTime)};setBgsGain=o=>{this.bgsGain=o,this.bgsGainNode.gain.setValueAtTime(o,this.audioContext.currentTime)};setBgmGain=o=>{this.bgmGain=o,this.bgmGainNode.gain.setValueAtTime(o,this.audioContext.currentTime)};setOutputGain=o=>{this.outputGain=o,this.outputGainNode.gain.setValueAtTime(this.outputGain,this.audioContext.currentTime)};getVolume=()=>{const{analyserNode:o,analyserArrayData:a}=this;o.getByteFrequencyData(a);let u=0;for(let n=0;n<a.length;n++)u+=a[n];return Math.ceil(u/a.length)};mixAudio=(o,a="bgm")=>new Promise(async(u,n)=>{try{{const e=this.mixAudioMap.get(a);e&&e.stop()}const r=a==="bgs"?this.bgsGainNode:this.bgmGainNode,i=this.audioContext.createBufferSource();this.mixAudioMap.set(a,i),i.buffer=o,i.connect(r),i.onended=()=>{i.disconnect(r),this.mixAudioMap.delete(a),u(!0)},i.start(0)}catch(r){n(r)}});mixAudioStop=o=>{this.mixAudioMap.get(o)?.stop()};changeMix=(o,a)=>{const u=o==="bgs"?this.bgsGainNode:this.bgmGainNode;a?u.connect(this.destinationNode):u.disconnect(this.destinationNode)}}const F=async(p,o)=>{try{const{format:a,numberOfChannels:u,numberOfFrames:n,sampleRate:r}=o,i=p.createBuffer(u,n,r);for(let e=0;e<u;e++){const t=o.allocationSize({planeIndex:e}),s=new Uint8Array(t);o.copyTo(s,{planeIndex:e});const l=new DataView(s.buffer),c=i.getChannelData(e);for(let d=0;d<n;d++){let f;switch(a){case"s16":case"s16-planar":f=l.getInt16(d*2,!0)/32768;break;case"f32":case"f32-planar":f=l.getFloat32(d*4,!0);break;case"u8":case"u8-planar":f=(l.getUint8(d)-128)/128;break;default:throw new Error(`Unsupported audio format: ${a}`)}c[d]=Math.max(-1,Math.min(1,f))}}return i}catch(a){throw console.error("Failed to convert AudioData to AudioBuffer:",a),a}};class B{prAudioStream;audioContext;destination;stream=new MediaStream;nextStartTime=0;pendingSources=[];constructor(){}init=o=>{o||(o=new(window.AudioContext||window.webkitAudioContext)),this.audioContext=o,this.destination=this.audioContext.createMediaStreamDestination(),this.stream=new MediaStream,this.stream.addTrack(this.destination.stream.getAudioTracks()[0]),this.prAudioStream=new W(this.stream,this.audioContext),this.nextStartTime=0,this.pendingSources=[]};async push(o){const{audioData:a,playbackRate:u=1}=o;if(!this.audioContext||!this.destination)return;let n=await F(this.audioContext,a);if(a.close(),!n)return;const r=this.audioContext.createBufferSource();r.buffer=n,r.playbackRate.value=u;const i=-1200*Math.log2(u);r.detune.value=i,r.connect(this.destination);const e=Math.max(this.nextStartTime,this.audioContext.currentTime),t=n.duration/u;this.nextStartTime=e+t,r.start(e),this.pendingSources.push(r),r.onended=()=>{this.pendingSources=this.pendingSources.filter(s=>s!==r)},this.audioContext.state==="suspended"&&await this.audioContext.resume()}getStream=()=>this.prAudioStream?.getStream();destroy(){this.audioContext?.close(),this.audioContext=void 0,this.destination=void 0,this.nextStartTime=0,this.prAudioStream?.stop(),this.pendingSources.forEach(o=>o.stop()),this.pendingSources=[]}}const G=p=>{const o=p.toLowerCase();return o.includes(".m3u8")||o.includes("hls")||o.includes("master.m3u8")||o.match(/index\d*\.m3u8/)?"hls":o.includes(".mpd")||o.includes("dash")?"dash":o.startsWith("rtmp://")||o.startsWith("rtmps://")?"rtmp":o.includes(".flv")||o.includes("flv")&&!o.includes("flash")?"flv":"unknown"},E=p=>{const o=p?.getTracks()||[];for(const a of o)a.stop()};class O{resolvesMap=new Map;index=0;constructor(){}add=(o,a=()=>!1,u=0)=>new Promise(n=>{if(a())return n(!0);this.resolvesMap.has(o)||this.resolvesMap.set(o,new Map),this.index++;const r=`${this.index}`;if(u=Math.max(0,u),u===0){this.resolvesMap.get(o)?.set(r,{resolve:n,timer:0});return}const i=window.setTimeout(()=>{this.emit(o)},u);this.resolvesMap.get(o)?.set(r,{resolve:n,timer:i})});emit=async o=>{const a=this.resolvesMap.get(o);if(!a)return;const u=[...a.keys()];for(const n of u){const r=a.get(n);r&&(clearTimeout(r.timer),r.resolve(),a.delete(n))}}}const q=p=>{const o=new DataView(p.buffer);let a=0,u,n,r;u=o.getUint32(a,!1),a+=4;{const i=o.getUint8(a),e=i>>7&1,t=i>>5&3,s=i&31;n={forbidden_zero_bit:e,nal_ref_idc:t,nal_unit_type:s},a+=1}{const i=u-1;r=new Uint8Array(o.buffer.slice(a,a+i))}return{size:u,header:n,data:r}};class v{#t={timeout:5*1e3,check:!1};#e=null;constructor(o={}){this.#t={...this.#t,...o}}#i=(o,a)=>new Promise(async u=>{this.#e=new AbortController;const{signal:n}=this.#e,r=this.#t.timeout,i=setTimeout(()=>{this.#e?.abort(`Timeout (${r}ms)`)},r);await fetch(o,{cache:"no-store",...a,method:"HEAD",signal:n}).then(e=>{clearTimeout(i),u({status:e.status===200?"successed":"failed",reason:e.status===200?"":`HTTP ${e.status}`})}).catch(e=>{if(clearTimeout(i),e.name==="AbortError"){const t=n.reason||"Actively stopped";u({status:t.includes("Timeout")?"timeout":"stopped",reason:t})}else u({status:"error",reason:e.message})})});request=(o,a)=>new Promise(async(u,n)=>{try{this.stop(),this.#t.check&&await this.#i(o),this.#e=new AbortController;const{signal:r}=this.#e,i=await fetch(o,{cache:"no-store",...a,signal:r});u(i)}catch(r){n(r)}});stop=()=>{if(this.#e?.signal.aborted===!1){const o=new Error("Actively stopped.");o.name="AbortError",this.#e.abort(o)}}}class Q{option={debug:!1,frameTrack:!1};converter="MediaStreamTrackGenerator"in window?"generator":"canvas";prFetch=new v;getSegmentsFetch=new v;prResolves=new O;url="";start_resolve;demuxerWorker;decoderWorker;audioPlayer;renderWorker;stream;on={demuxer:{},decoder:{}};cutRenders=new Map;trackGenerator;constructor(o={}){const{debug:a=!1}=o;this.option.debug=a}start=async o=>{await this.stop(),this.url=o;const a=G(o);if(a==="unknown")throw new Error("This address cannot be parsed.");switch(this.init(a),a){case"flv":this.flv.start();break;case"hls":this.hls.start();break}};stop=async()=>{try{this.url="",clearInterval(this.hls.getSegmentsTimer),this.prFetch.stop(),this.getSegmentsFetch.stop(),this.demuxerWorker?.destroy(),this.decoderWorker?.destroy(),this.renderWorker?.destroy(),this.cutRenders=new Map,E(this.stream),this.audioPlayer?.destroy()}catch(o){console.log("\x1B[38;2;0;151;255m%c%s\x1B[0m","color:#0097ff;","------->pr-player: error",o)}};getStream=()=>this.stream;setPause=o=>{this.renderWorker?.setPause({pause:o})};setMute=o=>this.audioPlayer?.prAudioStream?.setMute(o);setOutputGain=o=>{this.audioPlayer?.prAudioStream?.setOutputGain(o)};setFrameTrack=o=>{this.option.frameTrack=o,this.decoderWorker?.setFrameTrack(o)};isReady=()=>{const o=()=>this.stream?.active===!0;return this.prResolves.add("isReady",o)};cut={create:(o,a)=>{if(this.converter==="generator"){const i=new MediaStreamTrackGenerator({kind:"video"}),e=new MediaStream([i]);return this.renderWorker?.addCut({key:o,writable:i.writable,option:a}),this.cutRenders.set(o,{stream:e}),e}const u=document.createElement("canvas"),n=u.captureStream(),r=u.transferControlToOffscreen();return this.renderWorker?.addCut({key:o,offscreen:r,option:a}),this.cutRenders.set(o,{stream:n}),n},setCut:(o,a)=>{this.renderWorker?.setCut({key:o,cutOption:a})},getStream:o=>this.cutRenders.get(o)?.stream,remove:o=>{this.renderWorker?.delCut(o),this.cutRenders.delete(o)},setPause:(o,a)=>{this.renderWorker?.setPause({key:o,pause:a})}};init=o=>{this.initRender(),this.initDecoder(o),this.initDemuxer(o),this.audioPlayer=new B,this.audioPlayer.init()};initDemuxer=o=>{this.demuxerWorker=new P,this.demuxerWorker.init(o),this.demuxerWorker.on.debug=a=>{this.option.debug&&this.on.debug&&this.on.debug(a)},this.demuxerWorker.on.info=a=>{this.option.debug&&console.log("\x1B[38;2;0;151;255m%c%s\x1B[0m","color:#0097ff;","------->pr-player: info",a),this.on.demuxer.info&&this.on.demuxer.info(a)},this.demuxerWorker.on.config=a=>{this.option.debug&&console.log("\x1B[38;2;0;151;255m%c%s\x1B[0m","color:#0097ff;","------->pr-player: config",a),this.on.demuxer.config&&this.on.demuxer.config(a);const{kind:u}=a;switch(u){case"audio":{const{codec:n,sampleRate:r,numberOfChannels:i}=a;this.decoderWorker?.initAudio({codec:n,sampleRate:r,numberOfChannels:i})}break;case"video":{const{codec:n,description:r}=a;this.decoderWorker?.initVideo({codec:n,description:r})}break}},this.demuxerWorker.on.chunk=a=>{if(this.on.demuxer.chunk&&this.on.demuxer.chunk(a),!this.decoderWorker)return;const{kind:u}=a;switch(u){case"audio":{const{type:n,dts:r,data:i}=a,e=r*1e3;this.decoderWorker.push({kind:u,init:{type:n,timestamp:e,data:i}})}break;case"video":{const{type:n,dts:r,data:i,nalus:e=[]}=a,t=r*1e3;this.decoderWorker.push({kind:u,init:{type:n,timestamp:t,data:i},nalus:e})}break}}};initDecoder=o=>{this.decoderWorker=new N,this.decoderWorker.init(o);const{frameTrack:a=!1}=this.option;this.decoderWorker.setFrameTrack(a),this.decoderWorker.on.audio.decode=u=>{this.audioPlayer?.push(u),this.on.decoder.audio&&this.on.decoder.audio(u)},this.decoderWorker.on.audio.error=u=>{this.option.debug&&console.log("\x1B[38;2;0;151;255m%c%s\x1B[0m","color:#0097ff;","------->pr-player: audio.error ",u),this.on.error&&this.on.error(u)},this.decoderWorker.on.video.decode=async u=>{this.start_resolve&&(this.start_resolve(!0),this.start_resolve=void 0),this.renderWorker?.push(u),this.on.decoder.video&&this.on.decoder.video(u)},this.decoderWorker.on.video.error=u=>{this.on.error&&this.on.error(u)},this.decoderWorker.on.nalus=async u=>{for(const n of u){if(n.byteLength<=4)continue;const{header:r,data:i}=q(n),{nal_unit_type:e}=r;e===6&&this.on.decoder.sei&&this.on.decoder.sei(i)}},this.decoderWorker.on.analysis=u=>{this.on.decoder.analysis&&this.on.decoder.analysis(u)}};initRender=()=>{if(this.renderWorker=new V,this.converter==="generator"){const o=new MediaStreamTrackGenerator({kind:"video"}),a=new MediaStream([o]);this.renderWorker?.addCut({writable:o.writable}),this.stream=a}else{const o=document.createElement("canvas"),a=o.captureStream(),u=o.transferControlToOffscreen();this.renderWorker?.addCut({offscreen:u}),this.stream=a}this.renderWorker?.setPause({pause:!1})};flv={start:()=>new Promise(async(o,a)=>{try{this.start_resolve=o;let u,n=0;for(;;){n+=1;try{u=await this.prFetch.request(this.url)}catch(i){console.log("\x1B[38;2;0;151;255m%c%s\x1B[0m","color:#0097ff;","------->Breathe: error",i)}if(u?.status===200||n===3)break;await new Promise(i=>setTimeout(()=>i(!0),500))}if(!u||u.status!==200)return a("request is error.");const r=u.body?.getReader();if(!r)return a("reader is error.");for(;;){const{done:i,value:e}=await r.read();if(e&&this.demuxerWorker?.push(e),i||this.url==="")break}}catch(u){u.name!=="AbortError"&&a(u)}})};hls={isLive:!1,urls:[],url:"",getSegmentsTimer:0,parse:async o=>{const a=new TextDecoder("utf-8").decode(o).split(`
4
4
  `).map(t=>t.replace("\r","")),u=this.url.substring(0,this.url.lastIndexOf("/")+1);let n=4,r=0,i=!1;const e=[];for(const t of a)t.startsWith("#EXTINF:")?n=parseFloat(t.split(":")[1].split(",")[0]):t.startsWith("#EXT-X-TARGETDURATION:")?r=parseInt(t.split(":")[1]):t.startsWith("#EXT-X-ENDLIST")?i=!1:t.startsWith("#EXT-X-MEDIA-SEQUENCE:")?i=!0:t.includes(".ts")&&!t.startsWith("#")&&e.push({url:t.startsWith("http")?t:u+t,duration:n,isLive:i});return{baseUrl:u,targetDuration:r,isLive:i,segments:e}},getSegments:async()=>{try{let o,a=0;for(;;){a+=1;try{o=await this.getSegmentsFetch.request(this.url)}catch(n){console.log("\x1B[38;2;0;151;255m%c%s\x1B[0m","color:#0097ff;","------->Breathe: error",n)}if(o?.status===200||a===3)break;await new Promise(n=>setTimeout(()=>n(!0),500))}if(!o||o.status!==200)throw new Error("request is error.");const u=o.body?.getReader();if(!u)throw new Error("reader is error.");for(;;){const{done:n,value:r}=await u.read();if(r){const i=await this.hls.parse(r),{segments:e=[],isLive:t=!1}=i;this.hls.isLive=t,t===!1&&(this.option.frameTrack=!1);let s=Array.from(e,c=>c.url);const l=s.findIndex(c=>c===this.hls.url);l!==-1&&(s=s.slice(l+1)),this.hls.urls=s}if(n||this.url==="")break}}catch(o){o.name!=="AbortError"&&this.on.error&&this.on.error(o)}},start:()=>new Promise(async(o,a)=>{try{for(this.start_resolve=o,this.hls.url="",this.hls.urls=[],await this.hls.getSegments(),this.hls.getSegmentsTimer=window.setInterval(this.hls.getSegments,500),this.hls.isLive===!1&&(clearInterval(this.hls.getSegmentsTimer),this.decoderWorker?.setFrameTrack(!1));;){const u=this.hls.urls.shift();if(u){this.hls.url=u;const n=(await this.prFetch.request(u)).body?.getReader();if(!n)throw new Error("segment reader is error.");for(;;){const{done:r,value:i}=await n.read();if(i&&this.demuxerWorker?.push(i),r||this.url==="")break}}else await new Promise(n=>setTimeout(()=>n(!0),300))}}catch(u){u.name!=="AbortError"&&a(u)}})}}var commonjsGlobal=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},indexMinimal={},minimal$1={},aspromise,hasRequiredAspromise;function requireAspromise(){if(hasRequiredAspromise)return aspromise;hasRequiredAspromise=1,aspromise=p;function p(o,a){for(var u=new Array(arguments.length-1),n=0,r=2,i=!0;r<arguments.length;)u[n++]=arguments[r++];return new Promise(function(t,s){u[n]=function(c){if(i)if(i=!1,c)s(c);else{for(var d=new Array(arguments.length-1),f=0;f<d.length;)d[f++]=arguments[f];t.apply(null,d)}};try{o.apply(a||null,u)}catch(l){i&&(i=!1,s(l))}})}return aspromise}var base64={},hasRequiredBase64;function requireBase64(){return hasRequiredBase64||(hasRequiredBase64=1,(function(p){var o=p;o.length=function(e){var t=e.length;if(!t)return 0;for(var s=0;--t%4>1&&e.charAt(t)==="=";)++s;return Math.ceil(e.length*3)/4-s};for(var a=new Array(64),u=new Array(123),n=0;n<64;)u[a[n]=n<26?n+65:n<52?n+71:n<62?n-4:n-59|43]=n++;o.encode=function(e,t,s){for(var l=null,c=[],d=0,f=0,h;t<s;){var g=e[t++];switch(f){case 0:c[d++]=a[g>>2],h=(g&3)<<4,f=1;break;case 1:c[d++]=a[h|g>>4],h=(g&15)<<2,f=2;break;case 2:c[d++]=a[h|g>>6],c[d++]=a[g&63],f=0;break}d>8191&&((l||(l=[])).push(String.fromCharCode.apply(String,c)),d=0)}return f&&(c[d++]=a[h],c[d++]=61,f===1&&(c[d++]=61)),l?(d&&l.push(String.fromCharCode.apply(String,c.slice(0,d))),l.join("")):String.fromCharCode.apply(String,c.slice(0,d))};var r="invalid encoding";o.decode=function(e,t,s){for(var l=s,c=0,d,f=0;f<e.length;){var h=e.charCodeAt(f++);if(h===61&&c>1)break;if((h=u[h])===void 0)throw Error(r);switch(c){case 0:d=h,c=1;break;case 1:t[s++]=d<<2|(h&48)>>4,d=h,c=2;break;case 2:t[s++]=(d&15)<<4|(h&60)>>2,d=h,c=3;break;case 3:t[s++]=(d&3)<<6|h,c=0;break}}if(c===1)throw Error(r);return s-l},o.test=function(e){return/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(e)}})(base64)),base64}var eventemitter,hasRequiredEventemitter;function requireEventemitter(){if(hasRequiredEventemitter)return eventemitter;hasRequiredEventemitter=1,eventemitter=p;function p(){this._listeners={}}return p.prototype.on=function(a,u,n){return(this._listeners[a]||(this._listeners[a]=[])).push({fn:u,ctx:n||this}),this},p.prototype.off=function(a,u){if(a===void 0)this._listeners={};else if(u===void 0)this._listeners[a]=[];else for(var n=this._listeners[a],r=0;r<n.length;)n[r].fn===u?n.splice(r,1):++r;return this},p.prototype.emit=function(a){var u=this._listeners[a];if(u){for(var n=[],r=1;r<arguments.length;)n.push(arguments[r++]);for(r=0;r<u.length;)u[r].fn.apply(u[r++].ctx,n)}return this},eventemitter}var float,hasRequiredFloat;function requireFloat(){if(hasRequiredFloat)return float;hasRequiredFloat=1,float=p(p);function p(r){return typeof Float32Array<"u"?(function(){var i=new Float32Array([-0]),e=new Uint8Array(i.buffer),t=e[3]===128;function s(f,h,g){i[0]=f,h[g]=e[0],h[g+1]=e[1],h[g+2]=e[2],h[g+3]=e[3]}function l(f,h,g){i[0]=f,h[g]=e[3],h[g+1]=e[2],h[g+2]=e[1],h[g+3]=e[0]}r.writeFloatLE=t?s:l,r.writeFloatBE=t?l:s;function c(f,h){return e[0]=f[h],e[1]=f[h+1],e[2]=f[h+2],e[3]=f[h+3],i[0]}function d(f,h){return e[3]=f[h],e[2]=f[h+1],e[1]=f[h+2],e[0]=f[h+3],i[0]}r.readFloatLE=t?c:d,r.readFloatBE=t?d:c})():(function(){function i(t,s,l,c){var d=s<0?1:0;if(d&&(s=-s),s===0)t(1/s>0?0:2147483648,l,c);else if(isNaN(s))t(2143289344,l,c);else if(s>34028234663852886e22)t((d<<31|2139095040)>>>0,l,c);else if(s<11754943508222875e-54)t((d<<31|Math.round(s/1401298464324817e-60))>>>0,l,c);else{var f=Math.floor(Math.log(s)/Math.LN2),h=Math.round(s*Math.pow(2,-f)*8388608)&8388607;t((d<<31|f+127<<23|h)>>>0,l,c)}}r.writeFloatLE=i.bind(null,o),r.writeFloatBE=i.bind(null,a);function e(t,s,l){var c=t(s,l),d=(c>>31)*2+1,f=c>>>23&255,h=c&8388607;return f===255?h?NaN:d*(1/0):f===0?d*1401298464324817e-60*h:d*Math.pow(2,f-150)*(h+8388608)}r.readFloatLE=e.bind(null,u),r.readFloatBE=e.bind(null,n)})(),typeof Float64Array<"u"?(function(){var i=new Float64Array([-0]),e=new Uint8Array(i.buffer),t=e[7]===128;function s(f,h,g){i[0]=f,h[g]=e[0],h[g+1]=e[1],h[g+2]=e[2],h[g+3]=e[3],h[g+4]=e[4],h[g+5]=e[5],h[g+6]=e[6],h[g+7]=e[7]}function l(f,h,g){i[0]=f,h[g]=e[7],h[g+1]=e[6],h[g+2]=e[5],h[g+3]=e[4],h[g+4]=e[3],h[g+5]=e[2],h[g+6]=e[1],h[g+7]=e[0]}r.writeDoubleLE=t?s:l,r.writeDoubleBE=t?l:s;function c(f,h){return e[0]=f[h],e[1]=f[h+1],e[2]=f[h+2],e[3]=f[h+3],e[4]=f[h+4],e[5]=f[h+5],e[6]=f[h+6],e[7]=f[h+7],i[0]}function d(f,h){return e[7]=f[h],e[6]=f[h+1],e[5]=f[h+2],e[4]=f[h+3],e[3]=f[h+4],e[2]=f[h+5],e[1]=f[h+6],e[0]=f[h+7],i[0]}r.readDoubleLE=t?c:d,r.readDoubleBE=t?d:c})():(function(){function i(t,s,l,c,d,f){var h=c<0?1:0;if(h&&(c=-c),c===0)t(0,d,f+s),t(1/c>0?0:2147483648,d,f+l);else if(isNaN(c))t(0,d,f+s),t(2146959360,d,f+l);else if(c>17976931348623157e292)t(0,d,f+s),t((h<<31|2146435072)>>>0,d,f+l);else{var g;if(c<22250738585072014e-324)g=c/5e-324,t(g>>>0,d,f+s),t((h<<31|g/4294967296)>>>0,d,f+l);else{var m=Math.floor(Math.log(c)/Math.LN2);m===1024&&(m=1023),g=c*Math.pow(2,-m),t(g*4503599627370496>>>0,d,f+s),t((h<<31|m+1023<<20|g*1048576&1048575)>>>0,d,f+l)}}}r.writeDoubleLE=i.bind(null,o,0,4),r.writeDoubleBE=i.bind(null,a,4,0);function e(t,s,l,c,d){var f=t(c,d+s),h=t(c,d+l),g=(h>>31)*2+1,m=h>>>20&2047,y=4294967296*(h&1048575)+f;return m===2047?y?NaN:g*(1/0):m===0?g*5e-324*y:g*Math.pow(2,m-1075)*(y+4503599627370496)}r.readDoubleLE=e.bind(null,u,0,4),r.readDoubleBE=e.bind(null,n,4,0)})(),r}function o(r,i,e){i[e]=r&255,i[e+1]=r>>>8&255,i[e+2]=r>>>16&255,i[e+3]=r>>>24}function a(r,i,e){i[e]=r>>>24,i[e+1]=r>>>16&255,i[e+2]=r>>>8&255,i[e+3]=r&255}function u(r,i){return(r[i]|r[i+1]<<8|r[i+2]<<16|r[i+3]<<24)>>>0}function n(r,i){return(r[i]<<24|r[i+1]<<16|r[i+2]<<8|r[i+3])>>>0}return float}var inquire_1,hasRequiredInquire;function requireInquire(){if(hasRequiredInquire)return inquire_1;hasRequiredInquire=1,inquire_1=inquire;function inquire(moduleName){try{var mod=eval("quire".replace(/^/,"re"))(moduleName);if(mod&&(mod.length||Object.keys(mod).length))return mod}catch(p){}return null}return inquire_1}var utf8={},hasRequiredUtf8;function requireUtf8(){return hasRequiredUtf8||(hasRequiredUtf8=1,(function(p){var o=p;o.length=function(u){for(var n=0,r=0,i=0;i<u.length;++i)r=u.charCodeAt(i),r<128?n+=1:r<2048?n+=2:(r&64512)===55296&&(u.charCodeAt(i+1)&64512)===56320?(++i,n+=4):n+=3;return n},o.read=function(u,n,r){var i=r-n;if(i<1)return"";for(var e=null,t=[],s=0,l;n<r;)l=u[n++],l<128?t[s++]=l:l>191&&l<224?t[s++]=(l&31)<<6|u[n++]&63:l>239&&l<365?(l=((l&7)<<18|(u[n++]&63)<<12|(u[n++]&63)<<6|u[n++]&63)-65536,t[s++]=55296+(l>>10),t[s++]=56320+(l&1023)):t[s++]=(l&15)<<12|(u[n++]&63)<<6|u[n++]&63,s>8191&&((e||(e=[])).push(String.fromCharCode.apply(String,t)),s=0);return e?(s&&e.push(String.fromCharCode.apply(String,t.slice(0,s))),e.join("")):String.fromCharCode.apply(String,t.slice(0,s))},o.write=function(u,n,r){for(var i=r,e,t,s=0;s<u.length;++s)e=u.charCodeAt(s),e<128?n[r++]=e:e<2048?(n[r++]=e>>6|192,n[r++]=e&63|128):(e&64512)===55296&&((t=u.charCodeAt(s+1))&64512)===56320?(e=65536+((e&1023)<<10)+(t&1023),++s,n[r++]=e>>18|240,n[r++]=e>>12&63|128,n[r++]=e>>6&63|128,n[r++]=e&63|128):(n[r++]=e>>12|224,n[r++]=e>>6&63|128,n[r++]=e&63|128);return r-i}})(utf8)),utf8}var pool_1,hasRequiredPool;function requirePool(){if(hasRequiredPool)return pool_1;hasRequiredPool=1,pool_1=p;function p(o,a,u){var n=u||8192,r=n>>>1,i=null,e=n;return function(s){if(s<1||s>r)return o(s);e+s>n&&(i=o(n),e=0);var l=a.call(i,e,e+=s);return e&7&&(e=(e|7)+1),l}}return pool_1}var longbits,hasRequiredLongbits;function requireLongbits(){if(hasRequiredLongbits)return longbits;hasRequiredLongbits=1,longbits=o;var p=requireMinimal$1();function o(r,i){this.lo=r>>>0,this.hi=i>>>0}var a=o.zero=new o(0,0);a.toNumber=function(){return 0},a.zzEncode=a.zzDecode=function(){return this},a.length=function(){return 1};var u=o.zeroHash="\0\0\0\0\0\0\0\0";o.fromNumber=function(i){if(i===0)return a;var e=i<0;e&&(i=-i);var t=i>>>0,s=(i-t)/4294967296>>>0;return e&&(s=~s>>>0,t=~t>>>0,++t>4294967295&&(t=0,++s>4294967295&&(s=0))),new o(t,s)},o.from=function(i){if(typeof i=="number")return o.fromNumber(i);if(p.isString(i))if(p.Long)i=p.Long.fromString(i);else return o.fromNumber(parseInt(i,10));return i.low||i.high?new o(i.low>>>0,i.high>>>0):a},o.prototype.toNumber=function(i){if(!i&&this.hi>>>31){var e=~this.lo+1>>>0,t=~this.hi>>>0;return e||(t=t+1>>>0),-(e+t*4294967296)}return this.lo+this.hi*4294967296},o.prototype.toLong=function(i){return p.Long?new p.Long(this.lo|0,this.hi|0,!!i):{low:this.lo|0,high:this.hi|0,unsigned:!!i}};var n=String.prototype.charCodeAt;return o.fromHash=function(i){return i===u?a:new o((n.call(i,0)|n.call(i,1)<<8|n.call(i,2)<<16|n.call(i,3)<<24)>>>0,(n.call(i,4)|n.call(i,5)<<8|n.call(i,6)<<16|n.call(i,7)<<24)>>>0)},o.prototype.toHash=function(){return String.fromCharCode(this.lo&255,this.lo>>>8&255,this.lo>>>16&255,this.lo>>>24,this.hi&255,this.hi>>>8&255,this.hi>>>16&255,this.hi>>>24)},o.prototype.zzEncode=function(){var i=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^i)>>>0,this.lo=(this.lo<<1^i)>>>0,this},o.prototype.zzDecode=function(){var i=-(this.lo&1);return this.lo=((this.lo>>>1|this.hi<<31)^i)>>>0,this.hi=(this.hi>>>1^i)>>>0,this},o.prototype.length=function(){var i=this.lo,e=(this.lo>>>28|this.hi<<4)>>>0,t=this.hi>>>24;return t===0?e===0?i<16384?i<128?1:2:i<2097152?3:4:e<16384?e<128?5:6:e<2097152?7:8:t<128?9:10},longbits}var hasRequiredMinimal$1;function requireMinimal$1(){return hasRequiredMinimal$1||(hasRequiredMinimal$1=1,(function(p){var o=p;o.asPromise=requireAspromise(),o.base64=requireBase64(),o.EventEmitter=requireEventemitter(),o.float=requireFloat(),o.inquire=requireInquire(),o.utf8=requireUtf8(),o.pool=requirePool(),o.LongBits=requireLongbits(),o.isNode=!!(typeof commonjsGlobal<"u"&&commonjsGlobal&&commonjsGlobal.process&&commonjsGlobal.process.versions&&commonjsGlobal.process.versions.node),o.global=o.isNode&&commonjsGlobal||typeof window<"u"&&window||typeof self<"u"&&self||minimal$1,o.emptyArray=Object.freeze?Object.freeze([]):[],o.emptyObject=Object.freeze?Object.freeze({}):{},o.isInteger=Number.isInteger||function(r){return typeof r=="number"&&isFinite(r)&&Math.floor(r)===r},o.isString=function(r){return typeof r=="string"||r instanceof String},o.isObject=function(r){return r&&typeof r=="object"},o.isset=o.isSet=function(r,i){var e=r[i];return e!=null&&r.hasOwnProperty(i)?typeof e!="object"||(Array.isArray(e)?e.length:Object.keys(e).length)>0:!1},o.Buffer=(function(){try{var n=o.inquire("buffer").Buffer;return n.prototype.utf8Write?n:null}catch{return null}})(),o._Buffer_from=null,o._Buffer_allocUnsafe=null,o.newBuffer=function(r){return typeof r=="number"?o.Buffer?o._Buffer_allocUnsafe(r):new o.Array(r):o.Buffer?o._Buffer_from(r):typeof Uint8Array>"u"?r:new Uint8Array(r)},o.Array=typeof Uint8Array<"u"?Uint8Array:Array,o.Long=o.global.dcodeIO&&o.global.dcodeIO.Long||o.global.Long||o.inquire("long"),o.key2Re=/^true|false|0|1$/,o.key32Re=/^-?(?:0|[1-9][0-9]*)$/,o.key64Re=/^(?:[\\x00-\\xff]{8}|-?(?:0|[1-9][0-9]*))$/,o.longToHash=function(r){return r?o.LongBits.from(r).toHash():o.LongBits.zeroHash},o.longFromHash=function(r,i){var e=o.LongBits.fromHash(r);return o.Long?o.Long.fromBits(e.lo,e.hi,i):e.toNumber(!!i)};function a(n,r,i){for(var e=Object.keys(r),t=0;t<e.length;++t)(n[e[t]]===void 0||!i)&&(n[e[t]]=r[e[t]]);return n}o.merge=a,o.lcFirst=function(r){return r.charAt(0).toLowerCase()+r.substring(1)};function u(n){function r(i,e){if(!(this instanceof r))return new r(i,e);Object.defineProperty(this,"message",{get:function(){return i}}),Error.captureStackTrace?Error.captureStackTrace(this,r):Object.defineProperty(this,"stack",{value:new Error().stack||""}),e&&a(this,e)}return r.prototype=Object.create(Error.prototype,{constructor:{value:r,writable:!0,enumerable:!1,configurable:!0},name:{get:function(){return n},set:void 0,enumerable:!1,configurable:!0},toString:{value:function(){return this.name+": "+this.message},writable:!0,enumerable:!1,configurable:!0}}),r}o.newError=u,o.ProtocolError=u("ProtocolError"),o.oneOfGetter=function(r){for(var i={},e=0;e<r.length;++e)i[r[e]]=1;return function(){for(var t=Object.keys(this),s=t.length-1;s>-1;--s)if(i[t[s]]===1&&this[t[s]]!==void 0&&this[t[s]]!==null)return t[s]}},o.oneOfSetter=function(r){return function(i){for(var e=0;e<r.length;++e)r[e]!==i&&delete this[r[e]]}},o.toJSONOptions={longs:String,enums:String,bytes:String,json:!0},o._configure=function(){var n=o.Buffer;if(!n){o._Buffer_from=o._Buffer_allocUnsafe=null;return}o._Buffer_from=n.from!==Uint8Array.from&&n.from||function(i,e){return new n(i,e)},o._Buffer_allocUnsafe=n.allocUnsafe||function(i){return new n(i)}}})(minimal$1)),minimal$1}var writer,hasRequiredWriter;function requireWriter(){if(hasRequiredWriter)return writer;hasRequiredWriter=1,writer=t;var p=requireMinimal$1(),o,a=p.LongBits,u=p.base64,n=p.utf8;function r(m,y,b){this.fn=m,this.len=y,this.next=void 0,this.val=b}function i(){}function e(m){this.head=m.head,this.tail=m.tail,this.len=m.len,this.next=m.states}function t(){this.len=0,this.head=new r(i,0,0),this.tail=this.head,this.states=null}var s=function(){return p.Buffer?function(){return(t.create=function(){return new o})()}:function(){return new t}};t.create=s(),t.alloc=function(y){return new p.Array(y)},p.Array!==Array&&(t.alloc=p.pool(t.alloc,p.Array.prototype.subarray)),t.prototype._push=function(y,b,k){return this.tail=this.tail.next=new r(y,b,k),this.len+=b,this};function l(m,y,b){y[b]=m&255}function c(m,y,b){for(;m>127;)y[b++]=m&127|128,m>>>=7;y[b]=m}function d(m,y){this.len=m,this.next=void 0,this.val=y}d.prototype=Object.create(r.prototype),d.prototype.fn=c,t.prototype.uint32=function(y){return this.len+=(this.tail=this.tail.next=new d((y=y>>>0)<128?1:y<16384?2:y<2097152?3:y<268435456?4:5,y)).len,this},t.prototype.int32=function(y){return y<0?this._push(f,10,a.fromNumber(y)):this.uint32(y)},t.prototype.sint32=function(y){return this.uint32((y<<1^y>>31)>>>0)};function f(m,y,b){for(;m.hi;)y[b++]=m.lo&127|128,m.lo=(m.lo>>>7|m.hi<<25)>>>0,m.hi>>>=7;for(;m.lo>127;)y[b++]=m.lo&127|128,m.lo=m.lo>>>7;y[b++]=m.lo}t.prototype.uint64=function(y){var b=a.from(y);return this._push(f,b.length(),b)},t.prototype.int64=t.prototype.uint64,t.prototype.sint64=function(y){var b=a.from(y).zzEncode();return this._push(f,b.length(),b)},t.prototype.bool=function(y){return this._push(l,1,y?1:0)};function h(m,y,b){y[b]=m&255,y[b+1]=m>>>8&255,y[b+2]=m>>>16&255,y[b+3]=m>>>24}t.prototype.fixed32=function(y){return this._push(h,4,y>>>0)},t.prototype.sfixed32=t.prototype.fixed32,t.prototype.fixed64=function(y){var b=a.from(y);return this._push(h,4,b.lo)._push(h,4,b.hi)},t.prototype.sfixed64=t.prototype.fixed64,t.prototype.float=function(y){return this._push(p.float.writeFloatLE,4,y)},t.prototype.double=function(y){return this._push(p.float.writeDoubleLE,8,y)};var g=p.Array.prototype.set?function(y,b,k){b.set(y,k)}:function(y,b,k){for(var w=0;w<y.length;++w)b[k+w]=y[w]};return t.prototype.bytes=function(y){var b=y.length>>>0;if(!b)return this._push(l,1,0);if(p.isString(y)){var k=t.alloc(b=u.length(y));u.decode(y,k,0),y=k}return this.uint32(b)._push(g,b,y)},t.prototype.string=function(y){var b=n.length(y);return b?this.uint32(b)._push(n.write,b,y):this._push(l,1,0)},t.prototype.fork=function(){return this.states=new e(this),this.head=this.tail=new r(i,0,0),this.len=0,this},t.prototype.reset=function(){return this.states?(this.head=this.states.head,this.tail=this.states.tail,this.len=this.states.len,this.states=this.states.next):(this.head=this.tail=new r(i,0,0),this.len=0),this},t.prototype.ldelim=function(){var y=this.head,b=this.tail,k=this.len;return this.reset().uint32(k),k&&(this.tail.next=y.next,this.tail=b,this.len+=k),this},t.prototype.finish=function(){for(var y=this.head.next,b=this.constructor.alloc(this.len),k=0;y;)y.fn(y.val,b,k),k+=y.len,y=y.next;return b},t._configure=function(m){o=m,t.create=s(),o._configure()},writer}var writer_buffer,hasRequiredWriter_buffer;function requireWriter_buffer(){if(hasRequiredWriter_buffer)return writer_buffer;hasRequiredWriter_buffer=1,writer_buffer=a;var p=requireWriter();(a.prototype=Object.create(p.prototype)).constructor=a;var o=requireMinimal$1();function a(){p.call(this)}a._configure=function(){a.alloc=o._Buffer_allocUnsafe,a.writeBytesBuffer=o.Buffer&&o.Buffer.prototype instanceof Uint8Array&&o.Buffer.prototype.set.name==="set"?function(r,i,e){i.set(r,e)}:function(r,i,e){if(r.copy)r.copy(i,e,0,r.length);else for(var t=0;t<r.length;)i[e++]=r[t++]}},a.prototype.bytes=function(r){o.isString(r)&&(r=o._Buffer_from(r,"base64"));var i=r.length>>>0;return this.uint32(i),i&&this._push(a.writeBytesBuffer,i,r),this};function u(n,r,i){n.length<40?o.utf8.write(n,r,i):r.utf8Write?r.utf8Write(n,i):r.write(n,i)}return a.prototype.string=function(r){var i=o.Buffer.byteLength(r);return this.uint32(i),i&&this._push(u,i,r),this},a._configure(),writer_buffer}var reader,hasRequiredReader;function requireReader(){if(hasRequiredReader)return reader;hasRequiredReader=1,reader=r;var p=requireMinimal$1(),o,a=p.LongBits,u=p.utf8;function n(c,d){return RangeError("index out of range: "+c.pos+" + "+(d||1)+" > "+c.len)}function r(c){this.buf=c,this.pos=0,this.len=c.length}var i=typeof Uint8Array<"u"?function(d){if(d instanceof Uint8Array||Array.isArray(d))return new r(d);throw Error("illegal buffer")}:function(d){if(Array.isArray(d))return new r(d);throw Error("illegal buffer")},e=function(){return p.Buffer?function(f){return(r.create=function(g){return p.Buffer.isBuffer(g)?new o(g):i(g)})(f)}:i};r.create=e(),r.prototype._slice=p.Array.prototype.subarray||p.Array.prototype.slice,r.prototype.uint32=(function(){var d=4294967295;return function(){if(d=(this.buf[this.pos]&127)>>>0,this.buf[this.pos++]<128||(d=(d|(this.buf[this.pos]&127)<<7)>>>0,this.buf[this.pos++]<128)||(d=(d|(this.buf[this.pos]&127)<<14)>>>0,this.buf[this.pos++]<128)||(d=(d|(this.buf[this.pos]&127)<<21)>>>0,this.buf[this.pos++]<128)||(d=(d|(this.buf[this.pos]&15)<<28)>>>0,this.buf[this.pos++]<128))return d;if((this.pos+=5)>this.len)throw this.pos=this.len,n(this,10);return d}})(),r.prototype.int32=function(){return this.uint32()|0},r.prototype.sint32=function(){var d=this.uint32();return d>>>1^-(d&1)|0};function t(){var c=new a(0,0),d=0;if(this.len-this.pos>4){for(;d<4;++d)if(c.lo=(c.lo|(this.buf[this.pos]&127)<<d*7)>>>0,this.buf[this.pos++]<128)return c;if(c.lo=(c.lo|(this.buf[this.pos]&127)<<28)>>>0,c.hi=(c.hi|(this.buf[this.pos]&127)>>4)>>>0,this.buf[this.pos++]<128)return c;d=0}else{for(;d<3;++d){if(this.pos>=this.len)throw n(this);if(c.lo=(c.lo|(this.buf[this.pos]&127)<<d*7)>>>0,this.buf[this.pos++]<128)return c}return c.lo=(c.lo|(this.buf[this.pos++]&127)<<d*7)>>>0,c}if(this.len-this.pos>4){for(;d<5;++d)if(c.hi=(c.hi|(this.buf[this.pos]&127)<<d*7+3)>>>0,this.buf[this.pos++]<128)return c}else for(;d<5;++d){if(this.pos>=this.len)throw n(this);if(c.hi=(c.hi|(this.buf[this.pos]&127)<<d*7+3)>>>0,this.buf[this.pos++]<128)return c}throw Error("invalid varint encoding")}r.prototype.bool=function(){return this.uint32()!==0};function s(c,d){return(c[d-4]|c[d-3]<<8|c[d-2]<<16|c[d-1]<<24)>>>0}r.prototype.fixed32=function(){if(this.pos+4>this.len)throw n(this,4);return s(this.buf,this.pos+=4)},r.prototype.sfixed32=function(){if(this.pos+4>this.len)throw n(this,4);return s(this.buf,this.pos+=4)|0};function l(){if(this.pos+8>this.len)throw n(this,8);return new a(s(this.buf,this.pos+=4),s(this.buf,this.pos+=4))}return r.prototype.float=function(){if(this.pos+4>this.len)throw n(this,4);var d=p.float.readFloatLE(this.buf,this.pos);return this.pos+=4,d},r.prototype.double=function(){if(this.pos+8>this.len)throw n(this,4);var d=p.float.readDoubleLE(this.buf,this.pos);return this.pos+=8,d},r.prototype.bytes=function(){var d=this.uint32(),f=this.pos,h=this.pos+d;if(h>this.len)throw n(this,d);if(this.pos+=d,Array.isArray(this.buf))return this.buf.slice(f,h);if(f===h){var g=p.Buffer;return g?g.alloc(0):new this.buf.constructor(0)}return this._slice.call(this.buf,f,h)},r.prototype.string=function(){var d=this.bytes();return u.read(d,0,d.length)},r.prototype.skip=function(d){if(typeof d=="number"){if(this.pos+d>this.len)throw n(this,d);this.pos+=d}else do if(this.pos>=this.len)throw n(this);while(this.buf[this.pos++]&128);return this},r.prototype.skipType=function(c){switch(c){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;(c=this.uint32()&7)!==4;)this.skipType(c);break;case 5:this.skip(4);break;default:throw Error("invalid wire type "+c+" at offset "+this.pos)}return this},r._configure=function(c){o=c,r.create=e(),o._configure();var d=p.Long?"toLong":"toNumber";p.merge(r.prototype,{int64:function(){return t.call(this)[d](!1)},uint64:function(){return t.call(this)[d](!0)},sint64:function(){return t.call(this).zzDecode()[d](!1)},fixed64:function(){return l.call(this)[d](!0)},sfixed64:function(){return l.call(this)[d](!1)}})},reader}var reader_buffer,hasRequiredReader_buffer;function requireReader_buffer(){if(hasRequiredReader_buffer)return reader_buffer;hasRequiredReader_buffer=1,reader_buffer=a;var p=requireReader();(a.prototype=Object.create(p.prototype)).constructor=a;var o=requireMinimal$1();function a(u){p.call(this,u)}return a._configure=function(){o.Buffer&&(a.prototype._slice=o.Buffer.prototype.slice)},a.prototype.string=function(){var n=this.uint32();return this.buf.utf8Slice?this.buf.utf8Slice(this.pos,this.pos=Math.min(this.pos+n,this.len)):this.buf.toString("utf-8",this.pos,this.pos=Math.min(this.pos+n,this.len))},a._configure(),reader_buffer}var rpc={},service,hasRequiredService;function requireService(){if(hasRequiredService)return service;hasRequiredService=1,service=o;var p=requireMinimal$1();(o.prototype=Object.create(p.EventEmitter.prototype)).constructor=o;function o(a,u,n){if(typeof a!="function")throw TypeError("rpcImpl must be a function");p.EventEmitter.call(this),this.rpcImpl=a,this.requestDelimited=!!u,this.responseDelimited=!!n}return o.prototype.rpcCall=function a(u,n,r,i,e){if(!i)throw TypeError("request must be specified");var t=this;if(!e)return p.asPromise(a,t,u,n,r,i);if(!t.rpcImpl){setTimeout(function(){e(Error("already ended"))},0);return}try{return t.rpcImpl(u,n[t.requestDelimited?"encodeDelimited":"encode"](i).finish(),function(l,c){if(l)return t.emit("error",l,u),e(l);if(c===null){t.end(!0);return}if(!(c instanceof r))try{c=r[t.responseDelimited?"decodeDelimited":"decode"](c)}catch(d){return t.emit("error",d,u),e(d)}return t.emit("data",c,u),e(null,c)})}catch(s){t.emit("error",s,u),setTimeout(function(){e(s)},0);return}},o.prototype.end=function(u){return this.rpcImpl&&(u||this.rpcImpl(null,null,null),this.rpcImpl=null,this.emit("end").off()),this},service}var hasRequiredRpc;function requireRpc(){return hasRequiredRpc||(hasRequiredRpc=1,(function(p){var o=p;o.Service=requireService()})(rpc)),rpc}var roots,hasRequiredRoots;function requireRoots(){return hasRequiredRoots||(hasRequiredRoots=1,roots={}),roots}var hasRequiredIndexMinimal;function requireIndexMinimal(){return hasRequiredIndexMinimal||(hasRequiredIndexMinimal=1,(function(p){var o=p;o.build="minimal",o.Writer=requireWriter(),o.BufferWriter=requireWriter_buffer(),o.Reader=requireReader(),o.BufferReader=requireReader_buffer(),o.util=requireMinimal$1(),o.rpc=requireRpc(),o.roots=requireRoots(),o.configure=a;function a(){o.util._configure(),o.Writer._configure(o.BufferWriter),o.Reader._configure(o.BufferReader)}a()})(indexMinimal)),indexMinimal}var minimal,hasRequiredMinimal;function requireMinimal(){return hasRequiredMinimal||(hasRequiredMinimal=1,minimal=requireIndexMinimal()),minimal}var minimalExports=requireMinimal();const $Reader=minimalExports.Reader,$Writer=minimalExports.Writer,$util=minimalExports.util,$root=minimalExports.roots.default||(minimalExports.roots.default={}),com=$root.com=(()=>{const p={};return p.quick=(function(){const o={};return o.voice=(function(){const a={};return a.proto=(function(){const u={};return u.SeiData=(function(){function n(r){if(r)for(let i=Object.keys(r),e=0;e<i.length;++e)r[i[e]]!=null&&(this[i[e]]=r[i[e]])}return n.prototype.event=0,n.prototype.data=$util.newBuffer([]),n.prototype.compress=!1,n.prototype.version=0,n.create=function(i){return new n(i)},n.encode=function(i,e){return e||(e=$Writer.create()),i.event!=null&&Object.hasOwnProperty.call(i,"event")&&e.uint32(8).int32(i.event),i.data!=null&&Object.hasOwnProperty.call(i,"data")&&e.uint32(18).bytes(i.data),i.compress!=null&&Object.hasOwnProperty.call(i,"compress")&&e.uint32(24).bool(i.compress),i.version!=null&&Object.hasOwnProperty.call(i,"version")&&e.uint32(32).int32(i.version),e},n.encodeDelimited=function(i,e){return this.encode(i,e).ldelim()},n.decode=function(i,e,t){i instanceof $Reader||(i=$Reader.create(i));let s=e===void 0?i.len:i.pos+e,l=new $root.com.quick.voice.proto.SeiData;for(;i.pos<s;){let c=i.uint32();if(c===t)break;switch(c>>>3){case 1:{l.event=i.int32();break}case 2:{l.data=i.bytes();break}case 3:{l.compress=i.bool();break}case 4:{l.version=i.int32();break}default:i.skipType(c&7);break}}return l},n.decodeDelimited=function(i){return i instanceof $Reader||(i=new $Reader(i)),this.decode(i,i.uint32())},n.verify=function(i){if(typeof i!="object"||i===null)return"object expected";if(i.event!=null&&i.hasOwnProperty("event"))switch(i.event){default:return"event: enum value expected";case 0:case 1:break}return i.data!=null&&i.hasOwnProperty("data")&&!(i.data&&typeof i.data.length=="number"||$util.isString(i.data))?"data: buffer expected":i.compress!=null&&i.hasOwnProperty("compress")&&typeof i.compress!="boolean"?"compress: boolean expected":i.version!=null&&i.hasOwnProperty("version")&&!$util.isInteger(i.version)?"version: integer expected":null},n.fromObject=function(i){if(i instanceof $root.com.quick.voice.proto.SeiData)return i;let e=new $root.com.quick.voice.proto.SeiData;switch(i.event){default:if(typeof i.event=="number"){e.event=i.event;break}break;case"Layout":case 0:e.event=0;break;case"Custom":case 1:e.event=1;break}return i.data!=null&&(typeof i.data=="string"?$util.base64.decode(i.data,e.data=$util.newBuffer($util.base64.length(i.data)),0):i.data.length>=0&&(e.data=i.data)),i.compress!=null&&(e.compress=!!i.compress),i.version!=null&&(e.version=i.version|0),e},n.toObject=function(i,e){e||(e={});let t={};return e.defaults&&(t.event=e.enums===String?"Layout":0,e.bytes===String?t.data="":(t.data=[],e.bytes!==Array&&(t.data=$util.newBuffer(t.data))),t.compress=!1,t.version=0),i.event!=null&&i.hasOwnProperty("event")&&(t.event=e.enums===String?$root.com.quick.voice.proto.EventType[i.event]===void 0?i.event:$root.com.quick.voice.proto.EventType[i.event]:i.event),i.data!=null&&i.hasOwnProperty("data")&&(t.data=e.bytes===String?$util.base64.encode(i.data,0,i.data.length):e.bytes===Array?Array.prototype.slice.call(i.data):i.data),i.compress!=null&&i.hasOwnProperty("compress")&&(t.compress=i.compress),i.version!=null&&i.hasOwnProperty("version")&&(t.version=i.version),t},n.prototype.toJSON=function(){return this.constructor.toObject(this,minimalExports.util.toJSONOptions)},n.getTypeUrl=function(i){return i===void 0&&(i="type.googleapis.com"),i+"/com.quick.voice.proto.SeiData"},n})(),u.EventType=(function(){const n={},r=Object.create(n);return r[n[0]="Layout"]=0,r[n[1]="Custom"]=1,r})(),u.LayoutData=(function(){function n(i){if(this.userMap={},i)for(let e=Object.keys(i),t=0;t<e.length;++t)i[e[t]]!=null&&(this[e[t]]=i[e[t]])}n.prototype.roomId="",n.prototype.type=0,n.prototype.userMap=$util.emptyObject,n.prototype.globalCustom=null;let r;return Object.defineProperty(n.prototype,"_globalCustom",{get:$util.oneOfGetter(r=["globalCustom"]),set:$util.oneOfSetter(r)}),n.create=function(e){return new n(e)},n.encode=function(e,t){if(t||(t=$Writer.create()),e.roomId!=null&&Object.hasOwnProperty.call(e,"roomId")&&t.uint32(10).string(e.roomId),e.type!=null&&Object.hasOwnProperty.call(e,"type")&&t.uint32(16).int32(e.type),e.userMap!=null&&Object.hasOwnProperty.call(e,"userMap"))for(let s=Object.keys(e.userMap),l=0;l<s.length;++l)t.uint32(26).fork().uint32(10).string(s[l]),$root.com.quick.voice.proto.UserInfo.encode(e.userMap[s[l]],t.uint32(18).fork()).ldelim().ldelim();return e.globalCustom!=null&&Object.hasOwnProperty.call(e,"globalCustom")&&$root.com.quick.voice.proto.CustomInfo.encode(e.globalCustom,t.uint32(34).fork()).ldelim(),t},n.encodeDelimited=function(e,t){return this.encode(e,t).ldelim()},n.decode=function(e,t,s){e instanceof $Reader||(e=$Reader.create(e));let l=t===void 0?e.len:e.pos+t,c=new $root.com.quick.voice.proto.LayoutData,d,f;for(;e.pos<l;){let h=e.uint32();if(h===s)break;switch(h>>>3){case 1:{c.roomId=e.string();break}case 2:{c.type=e.int32();break}case 3:{c.userMap===$util.emptyObject&&(c.userMap={});let g=e.uint32()+e.pos;for(d="",f=null;e.pos<g;){let m=e.uint32();switch(m>>>3){case 1:d=e.string();break;case 2:f=$root.com.quick.voice.proto.UserInfo.decode(e,e.uint32());break;default:e.skipType(m&7);break}}c.userMap[d]=f;break}case 4:{c.globalCustom=$root.com.quick.voice.proto.CustomInfo.decode(e,e.uint32());break}default:e.skipType(h&7);break}}return c},n.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},n.verify=function(e){if(typeof e!="object"||e===null)return"object expected";if(e.roomId!=null&&e.hasOwnProperty("roomId")&&!$util.isString(e.roomId))return"roomId: string expected";if(e.type!=null&&e.hasOwnProperty("type"))switch(e.type){default:return"type: enum value expected";case 0:case 1:case 2:break}if(e.userMap!=null&&e.hasOwnProperty("userMap")){if(!$util.isObject(e.userMap))return"userMap: object expected";let t=Object.keys(e.userMap);for(let s=0;s<t.length;++s){let l=$root.com.quick.voice.proto.UserInfo.verify(e.userMap[t[s]]);if(l)return"userMap."+l}}if(e.globalCustom!=null&&e.hasOwnProperty("globalCustom")){let t=$root.com.quick.voice.proto.CustomInfo.verify(e.globalCustom);if(t)return"globalCustom."+t}return null},n.fromObject=function(e){if(e instanceof $root.com.quick.voice.proto.LayoutData)return e;let t=new $root.com.quick.voice.proto.LayoutData;switch(e.roomId!=null&&(t.roomId=String(e.roomId)),e.type){default:if(typeof e.type=="number"){t.type=e.type;break}break;case"AudioAndVideo":case 0:t.type=0;break;case"OnlyAudio":case 1:t.type=1;break;case"OnlyVideo":case 2:t.type=2;break}if(e.userMap){if(typeof e.userMap!="object")throw TypeError(".com.quick.voice.proto.LayoutData.userMap: object expected");t.userMap={};for(let s=Object.keys(e.userMap),l=0;l<s.length;++l){if(typeof e.userMap[s[l]]!="object")throw TypeError(".com.quick.voice.proto.LayoutData.userMap: object expected");t.userMap[s[l]]=$root.com.quick.voice.proto.UserInfo.fromObject(e.userMap[s[l]])}}if(e.globalCustom!=null){if(typeof e.globalCustom!="object")throw TypeError(".com.quick.voice.proto.LayoutData.globalCustom: object expected");t.globalCustom=$root.com.quick.voice.proto.CustomInfo.fromObject(e.globalCustom)}return t},n.toObject=function(e,t){t||(t={});let s={};(t.objects||t.defaults)&&(s.userMap={}),t.defaults&&(s.roomId="",s.type=t.enums===String?"AudioAndVideo":0),e.roomId!=null&&e.hasOwnProperty("roomId")&&(s.roomId=e.roomId),e.type!=null&&e.hasOwnProperty("type")&&(s.type=t.enums===String?$root.com.quick.voice.proto.LayoutType[e.type]===void 0?e.type:$root.com.quick.voice.proto.LayoutType[e.type]:e.type);let l;if(e.userMap&&(l=Object.keys(e.userMap)).length){s.userMap={};for(let c=0;c<l.length;++c)s.userMap[l[c]]=$root.com.quick.voice.proto.UserInfo.toObject(e.userMap[l[c]],t)}return e.globalCustom!=null&&e.hasOwnProperty("globalCustom")&&(s.globalCustom=$root.com.quick.voice.proto.CustomInfo.toObject(e.globalCustom,t),t.oneofs&&(s._globalCustom="globalCustom")),s},n.prototype.toJSON=function(){return this.constructor.toObject(this,minimalExports.util.toJSONOptions)},n.getTypeUrl=function(e){return e===void 0&&(e="type.googleapis.com"),e+"/com.quick.voice.proto.LayoutData"},n})(),u.UserInfo=(function(){function n(i){if(this.audios=[],this.videos=[],i)for(let e=Object.keys(i),t=0;t<e.length;++t)i[e[t]]!=null&&(this[e[t]]=i[e[t]])}n.prototype.id="",n.prototype.audios=$util.emptyArray,n.prototype.videos=$util.emptyArray,n.prototype.custom=null;let r;return Object.defineProperty(n.prototype,"_custom",{get:$util.oneOfGetter(r=["custom"]),set:$util.oneOfSetter(r)}),n.create=function(e){return new n(e)},n.encode=function(e,t){if(t||(t=$Writer.create()),e.id!=null&&Object.hasOwnProperty.call(e,"id")&&t.uint32(10).string(e.id),e.audios!=null&&e.audios.length)for(let s=0;s<e.audios.length;++s)$root.com.quick.voice.proto.AudioInfo.encode(e.audios[s],t.uint32(18).fork()).ldelim();if(e.videos!=null&&e.videos.length)for(let s=0;s<e.videos.length;++s)$root.com.quick.voice.proto.VideoInfo.encode(e.videos[s],t.uint32(26).fork()).ldelim();return e.custom!=null&&Object.hasOwnProperty.call(e,"custom")&&$root.com.quick.voice.proto.CustomInfo.encode(e.custom,t.uint32(34).fork()).ldelim(),t},n.encodeDelimited=function(e,t){return this.encode(e,t).ldelim()},n.decode=function(e,t,s){e instanceof $Reader||(e=$Reader.create(e));let l=t===void 0?e.len:e.pos+t,c=new $root.com.quick.voice.proto.UserInfo;for(;e.pos<l;){let d=e.uint32();if(d===s)break;switch(d>>>3){case 1:{c.id=e.string();break}case 2:{c.audios&&c.audios.length||(c.audios=[]),c.audios.push($root.com.quick.voice.proto.AudioInfo.decode(e,e.uint32()));break}case 3:{c.videos&&c.videos.length||(c.videos=[]),c.videos.push($root.com.quick.voice.proto.VideoInfo.decode(e,e.uint32()));break}case 4:{c.custom=$root.com.quick.voice.proto.CustomInfo.decode(e,e.uint32());break}default:e.skipType(d&7);break}}return c},n.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},n.verify=function(e){if(typeof e!="object"||e===null)return"object expected";if(e.id!=null&&e.hasOwnProperty("id")&&!$util.isString(e.id))return"id: string expected";if(e.audios!=null&&e.hasOwnProperty("audios")){if(!Array.isArray(e.audios))return"audios: array expected";for(let t=0;t<e.audios.length;++t){let s=$root.com.quick.voice.proto.AudioInfo.verify(e.audios[t]);if(s)return"audios."+s}}if(e.videos!=null&&e.hasOwnProperty("videos")){if(!Array.isArray(e.videos))return"videos: array expected";for(let t=0;t<e.videos.length;++t){let s=$root.com.quick.voice.proto.VideoInfo.verify(e.videos[t]);if(s)return"videos."+s}}if(e.custom!=null&&e.hasOwnProperty("custom")){let t=$root.com.quick.voice.proto.CustomInfo.verify(e.custom);if(t)return"custom."+t}return null},n.fromObject=function(e){if(e instanceof $root.com.quick.voice.proto.UserInfo)return e;let t=new $root.com.quick.voice.proto.UserInfo;if(e.id!=null&&(t.id=String(e.id)),e.audios){if(!Array.isArray(e.audios))throw TypeError(".com.quick.voice.proto.UserInfo.audios: array expected");t.audios=[];for(let s=0;s<e.audios.length;++s){if(typeof e.audios[s]!="object")throw TypeError(".com.quick.voice.proto.UserInfo.audios: object expected");t.audios[s]=$root.com.quick.voice.proto.AudioInfo.fromObject(e.audios[s])}}if(e.videos){if(!Array.isArray(e.videos))throw TypeError(".com.quick.voice.proto.UserInfo.videos: array expected");t.videos=[];for(let s=0;s<e.videos.length;++s){if(typeof e.videos[s]!="object")throw TypeError(".com.quick.voice.proto.UserInfo.videos: object expected");t.videos[s]=$root.com.quick.voice.proto.VideoInfo.fromObject(e.videos[s])}}if(e.custom!=null){if(typeof e.custom!="object")throw TypeError(".com.quick.voice.proto.UserInfo.custom: object expected");t.custom=$root.com.quick.voice.proto.CustomInfo.fromObject(e.custom)}return t},n.toObject=function(e,t){t||(t={});let s={};if((t.arrays||t.defaults)&&(s.audios=[],s.videos=[]),t.defaults&&(s.id=""),e.id!=null&&e.hasOwnProperty("id")&&(s.id=e.id),e.audios&&e.audios.length){s.audios=[];for(let l=0;l<e.audios.length;++l)s.audios[l]=$root.com.quick.voice.proto.AudioInfo.toObject(e.audios[l],t)}if(e.videos&&e.videos.length){s.videos=[];for(let l=0;l<e.videos.length;++l)s.videos[l]=$root.com.quick.voice.proto.VideoInfo.toObject(e.videos[l],t)}return e.custom!=null&&e.hasOwnProperty("custom")&&(s.custom=$root.com.quick.voice.proto.CustomInfo.toObject(e.custom,t),t.oneofs&&(s._custom="custom")),s},n.prototype.toJSON=function(){return this.constructor.toObject(this,minimalExports.util.toJSONOptions)},n.getTypeUrl=function(e){return e===void 0&&(e="type.googleapis.com"),e+"/com.quick.voice.proto.UserInfo"},n})(),u.AudioInfo=(function(){function n(i){if(i)for(let e=Object.keys(i),t=0;t<e.length;++t)i[e[t]]!=null&&(this[e[t]]=i[e[t]])}n.prototype.type=0,n.prototype.isEnable=!1,n.prototype.isMute=!1,n.prototype.volume=0,n.prototype.updateTime=null;let r;return Object.defineProperty(n.prototype,"_updateTime",{get:$util.oneOfGetter(r=["updateTime"]),set:$util.oneOfSetter(r)}),n.create=function(e){return new n(e)},n.encode=function(e,t){return t||(t=$Writer.create()),e.type!=null&&Object.hasOwnProperty.call(e,"type")&&t.uint32(8).int32(e.type),e.isEnable!=null&&Object.hasOwnProperty.call(e,"isEnable")&&t.uint32(16).bool(e.isEnable),e.isMute!=null&&Object.hasOwnProperty.call(e,"isMute")&&t.uint32(24).bool(e.isMute),e.volume!=null&&Object.hasOwnProperty.call(e,"volume")&&t.uint32(33).double(e.volume),e.updateTime!=null&&Object.hasOwnProperty.call(e,"updateTime")&&t.uint32(40).int64(e.updateTime),t},n.encodeDelimited=function(e,t){return this.encode(e,t).ldelim()},n.decode=function(e,t,s){e instanceof $Reader||(e=$Reader.create(e));let l=t===void 0?e.len:e.pos+t,c=new $root.com.quick.voice.proto.AudioInfo;for(;e.pos<l;){let d=e.uint32();if(d===s)break;switch(d>>>3){case 1:{c.type=e.int32();break}case 2:{c.isEnable=e.bool();break}case 3:{c.isMute=e.bool();break}case 4:{c.volume=e.double();break}case 5:{c.updateTime=e.int64();break}default:e.skipType(d&7);break}}return c},n.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},n.verify=function(e){if(typeof e!="object"||e===null)return"object expected";if(e.type!=null&&e.hasOwnProperty("type"))switch(e.type){default:return"type: enum value expected";case 0:case 1:break}return e.isEnable!=null&&e.hasOwnProperty("isEnable")&&typeof e.isEnable!="boolean"?"isEnable: boolean expected":e.isMute!=null&&e.hasOwnProperty("isMute")&&typeof e.isMute!="boolean"?"isMute: boolean expected":e.volume!=null&&e.hasOwnProperty("volume")&&typeof e.volume!="number"?"volume: number expected":e.updateTime!=null&&e.hasOwnProperty("updateTime")&&!$util.isInteger(e.updateTime)&&!(e.updateTime&&$util.isInteger(e.updateTime.low)&&$util.isInteger(e.updateTime.high))?"updateTime: integer|Long expected":null},n.fromObject=function(e){if(e instanceof $root.com.quick.voice.proto.AudioInfo)return e;let t=new $root.com.quick.voice.proto.AudioInfo;switch(e.type){default:if(typeof e.type=="number"){t.type=e.type;break}break;case"Microphone":case 0:t.type=0;break;case"SystemVoice":case 1:t.type=1;break}return e.isEnable!=null&&(t.isEnable=!!e.isEnable),e.isMute!=null&&(t.isMute=!!e.isMute),e.volume!=null&&(t.volume=Number(e.volume)),e.updateTime!=null&&($util.Long?(t.updateTime=$util.Long.fromValue(e.updateTime)).unsigned=!1:typeof e.updateTime=="string"?t.updateTime=parseInt(e.updateTime,10):typeof e.updateTime=="number"?t.updateTime=e.updateTime:typeof e.updateTime=="object"&&(t.updateTime=new $util.LongBits(e.updateTime.low>>>0,e.updateTime.high>>>0).toNumber())),t},n.toObject=function(e,t){t||(t={});let s={};return t.defaults&&(s.type=t.enums===String?"Microphone":0,s.isEnable=!1,s.isMute=!1,s.volume=0),e.type!=null&&e.hasOwnProperty("type")&&(s.type=t.enums===String?$root.com.quick.voice.proto.AudioType[e.type]===void 0?e.type:$root.com.quick.voice.proto.AudioType[e.type]:e.type),e.isEnable!=null&&e.hasOwnProperty("isEnable")&&(s.isEnable=e.isEnable),e.isMute!=null&&e.hasOwnProperty("isMute")&&(s.isMute=e.isMute),e.volume!=null&&e.hasOwnProperty("volume")&&(s.volume=t.json&&!isFinite(e.volume)?String(e.volume):e.volume),e.updateTime!=null&&e.hasOwnProperty("updateTime")&&(typeof e.updateTime=="number"?s.updateTime=t.longs===String?String(e.updateTime):e.updateTime:s.updateTime=t.longs===String?$util.Long.prototype.toString.call(e.updateTime):t.longs===Number?new $util.LongBits(e.updateTime.low>>>0,e.updateTime.high>>>0).toNumber():e.updateTime,t.oneofs&&(s._updateTime="updateTime")),s},n.prototype.toJSON=function(){return this.constructor.toObject(this,minimalExports.util.toJSONOptions)},n.getTypeUrl=function(e){return e===void 0&&(e="type.googleapis.com"),e+"/com.quick.voice.proto.AudioInfo"},n})(),u.VideoInfo=(function(){function n(i){if(i)for(let e=Object.keys(i),t=0;t<e.length;++t)i[e[t]]!=null&&(this[e[t]]=i[e[t]])}n.prototype.type=0,n.prototype.isEnable=!1,n.prototype.isMute=!1,n.prototype.width=0,n.prototype.height=0,n.prototype.x=0,n.prototype.y=0,n.prototype.updateTime=null;let r;return Object.defineProperty(n.prototype,"_updateTime",{get:$util.oneOfGetter(r=["updateTime"]),set:$util.oneOfSetter(r)}),n.create=function(e){return new n(e)},n.encode=function(e,t){return t||(t=$Writer.create()),e.type!=null&&Object.hasOwnProperty.call(e,"type")&&t.uint32(8).int32(e.type),e.isEnable!=null&&Object.hasOwnProperty.call(e,"isEnable")&&t.uint32(16).bool(e.isEnable),e.isMute!=null&&Object.hasOwnProperty.call(e,"isMute")&&t.uint32(24).bool(e.isMute),e.width!=null&&Object.hasOwnProperty.call(e,"width")&&t.uint32(32).int32(e.width),e.height!=null&&Object.hasOwnProperty.call(e,"height")&&t.uint32(40).int32(e.height),e.x!=null&&Object.hasOwnProperty.call(e,"x")&&t.uint32(48).int32(e.x),e.y!=null&&Object.hasOwnProperty.call(e,"y")&&t.uint32(56).int32(e.y),e.updateTime!=null&&Object.hasOwnProperty.call(e,"updateTime")&&t.uint32(64).int64(e.updateTime),t},n.encodeDelimited=function(e,t){return this.encode(e,t).ldelim()},n.decode=function(e,t,s){e instanceof $Reader||(e=$Reader.create(e));let l=t===void 0?e.len:e.pos+t,c=new $root.com.quick.voice.proto.VideoInfo;for(;e.pos<l;){let d=e.uint32();if(d===s)break;switch(d>>>3){case 1:{c.type=e.int32();break}case 2:{c.isEnable=e.bool();break}case 3:{c.isMute=e.bool();break}case 4:{c.width=e.int32();break}case 5:{c.height=e.int32();break}case 6:{c.x=e.int32();break}case 7:{c.y=e.int32();break}case 8:{c.updateTime=e.int64();break}default:e.skipType(d&7);break}}return c},n.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},n.verify=function(e){if(typeof e!="object"||e===null)return"object expected";if(e.type!=null&&e.hasOwnProperty("type"))switch(e.type){default:return"type: enum value expected";case 0:case 1:break}return e.isEnable!=null&&e.hasOwnProperty("isEnable")&&typeof e.isEnable!="boolean"?"isEnable: boolean expected":e.isMute!=null&&e.hasOwnProperty("isMute")&&typeof e.isMute!="boolean"?"isMute: boolean expected":e.width!=null&&e.hasOwnProperty("width")&&!$util.isInteger(e.width)?"width: integer expected":e.height!=null&&e.hasOwnProperty("height")&&!$util.isInteger(e.height)?"height: integer expected":e.x!=null&&e.hasOwnProperty("x")&&!$util.isInteger(e.x)?"x: integer expected":e.y!=null&&e.hasOwnProperty("y")&&!$util.isInteger(e.y)?"y: integer expected":e.updateTime!=null&&e.hasOwnProperty("updateTime")&&!$util.isInteger(e.updateTime)&&!(e.updateTime&&$util.isInteger(e.updateTime.low)&&$util.isInteger(e.updateTime.high))?"updateTime: integer|Long expected":null},n.fromObject=function(e){if(e instanceof $root.com.quick.voice.proto.VideoInfo)return e;let t=new $root.com.quick.voice.proto.VideoInfo;switch(e.type){default:if(typeof e.type=="number"){t.type=e.type;break}break;case"Camera":case 0:t.type=0;break;case"Screen":case 1:t.type=1;break}return e.isEnable!=null&&(t.isEnable=!!e.isEnable),e.isMute!=null&&(t.isMute=!!e.isMute),e.width!=null&&(t.width=e.width|0),e.height!=null&&(t.height=e.height|0),e.x!=null&&(t.x=e.x|0),e.y!=null&&(t.y=e.y|0),e.updateTime!=null&&($util.Long?(t.updateTime=$util.Long.fromValue(e.updateTime)).unsigned=!1:typeof e.updateTime=="string"?t.updateTime=parseInt(e.updateTime,10):typeof e.updateTime=="number"?t.updateTime=e.updateTime:typeof e.updateTime=="object"&&(t.updateTime=new $util.LongBits(e.updateTime.low>>>0,e.updateTime.high>>>0).toNumber())),t},n.toObject=function(e,t){t||(t={});let s={};return t.defaults&&(s.type=t.enums===String?"Camera":0,s.isEnable=!1,s.isMute=!1,s.width=0,s.height=0,s.x=0,s.y=0),e.type!=null&&e.hasOwnProperty("type")&&(s.type=t.enums===String?$root.com.quick.voice.proto.VideoType[e.type]===void 0?e.type:$root.com.quick.voice.proto.VideoType[e.type]:e.type),e.isEnable!=null&&e.hasOwnProperty("isEnable")&&(s.isEnable=e.isEnable),e.isMute!=null&&e.hasOwnProperty("isMute")&&(s.isMute=e.isMute),e.width!=null&&e.hasOwnProperty("width")&&(s.width=e.width),e.height!=null&&e.hasOwnProperty("height")&&(s.height=e.height),e.x!=null&&e.hasOwnProperty("x")&&(s.x=e.x),e.y!=null&&e.hasOwnProperty("y")&&(s.y=e.y),e.updateTime!=null&&e.hasOwnProperty("updateTime")&&(typeof e.updateTime=="number"?s.updateTime=t.longs===String?String(e.updateTime):e.updateTime:s.updateTime=t.longs===String?$util.Long.prototype.toString.call(e.updateTime):t.longs===Number?new $util.LongBits(e.updateTime.low>>>0,e.updateTime.high>>>0).toNumber():e.updateTime,t.oneofs&&(s._updateTime="updateTime")),s},n.prototype.toJSON=function(){return this.constructor.toObject(this,minimalExports.util.toJSONOptions)},n.getTypeUrl=function(e){return e===void 0&&(e="type.googleapis.com"),e+"/com.quick.voice.proto.VideoInfo"},n})(),u.CustomInfo=(function(){function n(i){if(this.customKeyMap={},i)for(let e=Object.keys(i),t=0;t<e.length;++t)i[e[t]]!=null&&(this[e[t]]=i[e[t]])}n.prototype.roomId="",n.prototype.customKeyMap=$util.emptyObject,n.prototype.updateTime=null;let r;return Object.defineProperty(n.prototype,"_updateTime",{get:$util.oneOfGetter(r=["updateTime"]),set:$util.oneOfSetter(r)}),n.create=function(e){return new n(e)},n.encode=function(e,t){if(t||(t=$Writer.create()),e.roomId!=null&&Object.hasOwnProperty.call(e,"roomId")&&t.uint32(10).string(e.roomId),e.customKeyMap!=null&&Object.hasOwnProperty.call(e,"customKeyMap"))for(let s=Object.keys(e.customKeyMap),l=0;l<s.length;++l)t.uint32(18).fork().uint32(10).string(s[l]).uint32(18).string(e.customKeyMap[s[l]]).ldelim();return e.updateTime!=null&&Object.hasOwnProperty.call(e,"updateTime")&&t.uint32(24).int64(e.updateTime),t},n.encodeDelimited=function(e,t){return this.encode(e,t).ldelim()},n.decode=function(e,t,s){e instanceof $Reader||(e=$Reader.create(e));let l=t===void 0?e.len:e.pos+t,c=new $root.com.quick.voice.proto.CustomInfo,d,f;for(;e.pos<l;){let h=e.uint32();if(h===s)break;switch(h>>>3){case 1:{c.roomId=e.string();break}case 2:{c.customKeyMap===$util.emptyObject&&(c.customKeyMap={});let g=e.uint32()+e.pos;for(d="",f="";e.pos<g;){let m=e.uint32();switch(m>>>3){case 1:d=e.string();break;case 2:f=e.string();break;default:e.skipType(m&7);break}}c.customKeyMap[d]=f;break}case 3:{c.updateTime=e.int64();break}default:e.skipType(h&7);break}}return c},n.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},n.verify=function(e){if(typeof e!="object"||e===null)return"object expected";if(e.roomId!=null&&e.hasOwnProperty("roomId")&&!$util.isString(e.roomId))return"roomId: string expected";if(e.customKeyMap!=null&&e.hasOwnProperty("customKeyMap")){if(!$util.isObject(e.customKeyMap))return"customKeyMap: object expected";let t=Object.keys(e.customKeyMap);for(let s=0;s<t.length;++s)if(!$util.isString(e.customKeyMap[t[s]]))return"customKeyMap: string{k:string} expected"}return e.updateTime!=null&&e.hasOwnProperty("updateTime")&&!$util.isInteger(e.updateTime)&&!(e.updateTime&&$util.isInteger(e.updateTime.low)&&$util.isInteger(e.updateTime.high))?"updateTime: integer|Long expected":null},n.fromObject=function(e){if(e instanceof $root.com.quick.voice.proto.CustomInfo)return e;let t=new $root.com.quick.voice.proto.CustomInfo;if(e.roomId!=null&&(t.roomId=String(e.roomId)),e.customKeyMap){if(typeof e.customKeyMap!="object")throw TypeError(".com.quick.voice.proto.CustomInfo.customKeyMap: object expected");t.customKeyMap={};for(let s=Object.keys(e.customKeyMap),l=0;l<s.length;++l)t.customKeyMap[s[l]]=String(e.customKeyMap[s[l]])}return e.updateTime!=null&&($util.Long?(t.updateTime=$util.Long.fromValue(e.updateTime)).unsigned=!1:typeof e.updateTime=="string"?t.updateTime=parseInt(e.updateTime,10):typeof e.updateTime=="number"?t.updateTime=e.updateTime:typeof e.updateTime=="object"&&(t.updateTime=new $util.LongBits(e.updateTime.low>>>0,e.updateTime.high>>>0).toNumber())),t},n.toObject=function(e,t){t||(t={});let s={};(t.objects||t.defaults)&&(s.customKeyMap={}),t.defaults&&(s.roomId=""),e.roomId!=null&&e.hasOwnProperty("roomId")&&(s.roomId=e.roomId);let l;if(e.customKeyMap&&(l=Object.keys(e.customKeyMap)).length){s.customKeyMap={};for(let c=0;c<l.length;++c)s.customKeyMap[l[c]]=e.customKeyMap[l[c]]}return e.updateTime!=null&&e.hasOwnProperty("updateTime")&&(typeof e.updateTime=="number"?s.updateTime=t.longs===String?String(e.updateTime):e.updateTime:s.updateTime=t.longs===String?$util.Long.prototype.toString.call(e.updateTime):t.longs===Number?new $util.LongBits(e.updateTime.low>>>0,e.updateTime.high>>>0).toNumber():e.updateTime,t.oneofs&&(s._updateTime="updateTime")),s},n.prototype.toJSON=function(){return this.constructor.toObject(this,minimalExports.util.toJSONOptions)},n.getTypeUrl=function(e){return e===void 0&&(e="type.googleapis.com"),e+"/com.quick.voice.proto.CustomInfo"},n})(),u.LayoutType=(function(){const n={},r=Object.create(n);return r[n[0]="AudioAndVideo"]=0,r[n[1]="OnlyAudio"]=1,r[n[2]="OnlyVideo"]=2,r})(),u.AudioType=(function(){const n={},r=Object.create(n);return r[n[0]="Microphone"]=0,r[n[1]="SystemVoice"]=1,r})(),u.VideoType=(function(){const n={},r=Object.create(n);return r[n[0]="Camera"]=0,r[n[1]="Screen"]=1,r})(),u})(),a})(),o})(),p})(),createAudioInfo=()=>({remove:!1,isEnable:!1,updateTime:0,isMute:!1,volume:0}),createVideoInfo=()=>({remove:!1,isEnable:!1,updateTime:0,isMute:!1,sx:0,sy:0,sw:0,sh:0});class RoomUser{userId="";mc_audio;mc_video;ss_audio;ss_video;updateTime=0;constructor(){}getUpdateTimeKey=()=>{const o=[];return this.mc_audio&&o.push(this.mc_audio.updateTime),this.mc_video&&o.push(this.mc_video.updateTime),this.ss_audio&&o.push(this.ss_audio.updateTime),this.ss_video&&o.push(this.ss_video.updateTime),o.join("_")};init=o=>{const{id:a,audios:u=[],videos:n=[]}=o;this.userId=a;const r=this.getUpdateTimeKey();this.mc_audio&&(this.mc_audio.remove=!0),this.mc_video&&(this.mc_video.remove=!0),this.ss_audio&&(this.ss_audio.remove=!0),this.ss_video&&(this.ss_video.remove=!0);for(const e of u){const{type:t=0,isEnable:s=!1,isMute:l=!1,updateTime:c,volume:d=0}=e;switch(t){case 0:{if(this.mc_audio||(this.mc_audio=createAudioInfo()),this.mc_audio.remove=!1,this.mc_audio.updateTime===c)break;this.mc_audio.isEnable=!!s,this.mc_audio.isMute=!!l,this.mc_audio.updateTime=Number(c),this.mc_audio.volume=Number(d)}break;case 1:{if(this.ss_audio||(this.ss_audio=createAudioInfo()),this.ss_audio.remove=!1,this.ss_audio.updateTime===c)break;this.ss_audio.isEnable=!!s,this.ss_audio.isMute=!!l,this.ss_audio.updateTime=Number(c),this.ss_audio.volume=Number(d)}break}}for(const e of n){const{type:t=0,isEnable:s,isMute:l,updateTime:c,width:d,height:f,x:h,y:g}=e;switch(t){case 0:{if(this.mc_video||(this.mc_video=createVideoInfo()),this.mc_video.remove=!1,this.mc_video.updateTime===c)break;this.mc_video.isEnable=!!s,this.mc_video.isMute=!!l,this.mc_video.updateTime=Number(c)||0,this.mc_video.sx=h||0,this.mc_video.sy=g||0,this.mc_video.sw=d||0,this.mc_video.sh=f||0}break;case 1:{if(this.ss_video||(this.ss_video=createVideoInfo()),this.ss_video.remove=!1,this.ss_video.updateTime===c)break;this.ss_video.isEnable=!!s,this.ss_video.isMute=!!l,this.ss_video.updateTime=Number(c)||0,this.ss_video.sx=h||0,this.ss_video.sy=g||0,this.ss_video.sw=d||0,this.ss_video.sh=f||0}break}}this.mc_audio?.remove&&(this.mc_audio=void 0),this.mc_video?.remove&&(this.mc_video=void 0),this.ss_audio?.remove&&(this.ss_audio=void 0),this.ss_video?.remove&&(this.ss_video=void 0);const i=this.getUpdateTimeKey();r!==i&&(this.updateTime=new Date().getTime())};destroy=()=>{this.mc_audio=void 0,this.mc_video=void 0,this.ss_audio=void 0,this.ss_video=void 0}}const parseSEI=p=>{let o=0,a=0;for(;;){const n=p[o];if(a=a+n,o=o+1,n!==255)break}let u=0;for(;;){const n=p[o];if(u=u+n,o=o+1,n!==255)break}if(a===5){const n=p.slice(o,o+16),i=Array.from(n,h=>h.toString(16).padStart(2,"0")).join("");o=o+16;const e=u-16,t=p.slice(o,o+e),s=com.quick.voice.proto.SeiData.decode(t),{event:l=0}=s,c=s.data;let d;switch(l){case 0:d=com.quick.voice.proto.LayoutData.decode(s.data);break;case 1:d=com.quick.voice.proto.CustomInfo.decode(s.data);break}return{uuid:i,...s,event:l,data_remote:c,data:d}}};class QuickVoPlayer{option={debug:!1,ws:"wss://livep2p.devplay.cc/websocket"};displayMode="original";prPlayer;dom;room={roomId:"",updateTime:"",author:"",version:""};usersMap=new Map;on={users:o=>{},analysis:o=>{}};constructor(o={}){const{debug:a=!1}=o;this.option.debug=a,this.prPlayer=new Q({debug:a}),this.prPlayer.on.demuxer.chunk=u=>{},this.prPlayer.on.decoder.sei=this.onSEI,this.prPlayer.on.decoder.analysis=this.onAnalysis}start=async o=>(this.stop(),this.prPlayer.start(o));stop=()=>{this.prPlayer.stop(),this.usersMap=new Map,this.room.roomId="",this.room.author="",this.room.updateTime="",this.room.version=""};setMute=o=>{this.prPlayer.setMute(o)};setOutputGain=o=>{this.prPlayer.audioPlayer?.prAudioStream?.setOutputGain(o)};getStream=()=>this.prPlayer.getStream();getAllUseUpdateKey=()=>{const o=[...this.usersMap.values()];return Array.from(o,u=>u.updateTime).join("_")};checkAndCreateUser=(o,a)=>{!this.usersMap.has(o)&&this.usersMap.set(o,new RoomUser);const u=this.usersMap.get(o);if(u){if(u.init(a),u.mc_video&&u.mc_video.stream===void 0){const{sx:n,sy:r,sw:i,sh:e}=u.mc_video,t=`${u.userId}_mc_video`,s=this.prPlayer.cut.create(t,{sx:n,sy:r,sw:i,sh:e});this.displayMode==="original"&&this.prPlayer.cut.setPause(t,!0),u.mc_video.stream=s}if(u.ss_video&&u.ss_video.stream===void 0){const{sx:n,sy:r,sw:i,sh:e}=u.ss_video,t=`${u.userId}_ss_video`,s=this.prPlayer.cut.create(t,{sx:n,sy:r,sw:i,sh:e});this.displayMode==="original"&&this.prPlayer.cut.setPause(t,!0),u.ss_video.stream=s}if(u?.mc_video){const n=`${u.userId}_mc_video`,{sx:r,sy:i,sw:e,sh:t}=u.mc_video;this.prPlayer.cut.setCut(n,{sx:r,sy:i,sw:e,sh:t})}if(u?.ss_video){const n=`${u.userId}_ss_video`,{sx:r,sy:i,sw:e,sh:t}=u.ss_video;this.prPlayer.cut.setCut(n,{sx:r,sy:i,sw:e,sh:t})}}};setDisplayMode=o=>{switch(this.displayMode=o,o){case"original":{this.prPlayer.setPause(!1);const a=[...this.usersMap.keys()];for(const u of a)this.prPlayer.cut.setPause(`${u}_mc_video`,!0),this.prPlayer.cut.setPause(`${u}_ss_video`,!0)}break;case"cut":{this.prPlayer.setPause(!0);const a=[...this.usersMap.keys()];for(const u of a)this.prPlayer.cut.setPause(`${u}_mc_video`,!1),this.prPlayer.cut.setPause(`${u}_ss_video`,!1)}break}};onSEI=o=>{try{const a=parseSEI(o);if(!a)return;const{event:u,data:n}=a;switch(u){case 0:{const{roomId:r,userMap:i}=n;if(r!==this.room.roomId)return;const e=this.getAllUseUpdateKey(),t=Object.keys(i);{const l=[...this.usersMap.keys()];for(const c of l)t.includes(c)||(this.prPlayer.cut.remove(`${c}_mc_video`),this.prPlayer.cut.remove(`${c}_ss_video`),this.usersMap.delete(c))}for(const l of t){const c=i[l];this.checkAndCreateUser(l,c)}const s=this.getAllUseUpdateKey();if(e!==s&&this.on.users){const l=[...this.usersMap.values()],c=Array.from(l,({userId:d,mc_audio:f,mc_video:h,ss_audio:g,ss_video:m,updateTime:y})=>({userId:d,mc_audio:f,mc_video:h,ss_audio:g,ss_video:m,updateTime:y}));this.on.users(c)}}break;case 1:{const{roomId:r,updateTime:i}=n,{author:e,version:t}=n.customKeyMap;this.room.roomId=r,this.room.updateTime=i,this.room.author=e,this.room.version=t}break}}catch(a){console.log("\x1B[38;2;0;151;255m%c%s\x1B[0m","color:#0097ff;","------->onSEI: error",a)}};onAnalysis=o=>{this.on.analysis&&this.on.analysis(o)}}exports.QuickVoPlayer=QuickVoPlayer,Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"})}));
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "quickvo-player",
3
3
  "description": "基于web-codecs解码flv视频流并输出帧数据。",
4
- "version": "0.3.4",
4
+ "version": "0.3.5",
5
5
  "type": "module",
6
6
  "files": [
7
7
  "dist"
@@ -19,7 +19,7 @@
19
19
  "build": "tsc && vite build"
20
20
  },
21
21
  "dependencies": {
22
- "pr-player": "^0.3.5",
22
+ "pr-player": "^0.3.6",
23
23
  "pr-ws": "^0.3.3",
24
24
  "protobufjs": "^7.5.4"
25
25
  },