trtc-sdk-v5 5.8.5-ktv.12 → 5.8.5-ktv.14

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "trtc-sdk-v5",
3
- "version": "5.8.5-ktv.12",
3
+ "version": "5.8.5-ktv.14",
4
4
  "description": "Tencent Cloud RTC SDK for Web",
5
5
  "main": "trtc.js",
6
6
  "types": "index.d.ts",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rtc-plugin/cdn-streaming",
3
- "version": "5.8.5-ktv.12",
3
+ "version": "5.8.5-ktv.14",
4
4
  "description": "TRTC Web SDK 5.x CDN streaming plugin",
5
5
  "main": "./cdn-streaming.esm.js",
6
6
  "author": "longyuqi <longyuqi@tencent.com>",
@@ -22,4 +22,4 @@ return ret;
22
22
  `},"%p":function(w){return w.tm_hour>=0&&w.tm_hour<12?"AM":"PM"},"%S":function(w){return e(w.tm_sec,2)},"%t":function(){return" "},"%u":function(w){return w.tm_wday||7},"%U":function(w){var y=w.tm_yday+7-w.tm_wday;return e(Math.floor(y/7),2)},"%V":function(w){var y=Math.floor((w.tm_yday+7-(w.tm_wday+6)%7)/7);if((w.tm_wday+371-w.tm_yday-2)%7<=2&&y++,y){if(y==53){var p=(w.tm_wday+371-w.tm_yday)%7;p!=4&&(p!=3||!ZA(w.tm_year))&&(y=1)}}else{y=52;var J=(w.tm_wday+7-w.tm_yday-1)%7;(J==4||J==5&&ZA(w.tm_year%400-1))&&y++}return e(y,2)},"%w":function(w){return w.tm_wday},"%W":function(w){var y=w.tm_yday+7-(w.tm_wday+6)%7;return e(Math.floor(y/7),2)},"%y":function(w){return(w.tm_year+1900).toString().substring(2)},"%Y":function(w){return w.tm_year+1900},"%z":function(w){var y=w.tm_gmtoff,p=y>=0;return y=Math.abs(y)/60,y=y/60*100+y%60,(p?"+":"-")+("0000"+y).slice(-4)},"%Z":function(w){return w.tm_zone},"%%":function(){return"%"}};D=D.replace(/%%/g,"\0\0");for(var E in M)D.includes(E)&&(D=D.replace(new RegExp(E,"g"),M[E](o)));D=D.replace(/\0\0/g,"%");var U=sE(D);return U.length>A?0:(tE(U,I),U.length-1)}function eE(I,A,g,C,B){return aE(I,A,g,C)}function wE(I){Cg=I,rB()||(a.onExit&&a.onExit(I),ug=!0),fg(I,new vI(I))}function rE(I,A){Cg=I,wE(I)}function yE(I){if(I instanceof vI||I=="unwind")return Cg;fg(1,I)}function NE(I){var A=Og(I)+1,g=Pg(A);return sC(I,g,A),g}nA=a.BindingError=Eg(Error,"BindingError");fB();zI=a.PureVirtualError=Eg(Error,"PureVirtualError");uB();TB();CC=a.InternalError=Eg(Error,"InternalError");IQ();sQ();EC=a.UnboundTypeError=Eg(Error,"UnboundTypeError");var cE={d:kB,p:PB,r:jB,y:ZB,H:XB,h:wQ,j:rQ,m:yQ,a:NQ,J:cQ,G:hQ,k:FQ,b:GQ,v:MQ,K:SQ,i:YQ,c:UQ,u:JQ,o:uQ,s:mQ,l:pQ,I:qQ,f:xQ,e:oC,g:VQ,q:PQ,w:jQ,n:ZQ,D:XQ,E:vQ,C:_Q,A:gE,B:IE,F:CE,x:BE,t:iE,z:eE};UB();var wC=a._main=function(){return(wC=a._main=a.asm.N).apply(null,arguments)},Vg=function(){return(Vg=a.asm.O).apply(null,arguments)},z=function(){return(z=a.asm.Q).apply(null,arguments)},rC=function(){return(rC=a.asm.R).apply(null,arguments)};a.__embind_initialize_bindings=function(){return(a.__embind_initialize_bindings=a.asm.S).apply(null,arguments)};var Pg=function(){return(Pg=a.asm.T).apply(null,arguments)},yC=function(){return(yC=a.asm.U).apply(null,arguments)};a.dynCall_jiji=function(){return(a.dynCall_jiji=a.asm.V).apply(null,arguments)};a.dynCall_iiiiij=function(){return(a.dynCall_iiiiij=a.asm.W).apply(null,arguments)};a.dynCall_iiiiijj=function(){return(a.dynCall_iiiiijj=a.asm.X).apply(null,arguments)};a.dynCall_iiiiiijj=function(){return(a.dynCall_iiiiiijj=a.asm.Y).apply(null,arguments)};var gg;KA=function I(){gg||NC(),gg||(KA=I)};function hE(I=[]){var A=wC;I.unshift(lg);var g=I.length,C=Pg((g+1)*4),B=C>>2;I.forEach(D=>{L[B++]=NE(D)}),L[B]=0;try{var o=A(g,C);return rE(o,!0),o}catch(D){return yE(D)}}function NC(I=pI){if(sA>0||(yB(),sA>0))return;function A(){gg||(gg=!0,a.calledRun=!0,!ug&&(NB(),cB(),a.onRuntimeInitialized&&a.onRuntimeInitialized(),cC&&hE(I),hB()))}a.setStatus?(a.setStatus("Running..."),setTimeout(function(){setTimeout(function(){a.setStatus("")},1),A()},1)):A()}if(a.preInit)for(typeof a.preInit=="function"&&(a.preInit=[a.preInit]);a.preInit.length>0;)a.preInit.pop()();var cC=!0;a.noInitialRun&&(cC=!1);NC();var HI=["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z",1,2,3,4,5,6,7,8,9,0];function RE(I){let A="";for(let g=0;g<I;g++){let C=Math.floor(Math.random()*HI.length);A+=HI[C]}return A}var lA=null,dg={},FE=async(I,A,g)=>(I.postMessage({action:"translate",url:g,data:A,seq:1},[A]),await new Promise(C=>{dg[1]=B=>{C(B)}})),GE=I=>{lA=new Worker(I),lA.postMessage({action:"load"}),lA.onmessage=A=>{let{seq:g,cmd:C}=(A==null?void 0:A.data)||{};if(C==="convert"&&!isNaN(g)){let B=dg[g];B&&(B(A.data),delete dg[g])}}},Sg=async I=>{if(lA){let A=lA;return fetch(I).then(g=>g.arrayBuffer()).then(async g=>FE(A,g,"id"))}else return Promise.resolve({error:1,msg:"no decode worker"})},JA="9gp0ag5qeuhy1ig8gmqxu2hwxex9j1iz",f={ERR_PUB_UNKOWN:2e5,ERR_PUB_PARAMS:200001,ERR_PUB_BUSY:200002,ERR_PUB_AUTH:200003,ERR_PUB_UNREG:200004,ERR_PUB_UNIMPL:200005,ERR_PUB_SYSTEM:200006,ERR_PUB_RIGHT:200007,ERR_NO_DATA:200008,ERR_PUB_FREQUENCY:200009,ERR_PUB_QPSLIMITED:200010,ERR_PUB_COPYRIGHT:200011,ERR_AUTO:200300,ERR_NOT_INIT_CODEC:3e5},nE="anonymous",ME="password";function BA(I,A){var g=(I&65535)+(A&65535),C=(I>>16)+(A>>16)+(g>>16);return C<<16|g&65535}function SE(I,A){return I<<A|I>>>32-A}function ag(I,A,g,C,B,o){return BA(SE(BA(BA(A,I),BA(C,o)),B),g)}function k(I,A,g,C,B,o,D){return ag(A&g|~A&C,I,A,B,o,D)}function K(I,A,g,C,B,o,D){return ag(A&C|g&~C,I,A,B,o,D)}function d(I,A,g,C,B,o,D){return ag(A^g^C,I,A,B,o,D)}function H(I,A,g,C,B,o,D){return ag(g^(A|~C),I,A,B,o,D)}function LE(I,A){I[A>>5]|=128<<A%32,I[(A+64>>>9<<4)+14]=A;var g,C,B,o,D,i=1732584193,E=-271733879,Q=-1732584194,s=271733878;for(g=0;g<I.length;g+=16)C=i,B=E,o=Q,D=s,i=k(i,E,Q,s,I[g],7,-680876936),s=k(s,i,E,Q,I[g+1],12,-389564586),Q=k(Q,s,i,E,I[g+2],17,606105819),E=k(E,Q,s,i,I[g+3],22,-1044525330),i=k(i,E,Q,s,I[g+4],7,-176418897),s=k(s,i,E,Q,I[g+5],12,1200080426),Q=k(Q,s,i,E,I[g+6],17,-1473231341),E=k(E,Q,s,i,I[g+7],22,-45705983),i=k(i,E,Q,s,I[g+8],7,1770035416),s=k(s,i,E,Q,I[g+9],12,-1958414417),Q=k(Q,s,i,E,I[g+10],17,-42063),E=k(E,Q,s,i,I[g+11],22,-1990404162),i=k(i,E,Q,s,I[g+12],7,1804603682),s=k(s,i,E,Q,I[g+13],12,-40341101),Q=k(Q,s,i,E,I[g+14],17,-1502002290),E=k(E,Q,s,i,I[g+15],22,1236535329),i=K(i,E,Q,s,I[g+1],5,-165796510),s=K(s,i,E,Q,I[g+6],9,-1069501632),Q=K(Q,s,i,E,I[g+11],14,643717713),E=K(E,Q,s,i,I[g],20,-373897302),i=K(i,E,Q,s,I[g+5],5,-701558691),s=K(s,i,E,Q,I[g+10],9,38016083),Q=K(Q,s,i,E,I[g+15],14,-660478335),E=K(E,Q,s,i,I[g+4],20,-405537848),i=K(i,E,Q,s,I[g+9],5,568446438),s=K(s,i,E,Q,I[g+14],9,-1019803690),Q=K(Q,s,i,E,I[g+3],14,-187363961),E=K(E,Q,s,i,I[g+8],20,1163531501),i=K(i,E,Q,s,I[g+13],5,-1444681467),s=K(s,i,E,Q,I[g+2],9,-51403784),Q=K(Q,s,i,E,I[g+7],14,1735328473),E=K(E,Q,s,i,I[g+12],20,-1926607734),i=d(i,E,Q,s,I[g+5],4,-378558),s=d(s,i,E,Q,I[g+8],11,-2022574463),Q=d(Q,s,i,E,I[g+11],16,1839030562),E=d(E,Q,s,i,I[g+14],23,-35309556),i=d(i,E,Q,s,I[g+1],4,-1530992060),s=d(s,i,E,Q,I[g+4],11,1272893353),Q=d(Q,s,i,E,I[g+7],16,-155497632),E=d(E,Q,s,i,I[g+10],23,-1094730640),i=d(i,E,Q,s,I[g+13],4,681279174),s=d(s,i,E,Q,I[g],11,-358537222),Q=d(Q,s,i,E,I[g+3],16,-722521979),E=d(E,Q,s,i,I[g+6],23,76029189),i=d(i,E,Q,s,I[g+9],4,-640364487),s=d(s,i,E,Q,I[g+12],11,-421815835),Q=d(Q,s,i,E,I[g+15],16,530742520),E=d(E,Q,s,i,I[g+2],23,-995338651),i=H(i,E,Q,s,I[g],6,-198630844),s=H(s,i,E,Q,I[g+7],10,1126891415),Q=H(Q,s,i,E,I[g+14],15,-1416354905),E=H(E,Q,s,i,I[g+5],21,-57434055),i=H(i,E,Q,s,I[g+12],6,1700485571),s=H(s,i,E,Q,I[g+3],10,-1894986606),Q=H(Q,s,i,E,I[g+10],15,-1051523),E=H(E,Q,s,i,I[g+1],21,-2054922799),i=H(i,E,Q,s,I[g+8],6,1873313359),s=H(s,i,E,Q,I[g+15],10,-30611744),Q=H(Q,s,i,E,I[g+6],15,-1560198380),E=H(E,Q,s,i,I[g+13],21,1309151649),i=H(i,E,Q,s,I[g+4],6,-145523070),s=H(s,i,E,Q,I[g+11],10,-1120210379),Q=H(Q,s,i,E,I[g+2],15,718787259),E=H(E,Q,s,i,I[g+9],21,-343485551),i=BA(i,C),E=BA(E,B),Q=BA(Q,o),s=BA(s,D);return[i,E,Q,s]}function YE(I){var A,g="",C=I.length*32;for(A=0;A<C;A+=8)g+=String.fromCharCode(I[A>>5]>>>A%32&255);return g}function UE(I){var A,g=[];for(g[(I.length>>2)-1]=void 0,A=0;A<g.length;A+=1)g[A]=0;var C=I.length*8;for(A=0;A<C;A+=8)g[A>>5]|=(I.charCodeAt(A/8)&255)<<A%32;return g}function JE(I){return YE(LE(UE(I),I.length*8))}function kE(I){var A="0123456789abcdef",g="",C,B;for(B=0;B<I.length;B+=1)C=I.charCodeAt(B),g+=A.charAt(C>>>4&15)+A.charAt(C&15);return g}function KE(I){return unescape(encodeURIComponent(I))}function dE(I){return JE(KE(I))}function HE(I){return kE(dE(I))}function lE(I,A,g){return HE(I)}var QA,cA,AA=window,kA=AA.document,fE=/^(?:text|application)\/javascript/i,uE=/^(?:text|application)\/xml/i,hC="application/json",RC="text/html",mE=/^\s*$/,pE="jsonpcallback=?",qE=Object.prototype.toString,lI=encodeURIComponent,_=function(){},V=function(I){return qE.call(I).toLowerCase().slice(8,-1)},XA=[];function jg(I){let A={index:100,name:"anonymity",fn:_},g=V(I);if(g==="function")XA.push(Ig(A,{fn:I}));else if(g==="object"){if(XA.find(C=>C.name===I.name&&C.index===I.index))return;XA.push(Ig(A,I))}else g==="array"&&I.forEach(jg)}function eg(I,A,g,C){return V(A)==="function"&&(C=g,g=A,A=void 0),V(g)!=="function"&&(C=g,g=void 0),{url:I,data:A,success:g,dataType:C}}function TE(I){let A="text";return I&&(I=I.split(";",2)[0]),I==RC?A="html":I==hC?A="json":fE.test(I)?A="script":uE.test(I)&&(A="xml"),A}function Hg(I,A){return A===""?I:(I+"&"+A).replace(/[&?]{1,2}/,"?")}function bE(I){I.data&&V(I.data)==="object"&&(I.data=xE(I.data)),I.data&&(!I.type||I.type.toUpperCase()==="GET"||I.dataType==="jsonp")&&(I.url=Hg(I.url,I.data))}function FC(I,A,g,C){let B,o=V(A)==="array";for(let D in A)B=A[D],C&&(D=C+"["+(o?"":D)+"]"),!C&&o?I.add(B.name,B.value):V(B)==="array"||V(B)==="object"?FC(I,B,g,D):I.add(D,B)}function xE(I,A){let g=[];return g.add=function(C,B){V(B)==="function"&&(B=B()),B==null&&(B=""),this.push(lI(C)+"="+lI(B))},FC(g,I,A),g.join("&").replace(/%20/g,"+")}function Ig(I){return Array.prototype.slice.call(arguments,1).forEach(function(A){for(QA in A)A[QA]!==void 0&&(I[QA]=A[QA])}),I}function WE(I,A,g){let C=n.settings[A];return V(C)==="function"&&C.call(I,g),!0}function rA(I,A,g,C){if(I.global)return WE(A||kA,g,C)}function OE(I){I.global&&n.active++===0&&rA(I,null,"ajaxStart")}function VE(I){I.global&&!--n.active&&rA(I,null,"ajaxStop")}function GC(I,A){let g=A.context;if(A.beforeSend.call(g,I,A)===!1||rA(A,g,"ajaxBeforeSend",[I,A])===!1)return!1;rA(A,g,"ajaxSend",[I,A])}function nC(I,A,g){let C=g.context,B="success";typeof g.success=="function"&&g.success.call(C,I,B,A),rA(g,C,"ajaxSuccess",[A,g,I]),MC(B,A,g)}function FA(I,A,g,C){let B=C.context;typeof C.error=="function"&&C.error.call(B,g,A,I),rA(C,B,"ajaxError",[g,C,I]),MC(A,g,C)}function MC(I,A,g){let C=g.context;typeof g.complete=="function"&&g.complete.call(C,A,I),rA(g,C,"ajaxComplete",[A,g]),VE(g)}function PE(I){let A,g=I.jsonpCallback||"jsonp"+I.url.replace(/[^a-zA-Z0-9]+/g,""),C=kA.createElement("script"),B=kA.head||kA.getElementsByTagName("head")[0]||kA.documentElement,o=AA[g],D=function(Q){C&&C.onload&&C.onload({type:"error"},Q||"abort")},i={abort:D},E;return C.onload=C.onerror=function(Q,s){clearTimeout(E),C.onload=C.onerror=_,B&&C.parentNode&&B.removeChild(C),C=void 0,Q&&Q.type=="error"||!A&&I.dataType==="jsonp"?FA(null,s||"error",i,I):nC(A,i,I),AA[g]=o||_,A&&V(o)==="function"&&o(A),o=A=void 0},GC(i,I)===!1?(D("abort"),i):(AA[g]=function(Q){A=Q},C.src=I.url.replace(/\?(.+)=\?/,"?$1="+g),B.insertBefore(C,B.firstChild),I.timeout>0&&(E=setTimeout(function(){D("timeout")},I.timeout)),i)}var n=function(I){let A,g,C,B;B=XA.sort(function(t,e){return e.index-t.index}),B.forEach(function(t){let e;if(t&&V(t.fn)==="function")try{e=t.fn(I)}catch(r){}e&&(I=e)}),A=Ig({},I||{});for(QA in n.settings)A[QA]===void 0&&(A[QA]=n.settings[QA]);if(OE(A),A.crossDomain||(A.crossDomain=/^([\w-]+:)?\/\/([^\/]+)/.test(A.url)&&RegExp.$2!==AA.location.host),A.url||(A.url=AA.location.toString()),bE(A),g=A.dataType,C=/\?.+=\?/.test(A.url),C&&(g="jsonp"),A.cache===!1&&(A.url=Hg(A.url,"_="+new Date().getTime())),g==="jsonp"||g==="script")return g==="jsonp"&&!C&&(A.url=Hg(A.url,A.jsonp?A.jsonp+"=?":A.jsonp===!1?"":pE)),PE(A);let o=A.accepts[g],D={},i=/^([\w-]+:)\/\//.test(A.url)?RegExp.$1:AA.location.protocol,E=A.xhr(),Q;if(A.crossDomain||(D["X-Requested-With"]="XMLHttpRequest"),D.Accept=o||"*/*",o&&(o.indexOf(",")>-1&&(o=o.split(",",2)[0]),E.overrideMimeType&&E.overrideMimeType(o)),(A.contentType||A.contentType!==!1&&A.data&&A.type.toUpperCase()!="GET")&&(D["Content-Type"]=A.contentType||"application/x-www-form-urlencoded"),A.headers=Ig(D,A.headers||{}),E.onreadystatechange=function(){if(E.readyState==4){E.onreadystatechange=_,clearTimeout(Q);let t,e=!1;if(E.status>=200&&E.status<300||E.status==304||E.status==0&&i=="file:"){if(g=g||TE(E.getResponseHeader("content-type")),E.responseType=="arraybuffer"||E.responseType=="blob")t=E.response;else{t=E.responseText;try{g=="script"?(0,eval)(t):g=="xml"?t=E.responseXML:g=="json"&&(t=mE.test(t)?null:JSON.parse(t))}catch(r){e=r}if(e)return FA(e,"parsererror",E,A)}nC(t,E,A)}else FA(E.statusText||null,E.status?"error":"abort",E,A)}},GC(E,A)===!1)return E.abort(),A.customAbort||FA(null,"abort",E,A),E;let s="async"in A?A.async:!0;if(E.open(A.type,A.url,s,A.username,A.password),A.xhrFields)for(cA in A.xhrFields)E[cA]=A.xhrFields[cA];for(cA in A.headers)E.setRequestHeader(cA,A.headers[cA]);A.timeout>0&&(Q=setTimeout(function(){E.onreadystatechange=_,E.abort(),FA(null,"timeout",E,A)},A.timeout));try{E.send(A.data?A.data:null)}catch(t){if(A.async||clearTimeout(Q),A.catchSendError)FA(t,"error",E,A);else throw t}return E};n.active=0;n.settings={type:"GET",dataType:"json",beforeSend:_,success:_,error:_,complete:_,context:null,global:!0,xhr:function(){return new AA.XMLHttpRequest},accepts:{script:"text/javascript, application/javascript, application/x-javascript",json:hC,xml:"application/xml, text/xml",html:RC,text:"text/plain"},crossDomain:!1,timeout:0,cache:!0};n.get=function(){return n(eg.apply(null,arguments))};n.post=function(){let I=eg.apply(null,arguments);return I.type="POST",n(I)};n.jsonp=function(){let I=eg.apply(null,arguments);return I.dataType="jsonp",n(I)};n.script=function(){let I=eg.apply(null,arguments);return I.dataType="script",n(I)};n.fetch=I=>new Promise((A,g)=>{n(WA(gA({},I),{success:A,error:g}))});n.pushInterceptors=jg;n.version="<%= version %>";jg(AA.FxAjaxInterceptors);var wg=(I={})=>{let A=gA({pid:"",sp:"KG",device_id:JA,client_ip:"127.0.0.1",timestamp:Math.floor(Date.now()/1e3),nonce:RE(64),token:ME,userid:nE,ssl:1},I),g=I.appkey,C=[],B=JSON.stringify(A);return C.push(B),C.push(g),{signature:lE(C.join("")),body:B}};async function jE(I){let{url:A,header:g}=I;return await n.fetch({url:A,headers:JSON.parse(g),contentType:"application/json",crossDomain:!0})}async function ZE(I){let{url:A,header:g,body:C}=I;return await n.fetch({url:A,type:"POST",headers:JSON.parse(g),contentType:"application/json",data:C,crossDomain:!0})}function XE(I){let{signature:A,body:g}=wg(I);return n.fetch({url:"https://commercial.kugou.com/v2/commercial/vip/info",type:"POST",headers:{signature:A},contentType:"application/json",data:g,crossDomain:!0})}function vE(I){let{signature:A,body:g}=wg(I);return n.fetch({url:"https://commercial.kugou.com/v2/commercial/sdk/song/krc/base64",type:"POST",headers:{signature:A},contentType:"application/json",data:g,crossDomain:!0})}function zE(I){let{signature:A,body:g}=wg(I);return n.fetch({url:"https://commercial.kugou.com/v2/commercial/sdk/accompany/krc/base64",type:"POST",headers:{signature:A},contentType:"application/json",data:g,crossDomain:!0})}function _E(I){let{signature:A,body:g}=wg(I);return n.fetch({url:"https://commercial.kugou.com/v2/commercial/sdk/accompany/songpitch",type:"POST",headers:{signature:A},contentType:"application/json",data:g,crossDomain:!0})}var vA=class{constructor(){this.userid="",this.token="",this.clientPid="",this.appkey="",this.commonParams={},this.isVip=1,this.songId="",this.accompanySongId="",this.lyricSongId="",this.accompanyLyricSongId="",this.pitchSongId="",this.scoreSongId="",this.urlToken="",this.encryptLyricData="",this.lyricOffset=0,this.encryptAccompanyLyricData="",this.accompanyLyricOffset=0,this.encryptPitchData="",this.pitchOffset=0,this.pitchStartTime=0,this.ktvScoreClient={},this.songPcmData=[],this.accompanyPcmData=[],this.accompanySegmentSongId="",this.accompanySegmentBegin=0,this.accompanySegmentEnd=0,this.accompanySegmentPcmData=[],this.ffmpegLoaded=!1,this.ffmpeg=new Yg}async _getLyric({song_id:A,isAccompany:g=0}){try{let C;return g===1?A===this.accompanyLyricSongId&&this.encryptAccompanyLyricData?Promise.resolve({error_code:0,data:{lyric_base64:this.encryptAccompanyLyricData,offset:this.accompanyLyricOffset}}):(C=await zE(Object.assign({song_id:A},this.commonParams)),C.error_code===0?(this.accompanyLyricSongId=A,this.encryptAccompanyLyricData=C.data.lyric_base64,this.accompanyLyricOffset=C.data.offset,Promise.resolve({error_code:0,data:{lyric_base64:this.encryptAccompanyLyricData,offset:this.accompanyLyricOffset}})):Promise.resolve({error_code:C.error_code,error_msg:C.error_msg,data:{}})):A===this.lyricSongId&&this.encryptLyricData?Promise.resolve({error_code:0,data:{lyric_base64:this.encryptLyricData,offset:this.lyricOffset}}):(C=await vE(Object.assign({song_id:A,quality:"standard"},this.commonParams)),C.error_code===0?(this.lyricSongId=A,this.encryptLyricData=C.data.lyric_base64,this.lyricOffset=C.data.offset,Promise.resolve({error_code:0,data:{lyric_base64:this.encryptLyricData,offset:this.lyricOffset}})):Promise.resolve({error_code:C.error_code,error_msg:C.error_msg,data:{}}))}catch(C){return Promise.resolve({error_code:f.ERR_PUB_SYSTEM,data:{}})}}async _getPitch({song_id:A}){try{if(A===this.pitchSongId&&this.encryptPitchData)return Promise.resolve({error_code:0,data:{lyric:this.encryptPitchData,offset:this.pitchOffset}});{let g=await _E(Object.assign({song_id:A},this.commonParams));return g.error_code===0?(this.encryptPitchData=g.data.pitch,this.pitchOffset=g.data.offset,this.pitchStartTime=g.data.vtime,this.pitchSongId=A,Promise.resolve({error_code:0,data:{pitch:this.encryptPitchData,offset:this.pitchOffset,vtime:this.pitchStartTime}})):Promise.resolve({error_code:g.error_code,error_msg:g.error_msg,data:{}})}}catch(g){return Promise.resolve({error_code:f.ERR_PUB_SYSTEM,data:{}})}}async setUser(A){var B;if(!(A!=null&&A.userid)||!(A!=null&&A.token)||!(A!=null&&A.clientPid)||!(A!=null&&A.appkey))return Promise.resolve({status:f.ERR_PUB_PARAMS,data:{}});this.userid=A.userid,this.token=A.token,this.clientPid=A.clientPid,this.appkey=A.appkey,this.isVip=(B=A.isVip)!=null?B:1,this.commonParams={userid:this.userid,token:this.token,pid:this.clientPid,appkey:this.appkey};let g={status:0,data:{}},C=await XE(this.commonParams);return C.error_code!==0&&(g.status=C.error_code),Promise.resolve(g)}async setDecodeWorker(A){let{url:g}=A;return GE(g),Promise.resolve({status:0,data:{}})}fetchAccompanyUrl(A){let{song_id:g}=A,C={error_code:0,data:{}};return new Promise(B=>{let o=a.VoidFunctorWithIntString.implement({invoke:async function(D,i){if(D===a.KtvScore$ErrCode.ERR_CODE_OK.value){let E={};try{E=JSON.parse(i)}catch(Q){}this.accompanySongId=g,this.urlToken=E.url_token,C.data={status:E.status,accompany_url:E.accompany_url,url_token:E.url_token}}else C.error_code=D||f.ERR_NO_DATA;B(C),o.delete()}});this.ktvScoreClient.getMediaResource(JA,this.clientPid,this.userid,this.token,g,!0,this.isVip?a.KtvScore$ChargeMode.CHARGE_MODE_MONTHLY:a.KtvScore$ChargeMode.CHARGE_MODE_ONCE,a.KtvScore$MediaType.MEDIA_TYPE_ACCOMPANY,o)})}async initKtvScoreClient({song_id:A}){var g;let C={error_code:0};if(A!==this.scoreSongId){let[B,o,D]=await Promise.all([this.fetchAccompanyUrl({song_id:A,isAccompany:1}),this._getLyric({song_id:A,isAccompany:1}),this._getPitch({song_id:A})]);if((B==null?void 0:B.error_code)!==0||o.error_code!==0||D.error_code!==0)C.error_code=f.ERR_PUB_BUSY;else if(((g=B==null?void 0:B.data)==null?void 0:g.status)!==0)C.error_code=f.ERR_PUB_COPYRIGHT;else return new Promise(i=>{this.urlToken=B.data.url_token;let E=a.VoidFunctorWithInt.implement({invoke:function(Q){Q===a.KtvScore$ErrCode.ERR_CODE_OK.value?(DA.scoreSongId=A,i(C)):(C.error_code=Q||f.ERR_PUB_SYSTEM,i(C)),E.delete()}});DA.ktvScoreClient.init(this.encryptPitchData,this.encryptAccompanyLyricData,this.accompanyLyricOffset,this.urlToken,E,a.KtvScore$Version.VERSION_OLD)})}return Promise.resolve(C)}async _fetchSongUrl(A){let{song_id:g,isAccompany:C}=A,B={status:a.KtvScore$ErrCode.ERR_CODE_OK.value};return C?new Promise(o=>{let D=a.VoidFunctorWithIntString.implement({invoke:async function(i,E){if(i===a.KtvScore$ErrCode.ERR_CODE_OK.value){let Q={};try{Q=JSON.parse(E)}catch(s){}this.accompanySongId=g,this.urlToken=Q.url_token,B=WA(gA({},B),{data:Q})}else B={status:i||f.ERR_NO_DATA};o(B),D.delete()}});this.ktvScoreClient.getMediaResource(JA,this.clientPid,this.userid,this.token,g,!0,this.isVip?a.KtvScore$ChargeMode.CHARGE_MODE_MONTHLY:a.KtvScore$ChargeMode.CHARGE_MODE_ONCE,a.KtvScore$MediaType.MEDIA_TYPE_ACCOMPANY,D)}):new Promise(o=>{let D=a.VoidFunctorWithIntString.implement({invoke:async function(i,E){if(i===a.KtvScore$ErrCode.ERR_CODE_OK.value){let Q={};try{Q=JSON.parse(E)}catch(s){}this.songId=g,this.urlToken=Q.url_token,B=WA(gA({},B),{data:Q})}else B={status:i||f.ERR_NO_DATA};o(B),D.delete()}});this.ktvScoreClient.getMediaResource(JA,this.clientPid,this.userid,this.token,g,!0,this.isVip?a.KtvScore$ChargeMode.CHARGE_MODE_MONTHLY:a.KtvScore$ChargeMode.CHARGE_MODE_ONCE,a.KtvScore$MediaType.MEDIA_TYPE_SONG,D)})}async initCodec(A,g){return this.ffmpegLoaded?this.ffmpegLoaded:(await this.ffmpeg.load({coreURL:await SI(`${A}/ffmpeg-core.js`,"text/javascript"),wasmURL:await SI(`${A}/ffmpeg-core.wasm`,"application/wasm"),classWorkerURL:g}),this.ffmpegLoaded=!0,this.ffmpegLoaded)}async downloadSongById(A){let{song_id:g,isAccompany:C}=A,B={status:0,data:{}};if(!this.ffmpegLoaded)return B.status=f.ERR_NOT_INIT_CODEC,B;if(C){let o=await this._fetchSongUrl(A),D="song.mkv";await this.ffmpeg.writeFile(D,await QB(o.data.accompany_url)),console.time("exec"),await this.ffmpeg.exec(["-i",D,"-map","0:0","-c","copy","output0.mp3","-map","0:1","-c","copy","output1.mp3"]),console.timeEnd("exec");let i=await this.ffmpeg.readFile("output0.mp3"),E=await this.ffmpeg.readFile("output1.mp3");B.data={song_id:g,isAccompany:C,numberOfChannels:2,mp3Data:[i,E]}}return B}async downloadSong(A){var g,C;let{song_id:B,isAccompany:o}=A,D={status:0,data:{}};if(o)if(this.accompanySongId===B&&((g=this.accompanyPcmData)==null?void 0:g.length)>0)D.data={song_id:B,isAccompany:o,numberOfChannels:this.accompanyPcmData.length,accompanyPcmData:this.accompanyPcmData};else return this._fetchSongUrl(A).then(async i=>{var E;if(i.status!==a.KtvScore$ErrCode.ERR_CODE_OK.value)D.status=i.status;else{let Q=await Sg(i.data.accompany_url);if(Q.error===0){let s=(E=Q==null?void 0:Q.streams)==null?void 0:E.map(t=>t.stream);this.accompanySongId=B,this.accompanyPcmData=s,D.data={song_id:B,isAccompany:o,numberOfChannels:this.accompanyPcmData.length,accompanyPcmData:this.accompanyPcmData}}else D.status=f.ERR_PUB_SYSTEM}return D});else if(this.songId===B&&((C=this.songPcmData)==null?void 0:C.length)>0)D.data={song_id:B,isAccompany:o,numberOfChannels:this.songPcmData.length,pcmData:this.songPcmData};else return this._fetchSongUrl(A).then(async i=>{var E;if(i.status!==a.KtvScore$ErrCode.ERR_CODE_OK.value)D.status=i.status;else{let Q=await Sg(i.data.song_url);if(Q.error===0){let s=(E=Q==null?void 0:Q.streams)==null?void 0:E.map(t=>t.stream);this.songPcmData=s,D.data={song_id:B,isAccompany:o,numberOfChannels:this.songPcmData.length,pcmData:this.songPcmData}}else D.status=f.ERR_PUB_SYSTEM}return D});return Promise.resolve(D)}async downloadAccompanySegment(A){var g;let{song_id:C}=A,B={status:0,data:{}};if(this.accompanySegmentSongId===C&&((g=this.accompanySegmentPcmData)==null?void 0:g.length)>0)B.data={song_id:C,begin:this.accompanySegmentBegin,end:this.accompanySegmentEnd,numberOfChannels:this.accompanySegmentPcmData.length,pcmData:this.accompanySegmentPcmData};else return new Promise(o=>{let D=a.VoidFunctorWithIntString.implement({invoke:async function(i,E){var Q;if(i===a.KtvScore$ErrCode.ERR_CODE_OK.value){let s={};try{s=JSON.parse(E)}catch(e){}this.accompanySegmentSongId=C,this.accompanySegmentBegin=s.segment_begin,this.accompanySegmentEnd=s.segment_end;let t=await Sg(s.url);t.error===0?(this.accompanySegmentPcmData=(Q=t==null?void 0:t.streams)==null?void 0:Q.map(e=>e.stream),B.data={begin:this.accompanySegmentBegin,end:this.accompanySegmentEnd,numberOfChannels:this.accompanySegmentPcmData.length,pcmData:this.accompanySegmentPcmData}):B.status=f.ERR_PUB_SYSTEM}else B.status=i||f.ERR_NO_DATA;o(B),D.delete()}});this.ktvScoreClient.getMediaResource(JA,this.clientPid,this.userid,this.token,C,!0,this.isVip?a.KtvScore$ChargeMode.CHARGE_MODE_MONTHLY:a.KtvScore$ChargeMode.CHARGE_MODE_ONCE,a.KtvScore$MediaType.MEDIA_TYPE_ACCOMPANY_SEGMENT,D)});return Promise.resolve(B)}async getLyric(A){let{song_id:g,isAccompany:C=0}=A,B={status:0,data:{}},o=await this.initKtvScoreClient({song_id:g});if(o.error_code===0){let D=await this.ktvScoreClient.getLyric();B.data={song_id:g,isAccompany:C,lyric:D.replace(/\0/g,"")}}else B.status=o.error_code;return Promise.resolve(B)}async getPitchData({song_id:A}){let g={status:0,data:{}},C=await this.initKtvScoreClient({song_id:A});if(C.error_code===0){let B=this.ktvScoreClient.getPitchData(),o=[],D=B.size();for(let i=0;i<D;i++)o.push(B.get(i));g.data={pitch:o},B.delete()}else g.status=C.error_code;return Promise.resolve(g)}setAudioParams(A){let{sampleRate:g,channels:C}=A;return this.ktvScoreClient.setAudioParams(g,C),this.ktvScoreClient.enableScore(!0),Promise.resolve({status:0,data:{}})}setScoreHardLevel({level:A=5}){let g={status:0,data:{}};return/^[1-5]{1}$/.test(A)?this.ktvScoreClient.setScoreHardLevel(a.KtvScore$ScoreHardLevel[`SCORE_HARD_LEVEL${A}`]):g.status=f.ERR_PUB_PARAMS,Promise.resolve(g)}processScore(A){let{buffer:g,pts:C}=A,B=new a.Int16Array(g.length);return B.data.set(g),this.ktvScoreClient.process(B,C),B.delete(),Promise.resolve({status:0,data:{}})}getRealTimePitch(){let A=this.ktvScoreClient.immediatelyDisplay();return Promise.resolve({status:0,data:{pitch:A}})}getScore(A){let{pts:g}=A,C={status:0,data:{}},B=this.ktvScoreClient.updateScoreToScoreInfo(g);return C.data={song_id:this.scoreSongId,score:B.score,index:B.index},Promise.resolve(C)}getAverageScore(A){let{pts:g}=A,C={status:0,data:{}},B=this.ktvScoreClient.updateAverageScore(g);return C.data={song_id:this.scoreSongId,averageScore:B},Promise.resolve(C)}getTotalScore(A){let{pts:g}=A,C={status:0,data:{}},B=this.ktvScoreClient.updateTotalScore(g),o=this.ktvScoreClient.calculateTotalScore();return C.data={song_id:this.scoreSongId,totalScore:B,wholeScore:o},Promise.resolve(C)}reset(){let A={status:0,data:{}};return this.ktvScoreClient.reset(),Promise.resolve(A)}};vA.packageName="__PKG_NAME__",vA.version="__PKG_VERSION__",vA.updateTime="__UPDATE_TIME__";var $E=vA,DA=window.yinsudaClient;DA||(DA=new $E,a.onRuntimeInitialized=function(){let I=a.IHttp.implement({get:async function(A,g,C){let B=C.clone(),o=await jE({url:A,header:g});B.opCall(JSON.stringify(o)),B.delete()},post:async function(A,g,C,B){let o=B.clone(),D=await ZE({url:A,header:g,body:C});o.opCall(JSON.stringify(D)),o.delete()}});DA.ktvScoreClient=new a.KtvScore(I)},window.yinsudaClient=DA);var Z=DA;var LC=$g(Xg(),1);var YC=(E=>(E.PLAYING="playing",E.PAUSED="paused",E.STOPPED="stopped",E.PROGRESS_UPDATED="progress_updated",E.CURRENT_TIME_INDEX_UPDATED="current_time_index_updated",E.PITCH_UPDATED="pitch_updated",E.SCHORE_UPDATED="schore_updated",E.MUSIC_LOADED="music_loaded",E))(YC||{});function Ii(I,A){if(I<A[0])return-1;if(I>A[A.length-1])return A.length-1;for(let g=0;g<A.length;g++)if(A[g]>=I)return g;return-1}var yg=class extends LC.EventEmitter{constructor(g,C){super();this.core=g;N(this,"EVENT",YC);N(this,"log");N(this,"yinsudaClient");N(this,"assetsPath","");N(this,"workerURL","");N(this,"currentTimeIndex",0);N(this,"lyric");N(this,"pitchList");N(this,"lyricStartTimeList");N(this,"musicId");N(this,"originalPlayer");N(this,"accompanyPlayer");N(this,"originalURL");N(this,"accompanyURL");N(this,"useOriginalSong",!0);N(this,"volume",80);N(this,"bgmAudioTrack");N(this,"audioSourceNodes",[]);N(this,"downloadMusicPromise",{});N(this,"downloadedMusicId");N(this,"isYSDCodecInited",!1);this.log=g.log.createChild({id:`mp${C}`}),this.yinsudaClient=Z,["setUser","initCodec","downloadSongById","getLyric","getPitchData"].forEach(B=>{let o=Z[B];Z[B]=function(...D){let i=o.call(Z,...D);return g.utils.isPromise(i)?new Promise((E,Q)=>{i.then(s=>{if(typeof s.status=="undefined")return E(s);s.status===0?E(s.data):Q(new Error(`${B} failed: ${s.status}`))}).catch(Q)}):i}})}get player(){return this.useOriginalSong?this.originalPlayer:this.accompanyPlayer}get currentTime(){var g;return((g=this.player)==null?void 0:g.currentTime)||0}set currentTime(g){this.originalPlayer&&(this.originalPlayer.currentTime=g),this.accompanyPlayer&&(this.accompanyPlayer.currentTime=g),this.log.info(`set currentTime: ${g}`)}get duration(){var g;return((g=this.player)==null?void 0:g.duration)||0}get isPlaying(){var g;return((g=this.player)==null?void 0:g.isPlaying)||!1}get isPaused(){var g;return((g=this.player)==null?void 0:g.isPaused)||!1}get isStopped(){return this.player?this.player.isStopped:!0}get isLyricDownloaded(){return!!this.lyric}get isPitchDownloaded(){return!!this.pitchList}get isMusicDownloaded(){return!!(this.downloadedMusicId&&this.downloadedMusicId===this.musicId)}async initialize(g){this.log.info("initialize with config: ",g),g.assetsPath&&(this.assetsPath=g.assetsPath),g.workerURL&&(this.workerURL=g.workerURL),await Z.setUser(g)}initDownloadPromise(){this.log.info("initDownloadPromise"),this.downloadMusicPromise.promise=new Promise((g,C)=>{this.downloadMusicPromise.resolve=g,this.downloadMusicPromise.reject=C})}async loadMusic(g){let{musicId:C,isNeedDownloadMusic:B=!0,isNeedLyric:o=!0,isNeedPitch:D=!0}=g;if(!B&&!o&&!D)throw new Error("(isNeedDownloadMusic, isNeedLyric, isNeedPitch) cannot all be false");B&&this.initDownloadPromise(),this.log.info("loadMusic with option: ",g),this.musicId=C;let i={};if(o&&(i.lyric=await this.getLyric(C)),D&&(i.pitchList=await this.getPitch(C)),B)try{await this.downloadMusic(g),this.downloadMusicPromise.resolve()}catch(E){this.downloadMusicPromise.reject(E)}return this.emit(this.EVENT.MUSIC_LOADED),i}async downloadMusic({musicId:g}){this.isYSDCodecInited||(this.log.info("downloadMusic initCodec"),await Z.initCodec(this.assetsPath,this.workerURL||this.assetsPath),this.isYSDCodecInited=!0),this.log.info(`downloadMusic downloadSongById ${g}`);let C=await Z.downloadSongById({song_id:g,isAccompany:1});C!=null&&C.mp3Data&&(C.mp3Data[0]&&(this.accompanyURL&&URL.revokeObjectURL(this.accompanyURL),this.accompanyURL=URL.createObjectURL(new Blob([C.mp3Data[0]],{type:"audio/mpeg"})),this.accompanyPlayer=new this.core.AudioPlayer({id:"ktv-p0",url:this.accompanyURL,track:null,muted:!1,container:null,log:this.log.createChild({id:"ktv-p0"})})),C.mp3Data[1]&&(this.originalURL&&URL.revokeObjectURL(this.originalURL),this.originalURL=URL.createObjectURL(new Blob([C.mp3Data[1]],{type:"audio/mpeg"})),this.originalPlayer=new this.core.AudioPlayer({id:"ktv-p1",url:this.originalURL,track:null,muted:!1,container:null,log:this.log.createChild({id:"ktv-p1"})}))),this.log.info("downloadMusic success"),this.downloadedMusicId=g}async getLyricAndPitch(g){let C=await this.getLyric(g),B=await this.getPitch(g);return{lyric:C,pitchList:B}}async getLyric(g){let{lyric:C}=await Z.getLyric({song_id:g,isAccompany:1});this.log.info("getLyric success");let B=C.indexOf(`\r
23
23
  `)!==-1?`\r
24
24
  `:`
25
- `;return this.lyricStartTimeList=C.split(B).map(o=>{let D=o.match(/\[(\d+),/);if(D)return+D[1]}).filter(o=>typeof o=="number"),this.lyric=C,C}async getPitch(g){let{pitch:C}=await Z.getPitchData({song_id:g});return this.log.info("getPitchData success"),this.pitchList=C,C}async play(){if(!this.originalPlayer||!this.accompanyPlayer||this.isPlaying)return;this.setVolume(this.volume);let g=this.originalPlayer.play(),C=this.accompanyPlayer.play();this.originalPlayer.setMuted(!this.useOriginalSong),this.accompanyPlayer.setMuted(this.useOriginalSong),this.originalPlayer.on("time-updated",B=>this.onTimeUpdated(this.originalPlayer,B)),this.originalPlayer.on("player-state-changed",B=>this.onPlayerStateChange(this.originalPlayer,B.state)),this.accompanyPlayer.on("time-updated",B=>this.onTimeUpdated(this.accompanyPlayer,B)),this.accompanyPlayer.on("player-state-changed",B=>this.onPlayerStateChange(this.accompanyPlayer,B.state));try{await(this.useOriginalSong?g:C)}catch(B){if(B.message.includes("NotAllowedError"))this.handleAutoPlayFailed();else throw B}}async pause(){var B,o;let g=(B=this.originalPlayer)==null?void 0:B.pause(),C=(o=this.accompanyPlayer)==null?void 0:o.pause();await Promise.all([g,C])}async resume(){var B,o;let g=(B=this.originalPlayer)==null?void 0:B.resume(),C=(o=this.accompanyPlayer)==null?void 0:o.resume();await Promise.all([g,C])}stop(){var g,C,B,o;(g=this.originalPlayer)==null||g.stop(),(C=this.accompanyPlayer)==null||C.stop(),(B=this.originalPlayer)==null||B.removeAllListeners(),(o=this.accompanyPlayer)==null||o.removeAllListeners(),delete this.bgmAudioTrack,this.audioSourceNodes.forEach(D=>D.disconnect())}switchMusicTrack(g){var C,B;this.useOriginalSong=g,(C=this.originalPlayer)==null||C.setMuted(!g),(B=this.accompanyPlayer)==null||B.setMuted(g)}onTimeUpdated(g,C){if(g===this.player&&(this.emit("progress_updated",{currentTime:C,duration:this.player.duration}),this.lyricStartTimeList)){let B=Ii(C,this.lyricStartTimeList);B!==this.currentTimeIndex&&(this.currentTimeIndex=B,this.emit("current_time_index_updated",{currentTime:C,currentTimeIndex:B}))}}onPlayerStateChange(g,C){g===this.player&&(C==="PLAYING"?this.emit(this.EVENT.PLAYING):C==="PAUSED"?this.emit(this.EVENT.PAUSED):C==="STOPPED"&&(this.stop(),this.emit(this.EVENT.STOPPED)))}handleAutoPlayFailed(){if(this.core.room.enableAutoPlayDialog)new this.core.AutoPlayDialog;else{let g=()=>{var C;(C=this.player)==null||C.resume().then(()=>{document.removeEventListener("click",g,!0)})};document.addEventListener("click",g,!0)}}initBGMAudioTrack(){var D,i;if(this.bgmAudioTrack)return this.bgmAudioTrack;if(!((D=this.originalPlayer)!=null&&D.element)||!((i=this.accompanyPlayer)!=null&&i.element))return;let{audioContext:g}=this.core,C=g.createMediaElementSource(this.originalPlayer.element),B=g.createMediaElementSource(this.accompanyPlayer.element),o=g.createMediaStreamDestination();return C.connect(o),B.connect(o),C.connect(g.destination),B.connect(g.destination),this.bgmAudioTrack=o.stream.getAudioTracks()[0],this.audioSourceNodes=[C,B],this.bgmAudioTrack}setVolume(g){var C,B;g<0||g>100||(this.volume=g,(C=this.originalPlayer)==null||C.setVolume(this.volume/100),(B=this.accompanyPlayer)==null||B.setVolume(this.volume/100))}clearMusic(){delete this.musicId,delete this.downloadedMusicId,delete this.lyric,delete this.pitchList,this.originalURL&&URL.revokeObjectURL(this.originalURL),this.accompanyURL&&URL.revokeObjectURL(this.accompanyURL),delete this.originalURL,delete this.accompanyURL,delete this.originalPlayer,delete this.accompanyPlayer}};var KC=$g(Xg(),1);var UC=function(){let I=0;class A{constructor(Q){Q&&(this.userId=Q),this.name="aa-wk"}getPrevFix(Q){return`[${this.timestamp}] <${Q.toUpperCase()}> [${this.name}${this.userId?`|${this.userId}`:""}]`}get timestamp(){let Q=new Date;Q.setTime(Date.now()+I);let s=String(Q.getMilliseconds());return"padStart"in String.prototype&&(s=s.toString().padStart(3,"0")),`${Q.toTimeString().replace(/.*(\d{2}:\d{2}:\d{2}).*/,"$1")}:${s}`}log(Q,s,...t){let e=this.getPrevFix(Q);console[Q](e,...t),postMessage({log:{log:[e,...t],level:s,userId:this.userId}})}debug(...Q){this.log("debug",1,...Q)}info(...Q){this.log("info",2,...Q)}warn(...Q){this.log("warn",3,...Q)}error(...Q){this.log("error",4,...Q)}}let g=80,C=300;class B{constructor(){this.remoteAudioMap=new Map,this.log=new A,this.log.info("DEFAULT_BUFFER_LEN",C,"MULTI_AUDIO_ALIGN_TARGET_DELAY",g),this.doMultiRemoteAudioAlignment(),setInterval(()=>{this.doMultiRemoteAudioAlignment();let Q={};this.remoteAudioMap.forEach(({buffer:s},t)=>{Q[t]=(s==null?void 0:s.length)||0}),postMessage({remoteUserBufferLenMap:Q})},2e3)}async removeRemoteAudio(Q,s=!1){if(!this.remoteAudioMap.has(Q))return;this.log.warn("removeRemoteAudio",Q,"hasLeavingTag",s);let t=this.remoteAudioMap.get(Q)||{},{buffer:e,writer:r,audioDecoder:c}=t;e==null||e.destroy(),c==null||c.close(),r==null||r.abort(),this.remoteAudioMap.delete(Q),postMessage({removedUserId:Q})}onAudioFrame(Q,s,t=!1){let e=this.remoteAudioMap.get(Q)||{};e.audioDecoder||(e.audioDecoder=new AudioDecoder({error:r=>this.log.error(`[${Q}] audio decoder error`,r),output:r=>{var c;(c=e.writer)==null||c.write(r).catch(F=>{this.log.warn(`[${Q}] writer write error`,F)})}}),e.audioDecoder.configure({codec:"opus",sampleRate:48e3,numberOfChannels:2})),e.buffer||(e.buffer=new D(Q),e.buffer.setTargetDelay(C),e.buffer.onAudioFrame=r=>{var c;((c=e.audioDecoder)==null?void 0:c.state)==="configured"&&e.audioDecoder.decode(r.frame)},e.buffer.onNotData2s=()=>{var r;(r=this.remoteAudioMap.get(Q))!=null&&r.hasLeavingTag&&this.removeRemoteAudio(Q,!0)}),e.buffer.input(new o(new EncodedAudioChunk({data:s.frame.data,timestamp:s.frame.timestamp,type:"key"}),s.ntp)),e.hasLeavingTag=t,t&&(e.buffer.minDelay=0),this.remoteAudioMap.set(Q,e)}onWritableStream(Q,s){this.log.warn("onWritableStream",Q);let t=this.remoteAudioMap.get(Q)||{};t.writer=s.getWriter(),this.remoteAudioMap.set(Q,t)}doMultiRemoteAudioAlignment(){if(this.remoteAudioMap.size<2||this.checkIsMultiRemoteAudioAligned())return;let Q=0,s=0,t={};this.remoteAudioMap.forEach(({buffer:e},r)=>{!e||e.inputNTP<0||(t[r]=e.inputNTP,(Q===0||e.inputNTP<Q)&&(Q=e.inputNTP),e.inputNTP>s&&(s=e.inputNTP))}),!(s-Q<g||s-Q>6e4)&&(this.log.info(`maxNTPTime ${s} minNTPTime ${Q}`,t),this.remoteAudioMap.forEach(({buffer:e},r)=>{if(!e)return;let c=s-e.inputNTP;this.log.info(`[${r}] ntpDelayToMaxNTPTime ${c}`),e.setTargetDelay(C+(s-Q)-c)}),this.checkIsMultiRemoteAudioAligned())}checkIsMultiRemoteAudioAligned(){let Q=0,s=0,t=[];this.remoteAudioMap.forEach(({buffer:r},c)=>{if(!r||r.outputNTP<0)return;let F=r.outputNTP;t.push({userId:c,ntp:F,bufferLen:r.length}),F>Q&&(Q=F),(s===0||F<s)&&(s=F)});let e=Q-s<g;return e||this.log.warn("isAligned",e,"ntp(max - min)",Q-s,t),e}}class o{constructor(Q,s){this.frame=Q,this.ntpTime=s}}class D{get inputNTP(){var Q;return((Q=this.data[this.data.length-1])==null?void 0:Q.ntpTime)||-1}get outputNTP(){var Q;return((Q=this.data[0])==null?void 0:Q.ntpTime)||-1}get length(){return this.data.length===0?0:this.data.length===1?20:(this.data[this.data.length-1].frame.timestamp-this.data[0].frame.timestamp)/48e3*1e3}get isOrdered(){return this.data.every((Q,s)=>s===0?!0:Q.frame.timestamp>this.data[s-1].frame.timestamp)}constructor(Q){this.minDelay=0,this.maxDelay=4e3,this.targetDelay=0,this.data=[],this.workerIntervalId=-1,this.workerIntervalTime=0,this.lastInputTime=0,this.lastOutputTime=0,this.userId=Q,this.log=new A("buf|"+Q)}startOutput(){this.workerIntervalId=setInterval(()=>{this.output(),this.workerIntervalTime&&Date.now()-this.workerIntervalTime>40&&this.log.warn(`worker interval delay ${Date.now()-this.workerIntervalTime}`),this.workerIntervalTime=Date.now()},20)}stopOutput(){clearInterval(this.workerIntervalId),this.workerIntervalId=-1}input(Q){this.lastInputTime=Date.now();let s=this.data.length-1,t=!1;for(;s>=0;s--)if(Q.frame.timestamp<this.data[s].frame.timestamp&&(s===0||Q.frame.timestamp>this.data[s-1].frame.timestamp)){t=!0;break}t?(this.data.splice(s,0,Q),this.isOrdered||this.log.warn("not ordered",this.data.map(e=>e.frame.timestamp/48))):this.data.push(Q),this.length>=this.targetDelay&&this.workerIntervalId===-1&&this.startOutput()}output(Q=!1,s=!1){var e;if(Date.now()-this.lastInputTime>2e3&&(this.log.warn("no input data over 2s"),(e=this.onNotData2s)==null||e.call(this)),this.length<=this.minDelay)return;if(Q&&this.length<=this.targetDelay){this.log.warn(`output to targetDelay ${this.length} -> ${this.targetDelay} done`);return}let t=this.data.shift();t&&this.onAudioFrame&&(this.lastOutputTime&&Date.now()-this.lastOutputTime>60&&this.log.warn("output delay",Date.now()-this.lastOutputTime,"buf len",this.length),this.lastOutputTime=Date.now(),this.onAudioFrame(t)),this.length===0&&this.onBufferEmpty&&(this.log.warn("onBufferEmpty"),this.onBufferEmpty()),this.length>=this.targetDelay+(Q?0:g)&&(Q||this.log.warn(this.userId,`output to targetDelay ${this.length} -> ${this.targetDelay}`),this.output(!0,!0))}waitBufferEmpty(){return new Promise(Q=>{this.onBufferEmpty=Q})}async setTargetDelay(Q){if(!(Q===this.targetDelay||Q<0||Math.abs(Q-this.targetDelay)<=20)){if(Q>this.maxDelay){this.log.warn(`cannot setTargetDelay ${Q} over ${this.maxDelay}`);return}this.minDelay=Math.max(0,Q-200),Q>this.targetDelay&&this.stopOutput(),this.targetDelay=Q,this.log.info(this.userId,"setTargetDelay",Q,"bufLen",this.length),Q===0&&await this.waitBufferEmpty()}}destroy(){this.log.warn("destroy"),this.data=[],this.stopOutput(),delete this.onAudioFrame}}let i=new B;self.onmessage=function(E){E.data.action==="remove"?i.removeRemoteAudio(E.data.remoteUserId,E.data.hasLeavingTag):(E.data.frameWithNtp&&i.onAudioFrame(E.data.remoteUserId,E.data.frameWithNtp,E.data.hasLeavingTag),E.data.writableStream&&(i.onWritableStream(E.data.remoteUserId,E.data.writableStream),console.warn("onmessage",E))),E.data.ntpOffset&&(I=E.data.ntpOffset)}}.toString(),JC=URL.createObjectURL(new Blob([UC.slice(UC.indexOf("{")+1,-1)],{type:"text/javascript"}));var Ng=class{constructor(A){this.core=A;N(this,"log");N(this,"intervalId",-1);N(this,"audioAlignmentWorker");N(this,"remoteUserBufferLenMap",{});this.log=A.log.createChild({id:"aal-m"}),A.room.on(A.Enum.RoomEvent.REMOTE_PUBLISHED,this.onRemotePublished,this)}get remotePublishedUserMap(){return this.core.room.remotePublishedUserMap}onRemotePublished({userId:A,remoteAudioTrack:g}){g.on(this.core.Enum.RemoteTrackEvent.AUDIO_FRAME_WITH_NTP,({ntp:C,frame:B,hasLeavingTag:o})=>{if(!g.user.muteState.audioAvailable||!this.audioAlignmentWorker)return;let D={action:"add",remoteUserId:A,hasLeavingTag:o,frameWithNtp:{ntp:C,frame:{data:B.data,timestamp:B.timestamp}}},i=[B.data];g.trackGenerator||(g.initTrackGenerator(),D.writableStream=g.trackGenerator.writable,i.push(D.writableStream)),this.audioAlignmentWorker.postMessage(D,i)}),g.on(this.core.Enum.RemoteTrackEvent.FLAG_CHANGED,()=>{var C;g.user.muteState.audioAvailable||(g.deleteTrackGenerator(),(C=this.audioAlignmentWorker)==null||C.postMessage({action:"remove",remoteUserId:A}))})}start(){let A=this.core.rtcDectection.isWebCodecsSupported(),g=this.core.rtcDectection.isMediaStreamTrackGeneratorSupported();if(!A||!g){this.log.info(`not support webcodec: ${A} mediaStreamTrackGenerator: ${g}`);return}this.audioAlignmentWorker||(this.log.info("create worker"),this.audioAlignmentWorker=new Worker(JC),this.audioAlignmentWorker.onmessage=({data:C})=>{var B;C.remoteUserBufferLenMap?this.remoteUserBufferLenMap=C.remoteUserBufferLenMap:C.log?this.core.loggerManager.addLogToQueue(C.log.level,C.log.log,!1,this.core.room.userId,this.core.room.sdkAppId):C.removedUserId&&((B=this.remotePublishedUserMap.get(C.removedUserId))==null||B.remoteAudioTrack.deleteTrackGenerator())},this.audioAlignmentWorker.postMessage({ntpOffset:this.core.getNetworkTimeOffset()}))}stop(){this.audioAlignmentWorker&&(this.log.warn("stop"),this.audioAlignmentWorker.terminate(),delete this.audioAlignmentWorker,this.remotePublishedUserMap.forEach(A=>{A.remoteAudioTrack.deleteTrackGenerator()}))}};var Ci="publish-mix-stream-to-room",dC=(D=>(D.STARTED="started",D.STOPPED="stopped",D.REQUIRE_LOAD_MUSIC="require-load-music",D.SCORE_UPDATED="score-updated",D.PITCH_UPDATED="pitch-updated",D.PROGRESS_UPDATED="progress_updated",D))(dC||{}),kC=0,yA=class yA extends KC.EventEmitter{constructor(g){super();this.core=g;N(this,"disableRandomCall",!0);N(this,"trtcBGM");N(this,"log");N(this,"player");N(this,"leadSingerPlayerState",1);N(this,"role");N(this,"bgmUserId","");N(this,"bgmStartNTP",0);N(this,"sendSEIIntervalId",-1);N(this,"updateProgressAndPitchIntervalId",-1);N(this,"clearBlackVideoTrack");N(this,"isInitialized",!1);N(this,"BGM_AND_PITCH_UPDATE_INTERVAL",100);N(this,"isOnStartedEmitted",!1);N(this,"isBackSingerAutoStarted",!1);N(this,"audioAlignmentManager");this.log=g.log.createChild({id:yA.Name+ ++kC}),this.player=new yg(this.core,kC),this.player.on(this.player.EVENT.MUSIC_LOADED,this.onMusicLoaded,this),this.player.on(this.player.EVENT.PLAYING,this.onPlaying,this),this.player.on(this.player.EVENT.STOPPED,this.onStopped,this),this.core.room.audioManager.enableEncodeNTPToAudioFrame(),this.audioAlignmentManager=new Ng(this.core)}get isLeadSinger(){return this.role==="LeadSinger"}get isBackSinger(){return this.role==="BackSinger"}get isAudience(){return this.role===this.core.Enum.UserRole.AUDIENCE}get isStarted(){return this.isLeadSinger?!this.player.isStopped:this.leadSingerPlayerState!==1}async onMusicLoaded(){if(this.isLeadSinger&&this.startSendSEI(),this.isLeadSinger||this.isBackSinger)try{if(await this.player.yinsudaClient.initKtvScoreClient({song_id:this.player.musicId}),this.core.trtc.on(this.core.TRTC.EVENT.TRACK,g=>{if(g.track.kind==="audio"){let C=g.track.getSettings();this.player.yinsudaClient.setAudioParams({sampleRate:C.sampleRate||48e3,channels:C.channelCount||1})}}),this.core.trtc._localAudioTrack){this.log.warn("restart local audio for pitch issue");let g=this.core.trtc._localAudioConfig||void 0;await this.core.trtc.stopLocalAudio(),await this.core.trtc.startLocalAudio(g)}this.core.trtc.on(this.core.TRTC.EVENT.AUDIO_FRAME,this.onAudioFrame,this),this.player.on(this.player.EVENT.CURRENT_TIME_INDEX_UPDATED,({currentTime:g})=>{Promise.all([this.player.yinsudaClient.getScore({pts:g}).then(C=>Math.max(0,C.data.score)),this.player.yinsudaClient.getAverageScore({pts:g}).then(C=>C.data.averageScore),this.player.yinsudaClient.getTotalScore({pts:g}).then(C=>({totalScore:C.data.totalScore,maxScore:C.data.wholeScore}))]).then(([C,B,{totalScore:o,maxScore:D}])=>{this.emit("score-updated",{score:C,averageScore:B,totalScore:o,maxScore:D})})})}catch(g){this.log.error(g)}}onAudioFrame(g){if(this.player.currentTime===0)return;let C={buffer:Int16Array.from(g.data,B=>B*32767),pts:this.player.currentTime};this.player.yinsudaClient.processScore(C)}onPlaying(){var g;this.isLeadSinger&&!this.bgmStartNTP&&(this.bgmStartNTP=this.core.trtc.getNetworkTime(),(g=this.trtcBGM)==null||g.startLocalAudio({option:{audioTrack:this.player.initBGMAudioTrack(),captureVolume:this.player.volume,echoCancellation:!1,noiseSuppression:!1,autoGainControl:!1,profile:{bitrate:128,sampleRate:48e3,channelCount:2}}}))}async initialize(g){this.isInitialized||(this.isInitialized=!0,this.log.info(`initialize ${JSON.stringify(g)}`),g.role&&(this.role=g.role),g.updateInterval&&(this.BGM_AND_PITCH_UPDATE_INTERVAL=g.updateInterval),await this.player.initialize(g.yinsuda),g.bgm.userId&&(this.bgmUserId=g.bgm.userId),this.isLeadSinger&&g.bgm.sdkAppId&&this.createTRTCBGM(g.bgm),this.role&&(this.core.trtc.on(this.core.TRTC.EVENT.REMOTE_AUDIO_AVAILABLE,C=>{(this.isLeadSinger||this.isBackSinger)&&C.userId!==this.bgmUserId&&this.core.trtc.muteRemoteAudio(C.userId,!1)}),this.core.trtc.on(this.core.TRTC.EVENT.REMOTE_VIDEO_AVAILABLE,C=>{C.userId===this.bgmUserId&&!this.isLeadSinger&&this.core.trtc.startRemoteVideo({userId:C.userId,streamType:C.streamType})}),this.core.trtc.on(this.core.TRTC.EVENT.SEI_MESSAGE,async C=>{if(this.isLeadSinger)return;let B=JSON.parse(new TextDecoder().decode(C.data));B.params.music_id=Gg(B.params.music_id),this.player.musicId!==B.params.music_id&&!this.isLeadSinger&&(this.player.musicId=B.params.music_id,this.emit("require-load-music",B.params.music_id)),this.onLeadSingerPlayerState(B.params.play_state);let o=this.core.trtc.getNetworkTime()-+B.params.bgm_progress_update_ntp,D=B.params.progress===0?0:B.params.progress+o;if(this.fixBGMProgress(D),this.isAudience){let i=this.audioAlignmentManager.remoteUserBufferLenMap[C.userId]||0;this.emit("progress_updated",{currentTime:D-i<0?0:D-i,duration:B.params.duration})}})),this.core.room.audioManager.enableDecodeNTPFromAudioFrame())}async createTRTCBGM(g){this.isLeadSinger&&(this.trtcBGM=this.core.TRTC.create({enableSEI:!0,businessInfo:JSON.stringify({Str_uc_params:{is_send_audio_filterable:!1}})}),this.trtcBGM.room.enableChorus=!0,await this.trtcBGM.enterRoom({sdkAppId:g.sdkAppId,userId:g.userId,userSig:g.userSig,roomId:g.roomId,strRoomId:g.strRoomId,role:this.core.TRTC.TYPE.ROLE_ANCHOR,autoReceiveAudio:!1}),this.trtcBGM.room.audioManager.enableEncodeNTPToAudioFrame())}async destroyTRTCBGM(){this.trtcBGM&&(this.stopSendSEI(),this.trtcBGM.room.audioManager.disableEncodeNTPToAudioFrame(),await this.trtcBGM.exitRoom(),this.trtcBGM.destroy(),delete this.trtcBGM)}fixBGMProgress(g){if(!this.isBackSinger||!this.player.isPlaying)return;Math.abs(g-this.player.currentTime)>80&&(this.log.warn(`fix bgm progress: ${g-this.player.currentTime}`),this.player.currentTime=g)}startCDN(){if(!this.isLeadSinger)return;let g={roomId:this.core.room.useStringRoomId?void 0:+this.core.room.roomId,strRoomId:this.core.room.useStringRoomId?this.core.room.roomId:void 0};this.core.trtc.startPlugin("CDNStreaming",{target:{publishMode:Ci,robotUser:gA({userId:`${this.core.room.roomId}_robot`},g)},encoding:{audioBitrate:128,audioChannels:2},mix:{videoLayoutList:[{fixedVideoUser:gA({userId:`${this.core.room.roomId}_bgm`},g),width:64,height:64,locationX:0,locationY:0,fixedVideoStreamType:"main",zOrder:1}]}})}startSendSEI(){!this.trtcBGM||this.sendSEIIntervalId!==-1||(this.trtcBGM.startLocalVideo({option:{videoTrack:AI(this.core.Timer,g=>{this.clearBlackVideoTrack=g}),profile:{bitrate:50}}}),this.trtcBGM.on(this.core.TRTC.EVENT.PUBLISH_STATE_CHANGED,g=>{g.state==="started"&&this.sendSEIIntervalId<0&&(this.log.debug("start send sei"),this.sendSEIIntervalId=this.core.Timer.run("intervalInWorker",()=>{if(!this.core.room.isJoined)return this.stopSendSEI();this.player.musicId&&this.doSendSEI()},{fps:5}))}))}doSendSEI(){var C;let g={api:"info",params:{music_id:FI(this.player.musicId)?this.player.musicId:RI(this.player.musicId),duration:this.player.duration,progress:this.player.currentTime,bgm_progress_update_ntp:String((this.trtcBGM||this.core.trtc).getNetworkTime()),bgm_start_ntp:String(this.bgmStartNTP),play_state:this.player.isPlaying?2:this.player.isStopped?1:3,use_local_mix:!0}};(C=this.trtcBGM)==null||C.sendSEIMessage(new TextEncoder().encode(JSON.stringify(g)).buffer)}stopSendSEI(){var g;(g=this.clearBlackVideoTrack)==null||g.call(this),this.core.Timer.clearTask(this.sendSEIIntervalId),this.sendSEIIntervalId=-1}async onStarted(){this.isOnStartedEmitted||(this.log.info("onStarted"),this.emit("started"),this.isOnStartedEmitted=!0,this.isAudience?(this.audioAlignmentManager.start(),this.log.info("auto start chorus for audience"),this.core.trtc.startPlugin("Chorus",{})):(this.updateProgressAndPitchIntervalId=this.core.Timer.run("interval",()=>{this.player.yinsudaClient.getRealTimePitch().then(g=>{this.emit("pitch-updated",{pitch:g.data.pitch})}),this.emit("progress_updated",{currentTime:this.player.currentTime,duration:this.player.duration})},{delay:this.BGM_AND_PITCH_UPDATE_INTERVAL}),this.autoStartBackSinger()))}async autoStartBackSinger(){!this.isBackSinger||!this.player.downloadMusicPromise.promise||(this.log.info("wait music download",this.player.downloadMusicPromise.promise),await this.player.downloadMusicPromise.promise,this.isBackSingerAutoStarted||(this.log.info("auto start chorus for backsinger"),this.core.trtc.startPlugin("Chorus",{}),this.isBackSingerAutoStarted=!0))}onStopped(){this.log.info("onStopped"),this.bgmStartNTP=0,this.core.clearStarted(this,this.getGroup()),this.player.stop(),this.reset(),this.emit("stopped")}onLeadSingerPlayerState(g){if(this.leadSingerPlayerState!==g)switch(this.leadSingerPlayerState=g,g){case 2:this.player.isPaused&&this.player.resume(),this.onStarted();break;case 3:this.player.pause();break;case 1:this.onStopped();break;default:break}}getName(){return yA.Name}getAlias(){return"ktv"}getGroup(){return"ktv"}getValidateRule(g){switch(g){case"start":return GI;case"update":return nI(this.core);case"stop":return MI}}async start(g){this.isAudience||(typeof g.useOriginalSong=="boolean"&&this.player.switchMusicTrack(g.useOriginalSong),typeof g.isSelected=="boolean"&&this.switchSelected(g.isSelected),this.isLeadSinger&&this.startSendSEI(),g.bgmVolume&&this.player.setVolume(g.bgmVolume),await this.player.play(),this.isLeadSinger&&this.onStarted())}async update(g){var C;typeof g.useOriginalSong=="boolean"&&this.player.switchMusicTrack(g.useOriginalSong),typeof g.isSelected=="boolean"&&this.switchSelected(g.isSelected),g.bgmAction&&await this.player[g.bgmAction](),g.role&&g.role!==this.role&&(await this.switchRole(g.role,g.bgm),this.isLeadSinger&&this.startSendSEI()),typeof g.bgmVolume=="number"&&((C=this.trtcBGM)==null||C.updateLocalAudio({option:{captureVolume:g.bgmVolume}}),this.player.setVolume(g.bgmVolume))}async stop(){this.player.isStopped||(this.player.stop(),this.reset(),this.emit("stopped"))}async switchRole(g,C){if(g===this.role)return;let B=this.role===this.core.Enum.UserRole.AUDIENCE,o=this.role==="LeadSinger",D=this.role==="BackSinger",i=g==="LeadSinger",E=g==="BackSinger",Q=g===this.core.Enum.UserRole.AUDIENCE;this.onStopped(),this.role=g,await this.core.trtc.switchRole(Q?this.core.TRTC.TYPE.ROLE_AUDIENCE:this.core.TRTC.TYPE.ROLE_ANCHOR),B&&i?(this.createTRTCBGM(C),this.core.room.autoReceiveAudio=!1,this.player.clearMusic()):o&&Q?(this.doSendSEI(),setTimeout(()=>this.destroyTRTCBGM(),200),this.core.room.autoReceiveAudio=!0,this.player.clearMusic()):B&&E&&!this.player.isMusicDownloaded&&this.player.musicId&&await this.player.loadMusic({musicId:this.player.musicId,isNeedDownloadMusic:!0,isNeedLyric:!this.player.isLyricDownloaded,isNeedPitch:!this.player.isPitchDownloaded}),this.core.room.remotePublishedUserMap.forEach(s=>{s.remoteAudioTrack.player.setTrack(s.remoteAudioTrack.outMediaTrack)}),this.core.room.remotePublishedUserMap.has(this.bgmUserId)&&(i||this.core.trtc.muteRemoteAudio(this.bgmUserId,this.isBackSinger),await this.onStarted(),E&&this.autoStartBackSinger())}async switchSelected(g){this.isAudience||await this.core.room.signalChannel.sendWaitForResponse({command:"abstract_cmd",data:{cmd:"UpdateChannelMediaOptions",data:{is_send_audio_filterable:!g}},responseCommand:"custom-cmd-res"})}reset(){this.bgmStartNTP=0,this.isOnStartedEmitted=!1,this.isBackSinger&&(this.isBackSingerAutoStarted=!1),this.trtcBGM&&this.trtcBGM.stopLocalAudio(),this.isAudience?this.audioAlignmentManager.stop():(this.player.yinsudaClient.reset(),this.core.Timer.clearTask(this.updateProgressAndPitchIntervalId),this.updateProgressAndPitchIntervalId=-1)}destroy(){this.isInitialized=!1,this.stop(),this.destroyTRTCBGM(),this.core.room.audioManager.disableEncodeNTPToAudioFrame(),this.core.room.audioManager.disableDecodeNTPFromAudioFrame(),delete this.core,this.player.off(this.player.EVENT.MUSIC_LOADED,this.onMusicLoaded,this),this.player.off(this.player.EVENT.PLAYING,this.onPlaying,this),this.player.off(this.player.EVENT.STOPPED,this.onStopped,this),delete this.player}};N(yA,"EVENT",dC),N(yA,"decodeIdWithPrefix",Gg),N(yA,"Name","Chorus");var vg=yA;var xi=vg;export{vg as Chorus,xi as default};
25
+ `;return this.lyricStartTimeList=C.split(B).map(o=>{let D=o.match(/\[(\d+),/);if(D)return+D[1]}).filter(o=>typeof o=="number"),this.lyric=C,C}async getPitch(g){let{pitch:C}=await Z.getPitchData({song_id:g});return this.log.info("getPitchData success"),this.pitchList=C,C}async play(){if(!this.originalPlayer||!this.accompanyPlayer||this.isPlaying)return;this.setVolume(this.volume);let g=this.originalPlayer.play(),C=this.accompanyPlayer.play();this.originalPlayer.setMuted(!this.useOriginalSong),this.accompanyPlayer.setMuted(this.useOriginalSong),this.originalPlayer.on("time-updated",B=>this.onTimeUpdated(this.originalPlayer,B)),this.originalPlayer.on("player-state-changed",B=>this.onPlayerStateChange(this.originalPlayer,B.state)),this.accompanyPlayer.on("time-updated",B=>this.onTimeUpdated(this.accompanyPlayer,B)),this.accompanyPlayer.on("player-state-changed",B=>this.onPlayerStateChange(this.accompanyPlayer,B.state));try{await(this.useOriginalSong?g:C)}catch(B){if(B.message.includes("NotAllowedError"))this.handleAutoPlayFailed();else throw B}}async pause(){var B,o;let g=(B=this.originalPlayer)==null?void 0:B.pause(),C=(o=this.accompanyPlayer)==null?void 0:o.pause();await Promise.all([g,C])}async resume(){var B,o;let g=(B=this.originalPlayer)==null?void 0:B.resume(),C=(o=this.accompanyPlayer)==null?void 0:o.resume();await Promise.all([g,C])}stop(){var g,C,B,o;(g=this.originalPlayer)==null||g.stop(),(C=this.accompanyPlayer)==null||C.stop(),(B=this.originalPlayer)==null||B.removeAllListeners(),(o=this.accompanyPlayer)==null||o.removeAllListeners(),delete this.bgmAudioTrack,this.audioSourceNodes.forEach(D=>D.disconnect())}switchMusicTrack(g){var C,B;this.useOriginalSong=g,(C=this.originalPlayer)==null||C.setMuted(!g),(B=this.accompanyPlayer)==null||B.setMuted(g)}onTimeUpdated(g,C){if(g===this.player&&(this.fixBGMProgress(),this.emit("progress_updated",{currentTime:C,duration:this.player.duration}),this.lyricStartTimeList)){let B=Ii(C,this.lyricStartTimeList);B!==this.currentTimeIndex&&(this.currentTimeIndex=B,this.emit("current_time_index_updated",{currentTime:C,currentTimeIndex:B}))}}fixBGMProgress(){!this.originalPlayer||!this.accompanyPlayer||!this.player||this.originalPlayer.currentTime-this.accompanyPlayer.currentTime>80&&(this.originalPlayer.currentTime=this.player.currentTime,this.accompanyPlayer.currentTime=this.player.currentTime)}onPlayerStateChange(g,C){g===this.player&&(C==="PLAYING"?this.emit(this.EVENT.PLAYING):C==="PAUSED"?this.emit(this.EVENT.PAUSED):C==="STOPPED"&&(this.stop(),this.emit(this.EVENT.STOPPED)))}handleAutoPlayFailed(){if(this.core.room.enableAutoPlayDialog)new this.core.AutoPlayDialog;else{let g=()=>{var C;(C=this.player)==null||C.resume().then(()=>{document.removeEventListener("click",g,!0)})};document.addEventListener("click",g,!0)}}initBGMAudioTrack(){var D,i;if(this.bgmAudioTrack)return this.bgmAudioTrack;if(!((D=this.originalPlayer)!=null&&D.element)||!((i=this.accompanyPlayer)!=null&&i.element))return;let{audioContext:g}=this.core,C=g.createMediaElementSource(this.originalPlayer.element),B=g.createMediaElementSource(this.accompanyPlayer.element),o=g.createMediaStreamDestination();return C.connect(o),B.connect(o),C.connect(g.destination),B.connect(g.destination),this.bgmAudioTrack=o.stream.getAudioTracks()[0],this.audioSourceNodes=[C,B],this.bgmAudioTrack}setVolume(g){var C,B;g<0||g>100||(this.volume=g,(C=this.originalPlayer)==null||C.setVolume(this.volume/100),(B=this.accompanyPlayer)==null||B.setVolume(this.volume/100))}clearMusic(){delete this.musicId,delete this.downloadedMusicId,delete this.lyric,delete this.pitchList,this.originalURL&&URL.revokeObjectURL(this.originalURL),this.accompanyURL&&URL.revokeObjectURL(this.accompanyURL),delete this.originalURL,delete this.accompanyURL,delete this.originalPlayer,delete this.accompanyPlayer}};var KC=$g(Xg(),1);var UC=function(){let I=0;class A{constructor(Q){Q&&(this.userId=Q),this.name="aa-wk"}getPrevFix(Q){return`[${this.timestamp}] <${Q.toUpperCase()}> [${this.name}${this.userId?`|${this.userId}`:""}]`}get timestamp(){let Q=new Date;Q.setTime(Date.now()+I);let s=String(Q.getMilliseconds());return"padStart"in String.prototype&&(s=s.toString().padStart(3,"0")),`${Q.toTimeString().replace(/.*(\d{2}:\d{2}:\d{2}).*/,"$1")}:${s}`}log(Q,s,...t){let e=this.getPrevFix(Q);console[Q](e,...t),postMessage({log:{log:[e,...t],level:s,userId:this.userId}})}debug(...Q){this.log("debug",1,...Q)}info(...Q){this.log("info",2,...Q)}warn(...Q){this.log("warn",3,...Q)}error(...Q){this.log("error",4,...Q)}}let g=80,C=300;class B{constructor(){this.remoteAudioMap=new Map,this.log=new A,this.log.info("DEFAULT_BUFFER_LEN",C,"MULTI_AUDIO_ALIGN_TARGET_DELAY",g),this.doMultiRemoteAudioAlignment(),setInterval(()=>{this.doMultiRemoteAudioAlignment();let Q={};this.remoteAudioMap.forEach(({buffer:s},t)=>{Q[t]=(s==null?void 0:s.length)||0}),postMessage({remoteUserBufferLenMap:Q})},2e3)}async removeRemoteAudio(Q,s=!1){if(!this.remoteAudioMap.has(Q))return;this.log.warn("removeRemoteAudio",Q,"hasLeavingTag",s);let t=this.remoteAudioMap.get(Q)||{},{buffer:e,writer:r,audioDecoder:c}=t;e==null||e.destroy(),c==null||c.close(),r==null||r.abort(),this.remoteAudioMap.delete(Q),postMessage({removedUserId:Q})}onAudioFrame(Q,s,t=!1){let e=this.remoteAudioMap.get(Q)||{};e.audioDecoder||(e.audioDecoder=new AudioDecoder({error:r=>this.log.error(`[${Q}] audio decoder error`,r),output:r=>{var c;(c=e.writer)==null||c.write(r).catch(F=>{this.log.warn(`[${Q}] writer write error`,F)})}}),e.audioDecoder.configure({codec:"opus",sampleRate:48e3,numberOfChannels:2})),e.buffer||(e.buffer=new D(Q),e.buffer.setTargetDelay(C),e.buffer.onAudioFrame=r=>{var c;((c=e.audioDecoder)==null?void 0:c.state)==="configured"&&e.audioDecoder.decode(r.frame)},e.buffer.onNotData2s=()=>{var r;(r=this.remoteAudioMap.get(Q))!=null&&r.hasLeavingTag&&(this.log.warn("no input data over 2s and hasLeavingTag, removeRemoteAudio",Q),this.removeRemoteAudio(Q,!0))}),e.buffer.input(new o(new EncodedAudioChunk({data:s.frame.data,timestamp:s.frame.timestamp,type:"key"}),s.ntp)),e.hasLeavingTag=t,t&&(e.buffer.minDelay=0),this.remoteAudioMap.set(Q,e)}onWritableStream(Q,s){this.log.warn("onWritableStream",Q);let t=this.remoteAudioMap.get(Q)||{};t.writer=s.getWriter(),this.remoteAudioMap.set(Q,t)}doMultiRemoteAudioAlignment(){if(this.remoteAudioMap.size<2||this.checkIsMultiRemoteAudioAligned())return;let Q=0,s=0,t={};this.remoteAudioMap.forEach(({buffer:e},r)=>{!e||e.inputNTP<0||(t[r]=e.inputNTP,(Q===0||e.inputNTP<Q)&&(Q=e.inputNTP),e.inputNTP>s&&(s=e.inputNTP))}),!(s-Q<g||s-Q>6e4)&&(this.log.info(`maxNTPTime ${s} minNTPTime ${Q}`,t),this.remoteAudioMap.forEach(({buffer:e},r)=>{if(!e)return;let c=s-e.inputNTP;this.log.info(`[${r}] ntpDelayToMaxNTPTime ${c}`),e.setTargetDelay(C+(s-Q)-c)}),this.checkIsMultiRemoteAudioAligned())}checkIsMultiRemoteAudioAligned(){let Q=0,s=0,t=[];this.remoteAudioMap.forEach(({buffer:r},c)=>{if(!r||r.outputNTP<0)return;let F=r.outputNTP;t.push({userId:c,ntp:F,bufferLen:r.length}),F>Q&&(Q=F),(s===0||F<s)&&(s=F)});let e=Q-s<g;return e||this.log.warn("isAligned",e,"ntp(max - min)",Q-s,t),e}}class o{constructor(Q,s){this.frame=Q,this.ntpTime=s}}class D{get inputNTP(){var Q;return((Q=this.data[this.data.length-1])==null?void 0:Q.ntpTime)||-1}get outputNTP(){var Q;return((Q=this.data[0])==null?void 0:Q.ntpTime)||-1}get length(){return this.data.length===0?0:this.data.length===1?20:(this.data[this.data.length-1].frame.timestamp-this.data[0].frame.timestamp)/48e3*1e3}get isOrdered(){return this.data.every((Q,s)=>s===0?!0:Q.frame.timestamp>this.data[s-1].frame.timestamp)}constructor(Q){this.minDelay=0,this.maxDelay=4e3,this.targetDelay=0,this.data=[],this.workerIntervalId=-1,this.workerIntervalTime=0,this.lastInputTime=0,this.lastOutputTime=0,this.userId=Q,this.log=new A("buf|"+Q)}startOutput(){this.workerIntervalId=setInterval(()=>{this.output(),this.workerIntervalTime&&Date.now()-this.workerIntervalTime>40&&this.log.warn(`worker interval delay ${Date.now()-this.workerIntervalTime}`),this.workerIntervalTime=Date.now()},20)}stopOutput(){clearInterval(this.workerIntervalId),this.workerIntervalId=-1}input(Q){this.lastInputTime=Date.now();let s=this.data.length-1,t=!1;for(;s>=0;s--)if(Q.frame.timestamp<this.data[s].frame.timestamp&&(s===0||Q.frame.timestamp>this.data[s-1].frame.timestamp)){t=!0;break}t?(this.data.splice(s,0,Q),this.isOrdered||this.log.warn("not ordered",this.data.map(e=>e.frame.timestamp/48))):this.data.push(Q),this.length>=this.targetDelay&&this.workerIntervalId===-1&&this.startOutput()}output(Q=!1,s=!1){var e;if(Date.now()-this.lastInputTime>2e3&&((e=this.onNotData2s)==null||e.call(this)),this.length<=this.minDelay)return;if(Q&&this.length<=this.targetDelay){this.log.warn(`output to targetDelay ${this.length} -> ${this.targetDelay} done`);return}let t=this.data.shift();t&&this.onAudioFrame&&(this.lastOutputTime&&Date.now()-this.lastOutputTime>60&&this.log.warn("output delay",Date.now()-this.lastOutputTime,"buf len",this.length),this.lastOutputTime=Date.now(),this.onAudioFrame(t)),this.length===0&&this.onBufferEmpty&&(this.log.warn("onBufferEmpty"),this.onBufferEmpty()),this.length>=this.targetDelay+(Q?0:g)&&(Q||this.log.warn(this.userId,`output to targetDelay ${this.length} -> ${this.targetDelay}`),this.output(!0,!0))}waitBufferEmpty(){return new Promise(Q=>{this.onBufferEmpty=Q})}async setTargetDelay(Q){if(!(Q===this.targetDelay||Q<0||Math.abs(Q-this.targetDelay)<=20)){if(Q>this.maxDelay){this.log.warn(`cannot setTargetDelay ${Q} over ${this.maxDelay}`);return}this.minDelay=Math.max(0,Q-200),Q>this.targetDelay&&this.stopOutput(),this.targetDelay=Q,this.log.info(this.userId,"setTargetDelay",Q,"bufLen",this.length),Q===0&&await this.waitBufferEmpty()}}destroy(){this.log.warn("destroy"),this.data=[],this.stopOutput(),delete this.onAudioFrame}}let i=new B;self.onmessage=function(E){E.data.action==="remove"?i.removeRemoteAudio(E.data.remoteUserId,E.data.hasLeavingTag):(E.data.frameWithNtp&&i.onAudioFrame(E.data.remoteUserId,E.data.frameWithNtp,E.data.hasLeavingTag),E.data.writableStream&&(i.onWritableStream(E.data.remoteUserId,E.data.writableStream),console.warn("onmessage",E))),E.data.ntpOffset&&(I=E.data.ntpOffset)}}.toString(),JC=URL.createObjectURL(new Blob([UC.slice(UC.indexOf("{")+1,-1)],{type:"text/javascript"}));var Ng=class{constructor(A){this.core=A;N(this,"log");N(this,"intervalId",-1);N(this,"audioAlignmentWorker");N(this,"remoteUserBufferLenMap",{});this.log=A.log.createChild({id:"aal-m"}),A.room.on(A.Enum.RoomEvent.REMOTE_PUBLISHED,this.onRemotePublished,this)}get remotePublishedUserMap(){return this.core.room.remotePublishedUserMap}onRemotePublished({userId:A,remoteAudioTrack:g}){g.on(this.core.Enum.RemoteTrackEvent.AUDIO_FRAME_WITH_NTP,({ntp:C,frame:B,hasLeavingTag:o})=>{if(!g.user.muteState.audioAvailable||!this.audioAlignmentWorker)return;let D={action:"add",remoteUserId:A,hasLeavingTag:o,frameWithNtp:{ntp:C,frame:{data:B.data,timestamp:B.timestamp}}},i=[B.data];g.trackGenerator||(g.initTrackGenerator(),D.writableStream=g.trackGenerator.writable,i.push(D.writableStream)),this.audioAlignmentWorker.postMessage(D,i)}),g.on(this.core.Enum.RemoteTrackEvent.FLAG_CHANGED,()=>{var C;g.user.muteState.audioAvailable||(g.deleteTrackGenerator(),(C=this.audioAlignmentWorker)==null||C.postMessage({action:"remove",remoteUserId:A}))})}start(){let A=this.core.rtcDectection.isWebCodecsSupported(),g=this.core.rtcDectection.isMediaStreamTrackGeneratorSupported();if(!A||!g){this.log.info(`not support webcodec: ${A} mediaStreamTrackGenerator: ${g}`);return}this.audioAlignmentWorker||(this.log.info("create worker"),this.audioAlignmentWorker=new Worker(JC),this.audioAlignmentWorker.onmessage=({data:C})=>{var B;C.remoteUserBufferLenMap?this.remoteUserBufferLenMap=C.remoteUserBufferLenMap:C.log?this.core.loggerManager.addLogToQueue(C.log.level,C.log.log,!1,this.core.room.userId,this.core.room.sdkAppId):C.removedUserId&&((B=this.remotePublishedUserMap.get(C.removedUserId))==null||B.remoteAudioTrack.deleteTrackGenerator())},this.audioAlignmentWorker.postMessage({ntpOffset:this.core.getNetworkTimeOffset()}))}stop(){this.audioAlignmentWorker&&(this.log.warn("stop"),this.audioAlignmentWorker.terminate(),delete this.audioAlignmentWorker,this.remotePublishedUserMap.forEach(A=>{A.remoteAudioTrack.deleteTrackGenerator()}))}};var Ci="publish-mix-stream-to-room",dC=(D=>(D.STARTED="started",D.STOPPED="stopped",D.REQUIRE_LOAD_MUSIC="require-load-music",D.SCORE_UPDATED="score-updated",D.PITCH_UPDATED="pitch-updated",D.PROGRESS_UPDATED="progress_updated",D))(dC||{}),kC=0,yA=class yA extends KC.EventEmitter{constructor(g){super();this.core=g;N(this,"disableRandomCall",!0);N(this,"trtcBGM");N(this,"log");N(this,"player");N(this,"leadSingerPlayerState",1);N(this,"role");N(this,"bgmUserId","");N(this,"bgmStartNTP",0);N(this,"sendSEIIntervalId",-1);N(this,"updateProgressAndPitchIntervalId",-1);N(this,"clearBlackVideoTrack");N(this,"isInitialized",!1);N(this,"BGM_AND_PITCH_UPDATE_INTERVAL",100);N(this,"isOnStartedEmitted",!1);N(this,"isBackSingerAutoStarted",!1);N(this,"audioAlignmentManager");this.log=g.log.createChild({id:yA.Name+ ++kC}),this.player=new yg(this.core,kC),this.player.on(this.player.EVENT.MUSIC_LOADED,this.onMusicLoaded,this),this.player.on(this.player.EVENT.PLAYING,this.onPlaying,this),this.player.on(this.player.EVENT.STOPPED,this.onStopped,this),this.core.room.audioManager.enableEncodeNTPToAudioFrame(),this.audioAlignmentManager=new Ng(this.core)}get isLeadSinger(){return this.role==="LeadSinger"}get isBackSinger(){return this.role==="BackSinger"}get isAudience(){return this.role===this.core.Enum.UserRole.AUDIENCE}get isStarted(){return this.isLeadSinger?!this.player.isStopped:this.leadSingerPlayerState!==1}async onMusicLoaded(){if(this.isLeadSinger&&this.startSendSEI(),this.isLeadSinger||this.isBackSinger)try{if(await this.player.yinsudaClient.initKtvScoreClient({song_id:this.player.musicId}),this.core.trtc.on(this.core.TRTC.EVENT.TRACK,g=>{if(g.track.kind==="audio"){let C=g.track.getSettings();this.player.yinsudaClient.setAudioParams({sampleRate:C.sampleRate||48e3,channels:C.channelCount||1})}}),this.core.trtc._localAudioTrack){this.log.warn("restart local audio for pitch issue");let g=this.core.trtc._localAudioConfig||void 0;await this.core.trtc.stopLocalAudio(),await this.core.trtc.startLocalAudio(g)}this.core.trtc.on(this.core.TRTC.EVENT.AUDIO_FRAME,this.onAudioFrame,this),this.player.on(this.player.EVENT.CURRENT_TIME_INDEX_UPDATED,({currentTime:g})=>{Promise.all([this.player.yinsudaClient.getScore({pts:g}).then(C=>Math.max(0,C.data.score)),this.player.yinsudaClient.getAverageScore({pts:g}).then(C=>C.data.averageScore),this.player.yinsudaClient.getTotalScore({pts:g}).then(C=>({totalScore:C.data.totalScore,maxScore:C.data.wholeScore}))]).then(([C,B,{totalScore:o,maxScore:D}])=>{this.emit("score-updated",{score:C,averageScore:B,totalScore:o,maxScore:D})})})}catch(g){this.log.error(g)}}onAudioFrame(g){if(this.player.currentTime===0)return;let C={buffer:Int16Array.from(g.data,B=>B*32767),pts:this.player.currentTime};this.player.yinsudaClient.processScore(C)}onPlaying(){var g;this.isLeadSinger&&!this.bgmStartNTP&&(this.bgmStartNTP=this.core.trtc.getNetworkTime(),(g=this.trtcBGM)==null||g.startLocalAudio({option:{audioTrack:this.player.initBGMAudioTrack(),captureVolume:this.player.volume,echoCancellation:!1,noiseSuppression:!1,autoGainControl:!1,profile:{bitrate:128,sampleRate:48e3,channelCount:2}}}))}async initialize(g){this.isInitialized||(this.isInitialized=!0,this.log.info(`initialize ${JSON.stringify(g)}`),g.role&&(this.role=g.role),g.updateInterval&&(this.BGM_AND_PITCH_UPDATE_INTERVAL=g.updateInterval),await this.player.initialize(g.yinsuda),g.bgm.userId&&(this.bgmUserId=g.bgm.userId),this.isLeadSinger&&g.bgm.sdkAppId&&this.createTRTCBGM(g.bgm),this.role&&(this.core.trtc.on(this.core.TRTC.EVENT.REMOTE_AUDIO_AVAILABLE,C=>{(this.isLeadSinger||this.isBackSinger)&&C.userId!==this.bgmUserId&&this.core.trtc.muteRemoteAudio(C.userId,!1)}),this.core.trtc.on(this.core.TRTC.EVENT.REMOTE_VIDEO_AVAILABLE,C=>{C.userId===this.bgmUserId&&!this.isLeadSinger&&this.core.trtc.startRemoteVideo({userId:C.userId,streamType:C.streamType})}),this.core.trtc.on(this.core.TRTC.EVENT.SEI_MESSAGE,async C=>{if(this.isLeadSinger)return;let B=JSON.parse(new TextDecoder().decode(C.data));B.params.music_id=Gg(B.params.music_id),this.player.musicId!==B.params.music_id&&!this.isLeadSinger&&(this.player.musicId=B.params.music_id,this.emit("require-load-music",B.params.music_id)),this.onLeadSingerPlayerState(B.params.play_state);let o=this.core.trtc.getNetworkTime()-+B.params.bgm_progress_update_ntp,D=B.params.progress===0?0:B.params.progress+o;if(this.fixBGMProgress(D),this.isAudience){let i=this.audioAlignmentManager.remoteUserBufferLenMap[C.userId]||0;this.emit("progress_updated",{currentTime:D-i<0?0:D-i,duration:B.params.duration})}})),this.core.room.audioManager.enableDecodeNTPFromAudioFrame())}async createTRTCBGM(g){this.isLeadSinger&&(this.trtcBGM=this.core.TRTC.create({enableSEI:!0,businessInfo:JSON.stringify({Str_uc_params:{is_send_audio_filterable:!1}})}),this.trtcBGM.room.enableChorus=!0,await this.trtcBGM.enterRoom({sdkAppId:g.sdkAppId,userId:g.userId,userSig:g.userSig,roomId:g.roomId,strRoomId:g.strRoomId,role:this.core.TRTC.TYPE.ROLE_ANCHOR,autoReceiveAudio:!1}),this.trtcBGM.room.audioManager.enableEncodeNTPToAudioFrame())}async destroyTRTCBGM(){this.trtcBGM&&(this.stopSendSEI(),this.trtcBGM.room.audioManager.disableEncodeNTPToAudioFrame(),await this.trtcBGM.exitRoom(),this.trtcBGM.destroy(),delete this.trtcBGM)}fixBGMProgress(g){if(!this.isBackSinger||!this.player.isPlaying)return;Math.abs(g-this.player.currentTime)>80&&(this.log.warn(`fix bgm progress: ${g-this.player.currentTime}`),this.player.currentTime=g)}startCDN(){if(!this.isLeadSinger)return;let g={roomId:this.core.room.useStringRoomId?void 0:+this.core.room.roomId,strRoomId:this.core.room.useStringRoomId?this.core.room.roomId:void 0};this.core.trtc.startPlugin("CDNStreaming",{target:{publishMode:Ci,robotUser:gA({userId:`${this.core.room.roomId}_robot`},g)},encoding:{audioBitrate:128,audioChannels:2},mix:{videoLayoutList:[{fixedVideoUser:gA({userId:`${this.core.room.roomId}_bgm`},g),width:64,height:64,locationX:0,locationY:0,fixedVideoStreamType:"main",zOrder:1}]}})}startSendSEI(){!this.trtcBGM||this.sendSEIIntervalId!==-1||(this.trtcBGM.startLocalVideo({option:{videoTrack:AI(this.core.Timer,g=>{this.clearBlackVideoTrack=g}),profile:{bitrate:50}}}),this.trtcBGM.on(this.core.TRTC.EVENT.PUBLISH_STATE_CHANGED,g=>{g.state==="started"&&this.sendSEIIntervalId<0&&(this.log.debug("start send sei"),this.sendSEIIntervalId=this.core.Timer.run("intervalInWorker",()=>{if(!this.core.room.isJoined)return this.stopSendSEI();this.player.musicId&&this.doSendSEI()},{fps:5}))}))}doSendSEI(){var C;let g={api:"info",params:{music_id:FI(this.player.musicId)?this.player.musicId:RI(this.player.musicId),duration:this.player.duration,progress:this.player.currentTime,bgm_progress_update_ntp:String((this.trtcBGM||this.core.trtc).getNetworkTime()),bgm_start_ntp:String(this.bgmStartNTP),play_state:this.player.isPlaying?2:this.player.isStopped?1:3,use_local_mix:!0}};(C=this.trtcBGM)==null||C.sendSEIMessage(new TextEncoder().encode(JSON.stringify(g)).buffer)}stopSendSEI(){var g;(g=this.clearBlackVideoTrack)==null||g.call(this),this.core.Timer.clearTask(this.sendSEIIntervalId),this.sendSEIIntervalId=-1}async onStarted(){this.isOnStartedEmitted||(this.log.info("onStarted"),this.emit("started"),this.isOnStartedEmitted=!0,this.isAudience?(this.audioAlignmentManager.start(),this.log.info("auto start chorus for audience"),this.core.trtc.startPlugin("Chorus",{})):(this.updateProgressAndPitchIntervalId=this.core.Timer.run("interval",()=>{this.player.yinsudaClient.getRealTimePitch().then(g=>{this.emit("pitch-updated",{pitch:g.data.pitch})}),this.emit("progress_updated",{currentTime:this.player.currentTime,duration:this.player.duration})},{delay:this.BGM_AND_PITCH_UPDATE_INTERVAL}),this.autoStartBackSinger()))}async autoStartBackSinger(){!this.isBackSinger||!this.player.downloadMusicPromise.promise||(this.log.info("wait music download",this.player.downloadMusicPromise.promise),await this.player.downloadMusicPromise.promise,this.isBackSingerAutoStarted||(this.log.info("auto start chorus for backsinger"),this.core.trtc.startPlugin("Chorus",{}),this.isBackSingerAutoStarted=!0))}onStopped(){this.log.info("onStopped"),this.bgmStartNTP=0,this.core.clearStarted(this,this.getGroup()),this.player.stop(),this.reset(),this.emit("stopped")}onLeadSingerPlayerState(g){if(this.leadSingerPlayerState!==g)switch(this.leadSingerPlayerState=g,g){case 2:this.player.isPaused&&this.player.resume(),this.onStarted();break;case 3:this.player.pause();break;case 1:this.onStopped();break;default:break}}getName(){return yA.Name}getAlias(){return"ktv"}getGroup(){return"ktv"}getValidateRule(g){switch(g){case"start":return GI;case"update":return nI(this.core);case"stop":return MI}}async start(g){this.isAudience||(typeof g.useOriginalSong=="boolean"&&this.player.switchMusicTrack(g.useOriginalSong),typeof g.isSelected=="boolean"&&this.switchSelected(g.isSelected),this.isLeadSinger&&this.startSendSEI(),g.bgmVolume&&this.player.setVolume(g.bgmVolume),await this.player.play(),this.isLeadSinger&&this.onStarted())}async update(g){var C;typeof g.useOriginalSong=="boolean"&&this.player.switchMusicTrack(g.useOriginalSong),typeof g.isSelected=="boolean"&&this.switchSelected(g.isSelected),g.bgmAction&&await this.player[g.bgmAction](),g.role&&g.role!==this.role&&(await this.switchRole(g.role,g.bgm),this.isLeadSinger&&this.startSendSEI()),typeof g.bgmVolume=="number"&&((C=this.trtcBGM)==null||C.updateLocalAudio({option:{captureVolume:g.bgmVolume}}),this.player.setVolume(g.bgmVolume))}async stop(){this.player.isStopped||(this.player.stop(),this.reset(),this.emit("stopped"))}async switchRole(g,C){if(g===this.role)return;let B=this.role===this.core.Enum.UserRole.AUDIENCE,o=this.role==="LeadSinger",D=this.role==="BackSinger",i=g==="LeadSinger",E=g==="BackSinger",Q=g===this.core.Enum.UserRole.AUDIENCE;this.onStopped(),this.role=g,await this.core.trtc.switchRole(Q?this.core.TRTC.TYPE.ROLE_AUDIENCE:this.core.TRTC.TYPE.ROLE_ANCHOR),B&&i?(this.createTRTCBGM(C),this.core.room.autoReceiveAudio=!1,this.player.clearMusic()):o&&Q?(this.doSendSEI(),setTimeout(()=>this.destroyTRTCBGM(),200),this.core.room.autoReceiveAudio=!0,this.player.clearMusic()):B&&E&&!this.player.isMusicDownloaded&&this.player.musicId&&await this.player.loadMusic({musicId:this.player.musicId,isNeedDownloadMusic:!0,isNeedLyric:!this.player.isLyricDownloaded,isNeedPitch:!this.player.isPitchDownloaded}),this.core.room.remotePublishedUserMap.forEach(s=>{s.remoteAudioTrack.player.setTrack(s.remoteAudioTrack.outMediaTrack)}),this.core.room.remotePublishedUserMap.has(this.bgmUserId)&&(i||this.core.trtc.muteRemoteAudio(this.bgmUserId,this.isBackSinger),await this.onStarted(),E&&this.autoStartBackSinger())}async switchSelected(g){this.isAudience||await this.core.room.signalChannel.sendWaitForResponse({command:"abstract_cmd",data:{cmd:"UpdateChannelMediaOptions",data:{is_send_audio_filterable:!g}},responseCommand:"custom-cmd-res"})}reset(){this.bgmStartNTP=0,this.isOnStartedEmitted=!1,this.isBackSinger&&(this.isBackSingerAutoStarted=!1),this.trtcBGM&&this.trtcBGM.stopLocalAudio(),this.isAudience?this.audioAlignmentManager.stop():(this.player.yinsudaClient.reset(),this.core.Timer.clearTask(this.updateProgressAndPitchIntervalId),this.updateProgressAndPitchIntervalId=-1)}destroy(){this.isInitialized=!1,this.stop(),this.destroyTRTCBGM(),this.core.room.audioManager.disableEncodeNTPToAudioFrame(),this.core.room.audioManager.disableDecodeNTPFromAudioFrame(),delete this.core,this.player.off(this.player.EVENT.MUSIC_LOADED,this.onMusicLoaded,this),this.player.off(this.player.EVENT.PLAYING,this.onPlaying,this),this.player.off(this.player.EVENT.STOPPED,this.onStopped,this),delete this.player}};N(yA,"EVENT",dC),N(yA,"decodeIdWithPrefix",Gg),N(yA,"Name","Chorus");var vg=yA;var xi=vg;export{vg as Chorus,xi as default};
@@ -22,4 +22,4 @@ return ret;
22
22
  `},"%p":function(w){return w.tm_hour>=0&&w.tm_hour<12?"AM":"PM"},"%S":function(w){return e(w.tm_sec,2)},"%t":function(){return" "},"%u":function(w){return w.tm_wday||7},"%U":function(w){var y=w.tm_yday+7-w.tm_wday;return e(Math.floor(y/7),2)},"%V":function(w){var y=Math.floor((w.tm_yday+7-(w.tm_wday+6)%7)/7);if((w.tm_wday+371-w.tm_yday-2)%7<=2&&y++,y){if(y==53){var p=(w.tm_wday+371-w.tm_yday)%7;p!=4&&(p!=3||!XA(w.tm_year))&&(y=1)}}else{y=52;var J=(w.tm_wday+7-w.tm_yday-1)%7;(J==4||J==5&&XA(w.tm_year%400-1))&&y++}return e(y,2)},"%w":function(w){return w.tm_wday},"%W":function(w){var y=w.tm_yday+7-(w.tm_wday+6)%7;return e(Math.floor(y/7),2)},"%y":function(w){return(w.tm_year+1900).toString().substring(2)},"%Y":function(w){return w.tm_year+1900},"%z":function(w){var y=w.tm_gmtoff,p=y>=0;return y=Math.abs(y)/60,y=y/60*100+y%60,(p?"+":"-")+("0000"+y).slice(-4)},"%Z":function(w){return w.tm_zone},"%%":function(){return"%"}};D=D.replace(/%%/g,"\0\0");for(var E in M)D.includes(E)&&(D=D.replace(new RegExp(E,"g"),M[E](o)));D=D.replace(/\0\0/g,"%");var U=aE(D);return U.length>A?0:(eE(U,I),U.length-1)}function rE(I,A,g,C,B){return wE(I,A,g,C)}function yE(I){Bg=I,NB()||(a.onExit&&a.onExit(I),mg=!0),ug(I,new zI(I))}function NE(I,A){Bg=I,yE(I)}function cE(I){if(I instanceof zI||I=="unwind")return Bg;ug(1,I)}function hE(I){var A=Vg(I)+1,g=jg(A);return tC(I,g,A),g}nA=a.BindingError=ig(Error,"BindingError");mB();_I=a.PureVirtualError=ig(Error,"PureVirtualError");pB();xB();BC=a.InternalError=ig(Error,"InternalError");BQ();aQ();iC=a.UnboundTypeError=ig(Error,"UnboundTypeError");var RE={d:dB,p:ZB,r:XB,y:vB,H:zB,h:yQ,j:NQ,m:cQ,a:hQ,J:RQ,G:FQ,k:nQ,b:MQ,v:LQ,K:YQ,i:JQ,c:kQ,u:KQ,o:pQ,s:qQ,l:TQ,I:bQ,f:OQ,e:DC,g:jQ,q:ZQ,w:XQ,n:vQ,D:zQ,E:_Q,C:AE,A:CE,B:BE,F:QE,x:EE,t:DE,z:rE};kB();var rC=a._main=function(){return(rC=a._main=a.asm.N).apply(null,arguments)},Pg=function(){return(Pg=a.asm.O).apply(null,arguments)},z=function(){return(z=a.asm.Q).apply(null,arguments)},yC=function(){return(yC=a.asm.R).apply(null,arguments)};a.__embind_initialize_bindings=function(){return(a.__embind_initialize_bindings=a.asm.S).apply(null,arguments)};var jg=function(){return(jg=a.asm.T).apply(null,arguments)},NC=function(){return(NC=a.asm.U).apply(null,arguments)};a.dynCall_jiji=function(){return(a.dynCall_jiji=a.asm.V).apply(null,arguments)};a.dynCall_iiiiij=function(){return(a.dynCall_iiiiij=a.asm.W).apply(null,arguments)};a.dynCall_iiiiijj=function(){return(a.dynCall_iiiiijj=a.asm.X).apply(null,arguments)};a.dynCall_iiiiiijj=function(){return(a.dynCall_iiiiiijj=a.asm.Y).apply(null,arguments)};var Ig;dA=function I(){Ig||cC(),Ig||(dA=I)};function FE(I=[]){var A=rC;I.unshift(fg);var g=I.length,C=jg((g+1)*4),B=C>>2;I.forEach(D=>{L[B++]=hE(D)}),L[B]=0;try{var o=A(g,C);return NE(o,!0),o}catch(D){return cE(D)}}function cC(I=qI){if(sA>0||(cB(),sA>0))return;function A(){Ig||(Ig=!0,a.calledRun=!0,!mg&&(hB(),RB(),a.onRuntimeInitialized&&a.onRuntimeInitialized(),hC&&FE(I),FB()))}a.setStatus?(a.setStatus("Running..."),setTimeout(function(){setTimeout(function(){a.setStatus("")},1),A()},1)):A()}if(a.preInit)for(typeof a.preInit=="function"&&(a.preInit=[a.preInit]);a.preInit.length>0;)a.preInit.pop()();var hC=!0;a.noInitialRun&&(hC=!1);cC();var lI=["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z",1,2,3,4,5,6,7,8,9,0];function GE(I){let A="";for(let g=0;g<I;g++){let C=Math.floor(Math.random()*lI.length);A+=lI[C]}return A}var fA=null,Hg={},nE=async(I,A,g)=>(I.postMessage({action:"translate",url:g,data:A,seq:1},[A]),await new Promise(C=>{Hg[1]=B=>{C(B)}})),ME=I=>{fA=new Worker(I),fA.postMessage({action:"load"}),fA.onmessage=A=>{let{seq:g,cmd:C}=(A==null?void 0:A.data)||{};if(C==="convert"&&!isNaN(g)){let B=Hg[g];B&&(B(A.data),delete Hg[g])}}},Lg=async I=>{if(fA){let A=fA;return fetch(I).then(g=>g.arrayBuffer()).then(async g=>nE(A,g,"id"))}else return Promise.resolve({error:1,msg:"no decode worker"})},kA="9gp0ag5qeuhy1ig8gmqxu2hwxex9j1iz",f={ERR_PUB_UNKOWN:2e5,ERR_PUB_PARAMS:200001,ERR_PUB_BUSY:200002,ERR_PUB_AUTH:200003,ERR_PUB_UNREG:200004,ERR_PUB_UNIMPL:200005,ERR_PUB_SYSTEM:200006,ERR_PUB_RIGHT:200007,ERR_NO_DATA:200008,ERR_PUB_FREQUENCY:200009,ERR_PUB_QPSLIMITED:200010,ERR_PUB_COPYRIGHT:200011,ERR_AUTO:200300,ERR_NOT_INIT_CODEC:3e5},SE="anonymous",LE="password";function BA(I,A){var g=(I&65535)+(A&65535),C=(I>>16)+(A>>16)+(g>>16);return C<<16|g&65535}function YE(I,A){return I<<A|I>>>32-A}function eg(I,A,g,C,B,o){return BA(YE(BA(BA(A,I),BA(C,o)),B),g)}function k(I,A,g,C,B,o,D){return eg(A&g|~A&C,I,A,B,o,D)}function K(I,A,g,C,B,o,D){return eg(A&C|g&~C,I,A,B,o,D)}function d(I,A,g,C,B,o,D){return eg(A^g^C,I,A,B,o,D)}function H(I,A,g,C,B,o,D){return eg(g^(A|~C),I,A,B,o,D)}function UE(I,A){I[A>>5]|=128<<A%32,I[(A+64>>>9<<4)+14]=A;var g,C,B,o,D,i=1732584193,E=-271733879,Q=-1732584194,s=271733878;for(g=0;g<I.length;g+=16)C=i,B=E,o=Q,D=s,i=k(i,E,Q,s,I[g],7,-680876936),s=k(s,i,E,Q,I[g+1],12,-389564586),Q=k(Q,s,i,E,I[g+2],17,606105819),E=k(E,Q,s,i,I[g+3],22,-1044525330),i=k(i,E,Q,s,I[g+4],7,-176418897),s=k(s,i,E,Q,I[g+5],12,1200080426),Q=k(Q,s,i,E,I[g+6],17,-1473231341),E=k(E,Q,s,i,I[g+7],22,-45705983),i=k(i,E,Q,s,I[g+8],7,1770035416),s=k(s,i,E,Q,I[g+9],12,-1958414417),Q=k(Q,s,i,E,I[g+10],17,-42063),E=k(E,Q,s,i,I[g+11],22,-1990404162),i=k(i,E,Q,s,I[g+12],7,1804603682),s=k(s,i,E,Q,I[g+13],12,-40341101),Q=k(Q,s,i,E,I[g+14],17,-1502002290),E=k(E,Q,s,i,I[g+15],22,1236535329),i=K(i,E,Q,s,I[g+1],5,-165796510),s=K(s,i,E,Q,I[g+6],9,-1069501632),Q=K(Q,s,i,E,I[g+11],14,643717713),E=K(E,Q,s,i,I[g],20,-373897302),i=K(i,E,Q,s,I[g+5],5,-701558691),s=K(s,i,E,Q,I[g+10],9,38016083),Q=K(Q,s,i,E,I[g+15],14,-660478335),E=K(E,Q,s,i,I[g+4],20,-405537848),i=K(i,E,Q,s,I[g+9],5,568446438),s=K(s,i,E,Q,I[g+14],9,-1019803690),Q=K(Q,s,i,E,I[g+3],14,-187363961),E=K(E,Q,s,i,I[g+8],20,1163531501),i=K(i,E,Q,s,I[g+13],5,-1444681467),s=K(s,i,E,Q,I[g+2],9,-51403784),Q=K(Q,s,i,E,I[g+7],14,1735328473),E=K(E,Q,s,i,I[g+12],20,-1926607734),i=d(i,E,Q,s,I[g+5],4,-378558),s=d(s,i,E,Q,I[g+8],11,-2022574463),Q=d(Q,s,i,E,I[g+11],16,1839030562),E=d(E,Q,s,i,I[g+14],23,-35309556),i=d(i,E,Q,s,I[g+1],4,-1530992060),s=d(s,i,E,Q,I[g+4],11,1272893353),Q=d(Q,s,i,E,I[g+7],16,-155497632),E=d(E,Q,s,i,I[g+10],23,-1094730640),i=d(i,E,Q,s,I[g+13],4,681279174),s=d(s,i,E,Q,I[g],11,-358537222),Q=d(Q,s,i,E,I[g+3],16,-722521979),E=d(E,Q,s,i,I[g+6],23,76029189),i=d(i,E,Q,s,I[g+9],4,-640364487),s=d(s,i,E,Q,I[g+12],11,-421815835),Q=d(Q,s,i,E,I[g+15],16,530742520),E=d(E,Q,s,i,I[g+2],23,-995338651),i=H(i,E,Q,s,I[g],6,-198630844),s=H(s,i,E,Q,I[g+7],10,1126891415),Q=H(Q,s,i,E,I[g+14],15,-1416354905),E=H(E,Q,s,i,I[g+5],21,-57434055),i=H(i,E,Q,s,I[g+12],6,1700485571),s=H(s,i,E,Q,I[g+3],10,-1894986606),Q=H(Q,s,i,E,I[g+10],15,-1051523),E=H(E,Q,s,i,I[g+1],21,-2054922799),i=H(i,E,Q,s,I[g+8],6,1873313359),s=H(s,i,E,Q,I[g+15],10,-30611744),Q=H(Q,s,i,E,I[g+6],15,-1560198380),E=H(E,Q,s,i,I[g+13],21,1309151649),i=H(i,E,Q,s,I[g+4],6,-145523070),s=H(s,i,E,Q,I[g+11],10,-1120210379),Q=H(Q,s,i,E,I[g+2],15,718787259),E=H(E,Q,s,i,I[g+9],21,-343485551),i=BA(i,C),E=BA(E,B),Q=BA(Q,o),s=BA(s,D);return[i,E,Q,s]}function JE(I){var A,g="",C=I.length*32;for(A=0;A<C;A+=8)g+=String.fromCharCode(I[A>>5]>>>A%32&255);return g}function kE(I){var A,g=[];for(g[(I.length>>2)-1]=void 0,A=0;A<g.length;A+=1)g[A]=0;var C=I.length*8;for(A=0;A<C;A+=8)g[A>>5]|=(I.charCodeAt(A/8)&255)<<A%32;return g}function KE(I){return JE(UE(kE(I),I.length*8))}function dE(I){var A="0123456789abcdef",g="",C,B;for(B=0;B<I.length;B+=1)C=I.charCodeAt(B),g+=A.charAt(C>>>4&15)+A.charAt(C&15);return g}function HE(I){return unescape(encodeURIComponent(I))}function lE(I){return KE(HE(I))}function fE(I){return dE(lE(I))}function uE(I,A,g){return fE(I)}var QA,cA,AA=window,KA=AA.document,mE=/^(?:text|application)\/javascript/i,pE=/^(?:text|application)\/xml/i,RC="application/json",FC="text/html",qE=/^\s*$/,TE="jsonpcallback=?",bE=Object.prototype.toString,fI=encodeURIComponent,_=function(){},V=function(I){return bE.call(I).toLowerCase().slice(8,-1)},vA=[];function Zg(I){let A={index:100,name:"anonymity",fn:_},g=V(I);if(g==="function")vA.push(Cg(A,{fn:I}));else if(g==="object"){if(vA.find(C=>C.name===I.name&&C.index===I.index))return;vA.push(Cg(A,I))}else g==="array"&&I.forEach(Zg)}function wg(I,A,g,C){return V(A)==="function"&&(C=g,g=A,A=void 0),V(g)!=="function"&&(C=g,g=void 0),{url:I,data:A,success:g,dataType:C}}function xE(I){let A="text";return I&&(I=I.split(";",2)[0]),I==FC?A="html":I==RC?A="json":mE.test(I)?A="script":pE.test(I)&&(A="xml"),A}function lg(I,A){return A===""?I:(I+"&"+A).replace(/[&?]{1,2}/,"?")}function WE(I){I.data&&V(I.data)==="object"&&(I.data=OE(I.data)),I.data&&(!I.type||I.type.toUpperCase()==="GET"||I.dataType==="jsonp")&&(I.url=lg(I.url,I.data))}function GC(I,A,g,C){let B,o=V(A)==="array";for(let D in A)B=A[D],C&&(D=C+"["+(o?"":D)+"]"),!C&&o?I.add(B.name,B.value):V(B)==="array"||V(B)==="object"?GC(I,B,g,D):I.add(D,B)}function OE(I,A){let g=[];return g.add=function(C,B){V(B)==="function"&&(B=B()),B==null&&(B=""),this.push(fI(C)+"="+fI(B))},GC(g,I,A),g.join("&").replace(/%20/g,"+")}function Cg(I){return Array.prototype.slice.call(arguments,1).forEach(function(A){for(QA in A)A[QA]!==void 0&&(I[QA]=A[QA])}),I}function VE(I,A,g){let C=n.settings[A];return V(C)==="function"&&C.call(I,g),!0}function rA(I,A,g,C){if(I.global)return VE(A||KA,g,C)}function PE(I){I.global&&n.active++===0&&rA(I,null,"ajaxStart")}function jE(I){I.global&&!--n.active&&rA(I,null,"ajaxStop")}function nC(I,A){let g=A.context;if(A.beforeSend.call(g,I,A)===!1||rA(A,g,"ajaxBeforeSend",[I,A])===!1)return!1;rA(A,g,"ajaxSend",[I,A])}function MC(I,A,g){let C=g.context,B="success";typeof g.success=="function"&&g.success.call(C,I,B,A),rA(g,C,"ajaxSuccess",[A,g,I]),SC(B,A,g)}function FA(I,A,g,C){let B=C.context;typeof C.error=="function"&&C.error.call(B,g,A,I),rA(C,B,"ajaxError",[g,C,I]),SC(A,g,C)}function SC(I,A,g){let C=g.context;typeof g.complete=="function"&&g.complete.call(C,A,I),rA(g,C,"ajaxComplete",[A,g]),jE(g)}function ZE(I){let A,g=I.jsonpCallback||"jsonp"+I.url.replace(/[^a-zA-Z0-9]+/g,""),C=KA.createElement("script"),B=KA.head||KA.getElementsByTagName("head")[0]||KA.documentElement,o=AA[g],D=function(Q){C&&C.onload&&C.onload({type:"error"},Q||"abort")},i={abort:D},E;return C.onload=C.onerror=function(Q,s){clearTimeout(E),C.onload=C.onerror=_,B&&C.parentNode&&B.removeChild(C),C=void 0,Q&&Q.type=="error"||!A&&I.dataType==="jsonp"?FA(null,s||"error",i,I):MC(A,i,I),AA[g]=o||_,A&&V(o)==="function"&&o(A),o=A=void 0},nC(i,I)===!1?(D("abort"),i):(AA[g]=function(Q){A=Q},C.src=I.url.replace(/\?(.+)=\?/,"?$1="+g),B.insertBefore(C,B.firstChild),I.timeout>0&&(E=setTimeout(function(){D("timeout")},I.timeout)),i)}var n=function(I){let A,g,C,B;B=vA.sort(function(t,e){return e.index-t.index}),B.forEach(function(t){let e;if(t&&V(t.fn)==="function")try{e=t.fn(I)}catch(r){}e&&(I=e)}),A=Cg({},I||{});for(QA in n.settings)A[QA]===void 0&&(A[QA]=n.settings[QA]);if(PE(A),A.crossDomain||(A.crossDomain=/^([\w-]+:)?\/\/([^\/]+)/.test(A.url)&&RegExp.$2!==AA.location.host),A.url||(A.url=AA.location.toString()),WE(A),g=A.dataType,C=/\?.+=\?/.test(A.url),C&&(g="jsonp"),A.cache===!1&&(A.url=lg(A.url,"_="+new Date().getTime())),g==="jsonp"||g==="script")return g==="jsonp"&&!C&&(A.url=lg(A.url,A.jsonp?A.jsonp+"=?":A.jsonp===!1?"":TE)),ZE(A);let o=A.accepts[g],D={},i=/^([\w-]+:)\/\//.test(A.url)?RegExp.$1:AA.location.protocol,E=A.xhr(),Q;if(A.crossDomain||(D["X-Requested-With"]="XMLHttpRequest"),D.Accept=o||"*/*",o&&(o.indexOf(",")>-1&&(o=o.split(",",2)[0]),E.overrideMimeType&&E.overrideMimeType(o)),(A.contentType||A.contentType!==!1&&A.data&&A.type.toUpperCase()!="GET")&&(D["Content-Type"]=A.contentType||"application/x-www-form-urlencoded"),A.headers=Cg(D,A.headers||{}),E.onreadystatechange=function(){if(E.readyState==4){E.onreadystatechange=_,clearTimeout(Q);let t,e=!1;if(E.status>=200&&E.status<300||E.status==304||E.status==0&&i=="file:"){if(g=g||xE(E.getResponseHeader("content-type")),E.responseType=="arraybuffer"||E.responseType=="blob")t=E.response;else{t=E.responseText;try{g=="script"?(0,eval)(t):g=="xml"?t=E.responseXML:g=="json"&&(t=qE.test(t)?null:JSON.parse(t))}catch(r){e=r}if(e)return FA(e,"parsererror",E,A)}MC(t,E,A)}else FA(E.statusText||null,E.status?"error":"abort",E,A)}},nC(E,A)===!1)return E.abort(),A.customAbort||FA(null,"abort",E,A),E;let s="async"in A?A.async:!0;if(E.open(A.type,A.url,s,A.username,A.password),A.xhrFields)for(cA in A.xhrFields)E[cA]=A.xhrFields[cA];for(cA in A.headers)E.setRequestHeader(cA,A.headers[cA]);A.timeout>0&&(Q=setTimeout(function(){E.onreadystatechange=_,E.abort(),FA(null,"timeout",E,A)},A.timeout));try{E.send(A.data?A.data:null)}catch(t){if(A.async||clearTimeout(Q),A.catchSendError)FA(t,"error",E,A);else throw t}return E};n.active=0;n.settings={type:"GET",dataType:"json",beforeSend:_,success:_,error:_,complete:_,context:null,global:!0,xhr:function(){return new AA.XMLHttpRequest},accepts:{script:"text/javascript, application/javascript, application/x-javascript",json:RC,xml:"application/xml, text/xml",html:FC,text:"text/plain"},crossDomain:!1,timeout:0,cache:!0};n.get=function(){return n(wg.apply(null,arguments))};n.post=function(){let I=wg.apply(null,arguments);return I.type="POST",n(I)};n.jsonp=function(){let I=wg.apply(null,arguments);return I.dataType="jsonp",n(I)};n.script=function(){let I=wg.apply(null,arguments);return I.dataType="script",n(I)};n.fetch=I=>new Promise((A,g)=>{n(OA(gA({},I),{success:A,error:g}))});n.pushInterceptors=Zg;n.version="<%= version %>";Zg(AA.FxAjaxInterceptors);var rg=(I={})=>{let A=gA({pid:"",sp:"KG",device_id:kA,client_ip:"127.0.0.1",timestamp:Math.floor(Date.now()/1e3),nonce:GE(64),token:LE,userid:SE,ssl:1},I),g=I.appkey,C=[],B=JSON.stringify(A);return C.push(B),C.push(g),{signature:uE(C.join("")),body:B}};async function XE(I){let{url:A,header:g}=I;return await n.fetch({url:A,headers:JSON.parse(g),contentType:"application/json",crossDomain:!0})}async function vE(I){let{url:A,header:g,body:C}=I;return await n.fetch({url:A,type:"POST",headers:JSON.parse(g),contentType:"application/json",data:C,crossDomain:!0})}function zE(I){let{signature:A,body:g}=rg(I);return n.fetch({url:"https://commercial.kugou.com/v2/commercial/vip/info",type:"POST",headers:{signature:A},contentType:"application/json",data:g,crossDomain:!0})}function _E(I){let{signature:A,body:g}=rg(I);return n.fetch({url:"https://commercial.kugou.com/v2/commercial/sdk/song/krc/base64",type:"POST",headers:{signature:A},contentType:"application/json",data:g,crossDomain:!0})}function $E(I){let{signature:A,body:g}=rg(I);return n.fetch({url:"https://commercial.kugou.com/v2/commercial/sdk/accompany/krc/base64",type:"POST",headers:{signature:A},contentType:"application/json",data:g,crossDomain:!0})}function Ai(I){let{signature:A,body:g}=rg(I);return n.fetch({url:"https://commercial.kugou.com/v2/commercial/sdk/accompany/songpitch",type:"POST",headers:{signature:A},contentType:"application/json",data:g,crossDomain:!0})}var zA=class{constructor(){this.userid="",this.token="",this.clientPid="",this.appkey="",this.commonParams={},this.isVip=1,this.songId="",this.accompanySongId="",this.lyricSongId="",this.accompanyLyricSongId="",this.pitchSongId="",this.scoreSongId="",this.urlToken="",this.encryptLyricData="",this.lyricOffset=0,this.encryptAccompanyLyricData="",this.accompanyLyricOffset=0,this.encryptPitchData="",this.pitchOffset=0,this.pitchStartTime=0,this.ktvScoreClient={},this.songPcmData=[],this.accompanyPcmData=[],this.accompanySegmentSongId="",this.accompanySegmentBegin=0,this.accompanySegmentEnd=0,this.accompanySegmentPcmData=[],this.ffmpegLoaded=!1,this.ffmpeg=new Ug}async _getLyric({song_id:A,isAccompany:g=0}){try{let C;return g===1?A===this.accompanyLyricSongId&&this.encryptAccompanyLyricData?Promise.resolve({error_code:0,data:{lyric_base64:this.encryptAccompanyLyricData,offset:this.accompanyLyricOffset}}):(C=await $E(Object.assign({song_id:A},this.commonParams)),C.error_code===0?(this.accompanyLyricSongId=A,this.encryptAccompanyLyricData=C.data.lyric_base64,this.accompanyLyricOffset=C.data.offset,Promise.resolve({error_code:0,data:{lyric_base64:this.encryptAccompanyLyricData,offset:this.accompanyLyricOffset}})):Promise.resolve({error_code:C.error_code,error_msg:C.error_msg,data:{}})):A===this.lyricSongId&&this.encryptLyricData?Promise.resolve({error_code:0,data:{lyric_base64:this.encryptLyricData,offset:this.lyricOffset}}):(C=await _E(Object.assign({song_id:A,quality:"standard"},this.commonParams)),C.error_code===0?(this.lyricSongId=A,this.encryptLyricData=C.data.lyric_base64,this.lyricOffset=C.data.offset,Promise.resolve({error_code:0,data:{lyric_base64:this.encryptLyricData,offset:this.lyricOffset}})):Promise.resolve({error_code:C.error_code,error_msg:C.error_msg,data:{}}))}catch(C){return Promise.resolve({error_code:f.ERR_PUB_SYSTEM,data:{}})}}async _getPitch({song_id:A}){try{if(A===this.pitchSongId&&this.encryptPitchData)return Promise.resolve({error_code:0,data:{lyric:this.encryptPitchData,offset:this.pitchOffset}});{let g=await Ai(Object.assign({song_id:A},this.commonParams));return g.error_code===0?(this.encryptPitchData=g.data.pitch,this.pitchOffset=g.data.offset,this.pitchStartTime=g.data.vtime,this.pitchSongId=A,Promise.resolve({error_code:0,data:{pitch:this.encryptPitchData,offset:this.pitchOffset,vtime:this.pitchStartTime}})):Promise.resolve({error_code:g.error_code,error_msg:g.error_msg,data:{}})}}catch(g){return Promise.resolve({error_code:f.ERR_PUB_SYSTEM,data:{}})}}async setUser(A){var B;if(!(A!=null&&A.userid)||!(A!=null&&A.token)||!(A!=null&&A.clientPid)||!(A!=null&&A.appkey))return Promise.resolve({status:f.ERR_PUB_PARAMS,data:{}});this.userid=A.userid,this.token=A.token,this.clientPid=A.clientPid,this.appkey=A.appkey,this.isVip=(B=A.isVip)!=null?B:1,this.commonParams={userid:this.userid,token:this.token,pid:this.clientPid,appkey:this.appkey};let g={status:0,data:{}},C=await zE(this.commonParams);return C.error_code!==0&&(g.status=C.error_code),Promise.resolve(g)}async setDecodeWorker(A){let{url:g}=A;return ME(g),Promise.resolve({status:0,data:{}})}fetchAccompanyUrl(A){let{song_id:g}=A,C={error_code:0,data:{}};return new Promise(B=>{let o=a.VoidFunctorWithIntString.implement({invoke:async function(D,i){if(D===a.KtvScore$ErrCode.ERR_CODE_OK.value){let E={};try{E=JSON.parse(i)}catch(Q){}this.accompanySongId=g,this.urlToken=E.url_token,C.data={status:E.status,accompany_url:E.accompany_url,url_token:E.url_token}}else C.error_code=D||f.ERR_NO_DATA;B(C),o.delete()}});this.ktvScoreClient.getMediaResource(kA,this.clientPid,this.userid,this.token,g,!0,this.isVip?a.KtvScore$ChargeMode.CHARGE_MODE_MONTHLY:a.KtvScore$ChargeMode.CHARGE_MODE_ONCE,a.KtvScore$MediaType.MEDIA_TYPE_ACCOMPANY,o)})}async initKtvScoreClient({song_id:A}){var g;let C={error_code:0};if(A!==this.scoreSongId){let[B,o,D]=await Promise.all([this.fetchAccompanyUrl({song_id:A,isAccompany:1}),this._getLyric({song_id:A,isAccompany:1}),this._getPitch({song_id:A})]);if((B==null?void 0:B.error_code)!==0||o.error_code!==0||D.error_code!==0)C.error_code=f.ERR_PUB_BUSY;else if(((g=B==null?void 0:B.data)==null?void 0:g.status)!==0)C.error_code=f.ERR_PUB_COPYRIGHT;else return new Promise(i=>{this.urlToken=B.data.url_token;let E=a.VoidFunctorWithInt.implement({invoke:function(Q){Q===a.KtvScore$ErrCode.ERR_CODE_OK.value?(DA.scoreSongId=A,i(C)):(C.error_code=Q||f.ERR_PUB_SYSTEM,i(C)),E.delete()}});DA.ktvScoreClient.init(this.encryptPitchData,this.encryptAccompanyLyricData,this.accompanyLyricOffset,this.urlToken,E,a.KtvScore$Version.VERSION_OLD)})}return Promise.resolve(C)}async _fetchSongUrl(A){let{song_id:g,isAccompany:C}=A,B={status:a.KtvScore$ErrCode.ERR_CODE_OK.value};return C?new Promise(o=>{let D=a.VoidFunctorWithIntString.implement({invoke:async function(i,E){if(i===a.KtvScore$ErrCode.ERR_CODE_OK.value){let Q={};try{Q=JSON.parse(E)}catch(s){}this.accompanySongId=g,this.urlToken=Q.url_token,B=OA(gA({},B),{data:Q})}else B={status:i||f.ERR_NO_DATA};o(B),D.delete()}});this.ktvScoreClient.getMediaResource(kA,this.clientPid,this.userid,this.token,g,!0,this.isVip?a.KtvScore$ChargeMode.CHARGE_MODE_MONTHLY:a.KtvScore$ChargeMode.CHARGE_MODE_ONCE,a.KtvScore$MediaType.MEDIA_TYPE_ACCOMPANY,D)}):new Promise(o=>{let D=a.VoidFunctorWithIntString.implement({invoke:async function(i,E){if(i===a.KtvScore$ErrCode.ERR_CODE_OK.value){let Q={};try{Q=JSON.parse(E)}catch(s){}this.songId=g,this.urlToken=Q.url_token,B=OA(gA({},B),{data:Q})}else B={status:i||f.ERR_NO_DATA};o(B),D.delete()}});this.ktvScoreClient.getMediaResource(kA,this.clientPid,this.userid,this.token,g,!0,this.isVip?a.KtvScore$ChargeMode.CHARGE_MODE_MONTHLY:a.KtvScore$ChargeMode.CHARGE_MODE_ONCE,a.KtvScore$MediaType.MEDIA_TYPE_SONG,D)})}async initCodec(A,g){return this.ffmpegLoaded?this.ffmpegLoaded:(await this.ffmpeg.load({coreURL:await LI(`${A}/ffmpeg-core.js`,"text/javascript"),wasmURL:await LI(`${A}/ffmpeg-core.wasm`,"application/wasm"),classWorkerURL:g}),this.ffmpegLoaded=!0,this.ffmpegLoaded)}async downloadSongById(A){let{song_id:g,isAccompany:C}=A,B={status:0,data:{}};if(!this.ffmpegLoaded)return B.status=f.ERR_NOT_INIT_CODEC,B;if(C){let o=await this._fetchSongUrl(A),D="song.mkv";await this.ffmpeg.writeFile(D,await iB(o.data.accompany_url)),console.time("exec"),await this.ffmpeg.exec(["-i",D,"-map","0:0","-c","copy","output0.mp3","-map","0:1","-c","copy","output1.mp3"]),console.timeEnd("exec");let i=await this.ffmpeg.readFile("output0.mp3"),E=await this.ffmpeg.readFile("output1.mp3");B.data={song_id:g,isAccompany:C,numberOfChannels:2,mp3Data:[i,E]}}return B}async downloadSong(A){var g,C;let{song_id:B,isAccompany:o}=A,D={status:0,data:{}};if(o)if(this.accompanySongId===B&&((g=this.accompanyPcmData)==null?void 0:g.length)>0)D.data={song_id:B,isAccompany:o,numberOfChannels:this.accompanyPcmData.length,accompanyPcmData:this.accompanyPcmData};else return this._fetchSongUrl(A).then(async i=>{var E;if(i.status!==a.KtvScore$ErrCode.ERR_CODE_OK.value)D.status=i.status;else{let Q=await Lg(i.data.accompany_url);if(Q.error===0){let s=(E=Q==null?void 0:Q.streams)==null?void 0:E.map(t=>t.stream);this.accompanySongId=B,this.accompanyPcmData=s,D.data={song_id:B,isAccompany:o,numberOfChannels:this.accompanyPcmData.length,accompanyPcmData:this.accompanyPcmData}}else D.status=f.ERR_PUB_SYSTEM}return D});else if(this.songId===B&&((C=this.songPcmData)==null?void 0:C.length)>0)D.data={song_id:B,isAccompany:o,numberOfChannels:this.songPcmData.length,pcmData:this.songPcmData};else return this._fetchSongUrl(A).then(async i=>{var E;if(i.status!==a.KtvScore$ErrCode.ERR_CODE_OK.value)D.status=i.status;else{let Q=await Lg(i.data.song_url);if(Q.error===0){let s=(E=Q==null?void 0:Q.streams)==null?void 0:E.map(t=>t.stream);this.songPcmData=s,D.data={song_id:B,isAccompany:o,numberOfChannels:this.songPcmData.length,pcmData:this.songPcmData}}else D.status=f.ERR_PUB_SYSTEM}return D});return Promise.resolve(D)}async downloadAccompanySegment(A){var g;let{song_id:C}=A,B={status:0,data:{}};if(this.accompanySegmentSongId===C&&((g=this.accompanySegmentPcmData)==null?void 0:g.length)>0)B.data={song_id:C,begin:this.accompanySegmentBegin,end:this.accompanySegmentEnd,numberOfChannels:this.accompanySegmentPcmData.length,pcmData:this.accompanySegmentPcmData};else return new Promise(o=>{let D=a.VoidFunctorWithIntString.implement({invoke:async function(i,E){var Q;if(i===a.KtvScore$ErrCode.ERR_CODE_OK.value){let s={};try{s=JSON.parse(E)}catch(e){}this.accompanySegmentSongId=C,this.accompanySegmentBegin=s.segment_begin,this.accompanySegmentEnd=s.segment_end;let t=await Lg(s.url);t.error===0?(this.accompanySegmentPcmData=(Q=t==null?void 0:t.streams)==null?void 0:Q.map(e=>e.stream),B.data={begin:this.accompanySegmentBegin,end:this.accompanySegmentEnd,numberOfChannels:this.accompanySegmentPcmData.length,pcmData:this.accompanySegmentPcmData}):B.status=f.ERR_PUB_SYSTEM}else B.status=i||f.ERR_NO_DATA;o(B),D.delete()}});this.ktvScoreClient.getMediaResource(kA,this.clientPid,this.userid,this.token,C,!0,this.isVip?a.KtvScore$ChargeMode.CHARGE_MODE_MONTHLY:a.KtvScore$ChargeMode.CHARGE_MODE_ONCE,a.KtvScore$MediaType.MEDIA_TYPE_ACCOMPANY_SEGMENT,D)});return Promise.resolve(B)}async getLyric(A){let{song_id:g,isAccompany:C=0}=A,B={status:0,data:{}},o=await this.initKtvScoreClient({song_id:g});if(o.error_code===0){let D=await this.ktvScoreClient.getLyric();B.data={song_id:g,isAccompany:C,lyric:D.replace(/\0/g,"")}}else B.status=o.error_code;return Promise.resolve(B)}async getPitchData({song_id:A}){let g={status:0,data:{}},C=await this.initKtvScoreClient({song_id:A});if(C.error_code===0){let B=this.ktvScoreClient.getPitchData(),o=[],D=B.size();for(let i=0;i<D;i++)o.push(B.get(i));g.data={pitch:o},B.delete()}else g.status=C.error_code;return Promise.resolve(g)}setAudioParams(A){let{sampleRate:g,channels:C}=A;return this.ktvScoreClient.setAudioParams(g,C),this.ktvScoreClient.enableScore(!0),Promise.resolve({status:0,data:{}})}setScoreHardLevel({level:A=5}){let g={status:0,data:{}};return/^[1-5]{1}$/.test(A)?this.ktvScoreClient.setScoreHardLevel(a.KtvScore$ScoreHardLevel[`SCORE_HARD_LEVEL${A}`]):g.status=f.ERR_PUB_PARAMS,Promise.resolve(g)}processScore(A){let{buffer:g,pts:C}=A,B=new a.Int16Array(g.length);return B.data.set(g),this.ktvScoreClient.process(B,C),B.delete(),Promise.resolve({status:0,data:{}})}getRealTimePitch(){let A=this.ktvScoreClient.immediatelyDisplay();return Promise.resolve({status:0,data:{pitch:A}})}getScore(A){let{pts:g}=A,C={status:0,data:{}},B=this.ktvScoreClient.updateScoreToScoreInfo(g);return C.data={song_id:this.scoreSongId,score:B.score,index:B.index},Promise.resolve(C)}getAverageScore(A){let{pts:g}=A,C={status:0,data:{}},B=this.ktvScoreClient.updateAverageScore(g);return C.data={song_id:this.scoreSongId,averageScore:B},Promise.resolve(C)}getTotalScore(A){let{pts:g}=A,C={status:0,data:{}},B=this.ktvScoreClient.updateTotalScore(g),o=this.ktvScoreClient.calculateTotalScore();return C.data={song_id:this.scoreSongId,totalScore:B,wholeScore:o},Promise.resolve(C)}reset(){let A={status:0,data:{}};return this.ktvScoreClient.reset(),Promise.resolve(A)}};zA.packageName="__PKG_NAME__",zA.version="__PKG_VERSION__",zA.updateTime="__UPDATE_TIME__";var gi=zA,DA=window.yinsudaClient;DA||(DA=new gi,a.onRuntimeInitialized=function(){let I=a.IHttp.implement({get:async function(A,g,C){let B=C.clone(),o=await XE({url:A,header:g});B.opCall(JSON.stringify(o)),B.delete()},post:async function(A,g,C,B){let o=B.clone(),D=await vE({url:A,header:g,body:C});o.opCall(JSON.stringify(D)),o.delete()}});DA.ktvScoreClient=new a.KtvScore(I)},window.yinsudaClient=DA);var Z=DA;var YC=AI(vg(),1);var UC=(E=>(E.PLAYING="playing",E.PAUSED="paused",E.STOPPED="stopped",E.PROGRESS_UPDATED="progress_updated",E.CURRENT_TIME_INDEX_UPDATED="current_time_index_updated",E.PITCH_UPDATED="pitch_updated",E.SCHORE_UPDATED="schore_updated",E.MUSIC_LOADED="music_loaded",E))(UC||{});function Bi(I,A){if(I<A[0])return-1;if(I>A[A.length-1])return A.length-1;for(let g=0;g<A.length;g++)if(A[g]>=I)return g;return-1}var Ng=class extends YC.EventEmitter{constructor(g,C){super();this.core=g;N(this,"EVENT",UC);N(this,"log");N(this,"yinsudaClient");N(this,"assetsPath","");N(this,"workerURL","");N(this,"currentTimeIndex",0);N(this,"lyric");N(this,"pitchList");N(this,"lyricStartTimeList");N(this,"musicId");N(this,"originalPlayer");N(this,"accompanyPlayer");N(this,"originalURL");N(this,"accompanyURL");N(this,"useOriginalSong",!0);N(this,"volume",80);N(this,"bgmAudioTrack");N(this,"audioSourceNodes",[]);N(this,"downloadMusicPromise",{});N(this,"downloadedMusicId");N(this,"isYSDCodecInited",!1);this.log=g.log.createChild({id:`mp${C}`}),this.yinsudaClient=Z,["setUser","initCodec","downloadSongById","getLyric","getPitchData"].forEach(B=>{let o=Z[B];Z[B]=function(...D){let i=o.call(Z,...D);return g.utils.isPromise(i)?new Promise((E,Q)=>{i.then(s=>{if(typeof s.status=="undefined")return E(s);s.status===0?E(s.data):Q(new Error(`${B} failed: ${s.status}`))}).catch(Q)}):i}})}get player(){return this.useOriginalSong?this.originalPlayer:this.accompanyPlayer}get currentTime(){var g;return((g=this.player)==null?void 0:g.currentTime)||0}set currentTime(g){this.originalPlayer&&(this.originalPlayer.currentTime=g),this.accompanyPlayer&&(this.accompanyPlayer.currentTime=g),this.log.info(`set currentTime: ${g}`)}get duration(){var g;return((g=this.player)==null?void 0:g.duration)||0}get isPlaying(){var g;return((g=this.player)==null?void 0:g.isPlaying)||!1}get isPaused(){var g;return((g=this.player)==null?void 0:g.isPaused)||!1}get isStopped(){return this.player?this.player.isStopped:!0}get isLyricDownloaded(){return!!this.lyric}get isPitchDownloaded(){return!!this.pitchList}get isMusicDownloaded(){return!!(this.downloadedMusicId&&this.downloadedMusicId===this.musicId)}async initialize(g){this.log.info("initialize with config: ",g),g.assetsPath&&(this.assetsPath=g.assetsPath),g.workerURL&&(this.workerURL=g.workerURL),await Z.setUser(g)}initDownloadPromise(){this.log.info("initDownloadPromise"),this.downloadMusicPromise.promise=new Promise((g,C)=>{this.downloadMusicPromise.resolve=g,this.downloadMusicPromise.reject=C})}async loadMusic(g){let{musicId:C,isNeedDownloadMusic:B=!0,isNeedLyric:o=!0,isNeedPitch:D=!0}=g;if(!B&&!o&&!D)throw new Error("(isNeedDownloadMusic, isNeedLyric, isNeedPitch) cannot all be false");B&&this.initDownloadPromise(),this.log.info("loadMusic with option: ",g),this.musicId=C;let i={};if(o&&(i.lyric=await this.getLyric(C)),D&&(i.pitchList=await this.getPitch(C)),B)try{await this.downloadMusic(g),this.downloadMusicPromise.resolve()}catch(E){this.downloadMusicPromise.reject(E)}return this.emit(this.EVENT.MUSIC_LOADED),i}async downloadMusic({musicId:g}){this.isYSDCodecInited||(this.log.info("downloadMusic initCodec"),await Z.initCodec(this.assetsPath,this.workerURL||this.assetsPath),this.isYSDCodecInited=!0),this.log.info(`downloadMusic downloadSongById ${g}`);let C=await Z.downloadSongById({song_id:g,isAccompany:1});C!=null&&C.mp3Data&&(C.mp3Data[0]&&(this.accompanyURL&&URL.revokeObjectURL(this.accompanyURL),this.accompanyURL=URL.createObjectURL(new Blob([C.mp3Data[0]],{type:"audio/mpeg"})),this.accompanyPlayer=new this.core.AudioPlayer({id:"ktv-p0",url:this.accompanyURL,track:null,muted:!1,container:null,log:this.log.createChild({id:"ktv-p0"})})),C.mp3Data[1]&&(this.originalURL&&URL.revokeObjectURL(this.originalURL),this.originalURL=URL.createObjectURL(new Blob([C.mp3Data[1]],{type:"audio/mpeg"})),this.originalPlayer=new this.core.AudioPlayer({id:"ktv-p1",url:this.originalURL,track:null,muted:!1,container:null,log:this.log.createChild({id:"ktv-p1"})}))),this.log.info("downloadMusic success"),this.downloadedMusicId=g}async getLyricAndPitch(g){let C=await this.getLyric(g),B=await this.getPitch(g);return{lyric:C,pitchList:B}}async getLyric(g){let{lyric:C}=await Z.getLyric({song_id:g,isAccompany:1});this.log.info("getLyric success");let B=C.indexOf(`\r
23
23
  `)!==-1?`\r
24
24
  `:`
25
- `;return this.lyricStartTimeList=C.split(B).map(o=>{let D=o.match(/\[(\d+),/);if(D)return+D[1]}).filter(o=>typeof o=="number"),this.lyric=C,C}async getPitch(g){let{pitch:C}=await Z.getPitchData({song_id:g});return this.log.info("getPitchData success"),this.pitchList=C,C}async play(){if(!this.originalPlayer||!this.accompanyPlayer||this.isPlaying)return;this.setVolume(this.volume);let g=this.originalPlayer.play(),C=this.accompanyPlayer.play();this.originalPlayer.setMuted(!this.useOriginalSong),this.accompanyPlayer.setMuted(this.useOriginalSong),this.originalPlayer.on("time-updated",B=>this.onTimeUpdated(this.originalPlayer,B)),this.originalPlayer.on("player-state-changed",B=>this.onPlayerStateChange(this.originalPlayer,B.state)),this.accompanyPlayer.on("time-updated",B=>this.onTimeUpdated(this.accompanyPlayer,B)),this.accompanyPlayer.on("player-state-changed",B=>this.onPlayerStateChange(this.accompanyPlayer,B.state));try{await(this.useOriginalSong?g:C)}catch(B){if(B.message.includes("NotAllowedError"))this.handleAutoPlayFailed();else throw B}}async pause(){var B,o;let g=(B=this.originalPlayer)==null?void 0:B.pause(),C=(o=this.accompanyPlayer)==null?void 0:o.pause();await Promise.all([g,C])}async resume(){var B,o;let g=(B=this.originalPlayer)==null?void 0:B.resume(),C=(o=this.accompanyPlayer)==null?void 0:o.resume();await Promise.all([g,C])}stop(){var g,C,B,o;(g=this.originalPlayer)==null||g.stop(),(C=this.accompanyPlayer)==null||C.stop(),(B=this.originalPlayer)==null||B.removeAllListeners(),(o=this.accompanyPlayer)==null||o.removeAllListeners(),delete this.bgmAudioTrack,this.audioSourceNodes.forEach(D=>D.disconnect())}switchMusicTrack(g){var C,B;this.useOriginalSong=g,(C=this.originalPlayer)==null||C.setMuted(!g),(B=this.accompanyPlayer)==null||B.setMuted(g)}onTimeUpdated(g,C){if(g===this.player&&(this.emit("progress_updated",{currentTime:C,duration:this.player.duration}),this.lyricStartTimeList)){let B=Bi(C,this.lyricStartTimeList);B!==this.currentTimeIndex&&(this.currentTimeIndex=B,this.emit("current_time_index_updated",{currentTime:C,currentTimeIndex:B}))}}onPlayerStateChange(g,C){g===this.player&&(C==="PLAYING"?this.emit(this.EVENT.PLAYING):C==="PAUSED"?this.emit(this.EVENT.PAUSED):C==="STOPPED"&&(this.stop(),this.emit(this.EVENT.STOPPED)))}handleAutoPlayFailed(){if(this.core.room.enableAutoPlayDialog)new this.core.AutoPlayDialog;else{let g=()=>{var C;(C=this.player)==null||C.resume().then(()=>{document.removeEventListener("click",g,!0)})};document.addEventListener("click",g,!0)}}initBGMAudioTrack(){var D,i;if(this.bgmAudioTrack)return this.bgmAudioTrack;if(!((D=this.originalPlayer)!=null&&D.element)||!((i=this.accompanyPlayer)!=null&&i.element))return;let{audioContext:g}=this.core,C=g.createMediaElementSource(this.originalPlayer.element),B=g.createMediaElementSource(this.accompanyPlayer.element),o=g.createMediaStreamDestination();return C.connect(o),B.connect(o),C.connect(g.destination),B.connect(g.destination),this.bgmAudioTrack=o.stream.getAudioTracks()[0],this.audioSourceNodes=[C,B],this.bgmAudioTrack}setVolume(g){var C,B;g<0||g>100||(this.volume=g,(C=this.originalPlayer)==null||C.setVolume(this.volume/100),(B=this.accompanyPlayer)==null||B.setVolume(this.volume/100))}clearMusic(){delete this.musicId,delete this.downloadedMusicId,delete this.lyric,delete this.pitchList,this.originalURL&&URL.revokeObjectURL(this.originalURL),this.accompanyURL&&URL.revokeObjectURL(this.accompanyURL),delete this.originalURL,delete this.accompanyURL,delete this.originalPlayer,delete this.accompanyPlayer}};var dC=AI(vg(),1);var JC=function(){let I=0;class A{constructor(Q){Q&&(this.userId=Q),this.name="aa-wk"}getPrevFix(Q){return`[${this.timestamp}] <${Q.toUpperCase()}> [${this.name}${this.userId?`|${this.userId}`:""}]`}get timestamp(){let Q=new Date;Q.setTime(Date.now()+I);let s=String(Q.getMilliseconds());return"padStart"in String.prototype&&(s=s.toString().padStart(3,"0")),`${Q.toTimeString().replace(/.*(\d{2}:\d{2}:\d{2}).*/,"$1")}:${s}`}log(Q,s,...t){let e=this.getPrevFix(Q);console[Q](e,...t),postMessage({log:{log:[e,...t],level:s,userId:this.userId}})}debug(...Q){this.log("debug",1,...Q)}info(...Q){this.log("info",2,...Q)}warn(...Q){this.log("warn",3,...Q)}error(...Q){this.log("error",4,...Q)}}let g=80,C=300;class B{constructor(){this.remoteAudioMap=new Map,this.log=new A,this.log.info("DEFAULT_BUFFER_LEN",C,"MULTI_AUDIO_ALIGN_TARGET_DELAY",g),this.doMultiRemoteAudioAlignment(),setInterval(()=>{this.doMultiRemoteAudioAlignment();let Q={};this.remoteAudioMap.forEach(({buffer:s},t)=>{Q[t]=(s==null?void 0:s.length)||0}),postMessage({remoteUserBufferLenMap:Q})},2e3)}async removeRemoteAudio(Q,s=!1){if(!this.remoteAudioMap.has(Q))return;this.log.warn("removeRemoteAudio",Q,"hasLeavingTag",s);let t=this.remoteAudioMap.get(Q)||{},{buffer:e,writer:r,audioDecoder:c}=t;e==null||e.destroy(),c==null||c.close(),r==null||r.abort(),this.remoteAudioMap.delete(Q),postMessage({removedUserId:Q})}onAudioFrame(Q,s,t=!1){let e=this.remoteAudioMap.get(Q)||{};e.audioDecoder||(e.audioDecoder=new AudioDecoder({error:r=>this.log.error(`[${Q}] audio decoder error`,r),output:r=>{var c;(c=e.writer)==null||c.write(r).catch(F=>{this.log.warn(`[${Q}] writer write error`,F)})}}),e.audioDecoder.configure({codec:"opus",sampleRate:48e3,numberOfChannels:2})),e.buffer||(e.buffer=new D(Q),e.buffer.setTargetDelay(C),e.buffer.onAudioFrame=r=>{var c;((c=e.audioDecoder)==null?void 0:c.state)==="configured"&&e.audioDecoder.decode(r.frame)},e.buffer.onNotData2s=()=>{var r;(r=this.remoteAudioMap.get(Q))!=null&&r.hasLeavingTag&&this.removeRemoteAudio(Q,!0)}),e.buffer.input(new o(new EncodedAudioChunk({data:s.frame.data,timestamp:s.frame.timestamp,type:"key"}),s.ntp)),e.hasLeavingTag=t,t&&(e.buffer.minDelay=0),this.remoteAudioMap.set(Q,e)}onWritableStream(Q,s){this.log.warn("onWritableStream",Q);let t=this.remoteAudioMap.get(Q)||{};t.writer=s.getWriter(),this.remoteAudioMap.set(Q,t)}doMultiRemoteAudioAlignment(){if(this.remoteAudioMap.size<2||this.checkIsMultiRemoteAudioAligned())return;let Q=0,s=0,t={};this.remoteAudioMap.forEach(({buffer:e},r)=>{!e||e.inputNTP<0||(t[r]=e.inputNTP,(Q===0||e.inputNTP<Q)&&(Q=e.inputNTP),e.inputNTP>s&&(s=e.inputNTP))}),!(s-Q<g||s-Q>6e4)&&(this.log.info(`maxNTPTime ${s} minNTPTime ${Q}`,t),this.remoteAudioMap.forEach(({buffer:e},r)=>{if(!e)return;let c=s-e.inputNTP;this.log.info(`[${r}] ntpDelayToMaxNTPTime ${c}`),e.setTargetDelay(C+(s-Q)-c)}),this.checkIsMultiRemoteAudioAligned())}checkIsMultiRemoteAudioAligned(){let Q=0,s=0,t=[];this.remoteAudioMap.forEach(({buffer:r},c)=>{if(!r||r.outputNTP<0)return;let F=r.outputNTP;t.push({userId:c,ntp:F,bufferLen:r.length}),F>Q&&(Q=F),(s===0||F<s)&&(s=F)});let e=Q-s<g;return e||this.log.warn("isAligned",e,"ntp(max - min)",Q-s,t),e}}class o{constructor(Q,s){this.frame=Q,this.ntpTime=s}}class D{get inputNTP(){var Q;return((Q=this.data[this.data.length-1])==null?void 0:Q.ntpTime)||-1}get outputNTP(){var Q;return((Q=this.data[0])==null?void 0:Q.ntpTime)||-1}get length(){return this.data.length===0?0:this.data.length===1?20:(this.data[this.data.length-1].frame.timestamp-this.data[0].frame.timestamp)/48e3*1e3}get isOrdered(){return this.data.every((Q,s)=>s===0?!0:Q.frame.timestamp>this.data[s-1].frame.timestamp)}constructor(Q){this.minDelay=0,this.maxDelay=4e3,this.targetDelay=0,this.data=[],this.workerIntervalId=-1,this.workerIntervalTime=0,this.lastInputTime=0,this.lastOutputTime=0,this.userId=Q,this.log=new A("buf|"+Q)}startOutput(){this.workerIntervalId=setInterval(()=>{this.output(),this.workerIntervalTime&&Date.now()-this.workerIntervalTime>40&&this.log.warn(`worker interval delay ${Date.now()-this.workerIntervalTime}`),this.workerIntervalTime=Date.now()},20)}stopOutput(){clearInterval(this.workerIntervalId),this.workerIntervalId=-1}input(Q){this.lastInputTime=Date.now();let s=this.data.length-1,t=!1;for(;s>=0;s--)if(Q.frame.timestamp<this.data[s].frame.timestamp&&(s===0||Q.frame.timestamp>this.data[s-1].frame.timestamp)){t=!0;break}t?(this.data.splice(s,0,Q),this.isOrdered||this.log.warn("not ordered",this.data.map(e=>e.frame.timestamp/48))):this.data.push(Q),this.length>=this.targetDelay&&this.workerIntervalId===-1&&this.startOutput()}output(Q=!1,s=!1){var e;if(Date.now()-this.lastInputTime>2e3&&(this.log.warn("no input data over 2s"),(e=this.onNotData2s)==null||e.call(this)),this.length<=this.minDelay)return;if(Q&&this.length<=this.targetDelay){this.log.warn(`output to targetDelay ${this.length} -> ${this.targetDelay} done`);return}let t=this.data.shift();t&&this.onAudioFrame&&(this.lastOutputTime&&Date.now()-this.lastOutputTime>60&&this.log.warn("output delay",Date.now()-this.lastOutputTime,"buf len",this.length),this.lastOutputTime=Date.now(),this.onAudioFrame(t)),this.length===0&&this.onBufferEmpty&&(this.log.warn("onBufferEmpty"),this.onBufferEmpty()),this.length>=this.targetDelay+(Q?0:g)&&(Q||this.log.warn(this.userId,`output to targetDelay ${this.length} -> ${this.targetDelay}`),this.output(!0,!0))}waitBufferEmpty(){return new Promise(Q=>{this.onBufferEmpty=Q})}async setTargetDelay(Q){if(!(Q===this.targetDelay||Q<0||Math.abs(Q-this.targetDelay)<=20)){if(Q>this.maxDelay){this.log.warn(`cannot setTargetDelay ${Q} over ${this.maxDelay}`);return}this.minDelay=Math.max(0,Q-200),Q>this.targetDelay&&this.stopOutput(),this.targetDelay=Q,this.log.info(this.userId,"setTargetDelay",Q,"bufLen",this.length),Q===0&&await this.waitBufferEmpty()}}destroy(){this.log.warn("destroy"),this.data=[],this.stopOutput(),delete this.onAudioFrame}}let i=new B;self.onmessage=function(E){E.data.action==="remove"?i.removeRemoteAudio(E.data.remoteUserId,E.data.hasLeavingTag):(E.data.frameWithNtp&&i.onAudioFrame(E.data.remoteUserId,E.data.frameWithNtp,E.data.hasLeavingTag),E.data.writableStream&&(i.onWritableStream(E.data.remoteUserId,E.data.writableStream),console.warn("onmessage",E))),E.data.ntpOffset&&(I=E.data.ntpOffset)}}.toString(),kC=URL.createObjectURL(new Blob([JC.slice(JC.indexOf("{")+1,-1)],{type:"text/javascript"}));var cg=class{constructor(A){this.core=A;N(this,"log");N(this,"intervalId",-1);N(this,"audioAlignmentWorker");N(this,"remoteUserBufferLenMap",{});this.log=A.log.createChild({id:"aal-m"}),A.room.on(A.Enum.RoomEvent.REMOTE_PUBLISHED,this.onRemotePublished,this)}get remotePublishedUserMap(){return this.core.room.remotePublishedUserMap}onRemotePublished({userId:A,remoteAudioTrack:g}){g.on(this.core.Enum.RemoteTrackEvent.AUDIO_FRAME_WITH_NTP,({ntp:C,frame:B,hasLeavingTag:o})=>{if(!g.user.muteState.audioAvailable||!this.audioAlignmentWorker)return;let D={action:"add",remoteUserId:A,hasLeavingTag:o,frameWithNtp:{ntp:C,frame:{data:B.data,timestamp:B.timestamp}}},i=[B.data];g.trackGenerator||(g.initTrackGenerator(),D.writableStream=g.trackGenerator.writable,i.push(D.writableStream)),this.audioAlignmentWorker.postMessage(D,i)}),g.on(this.core.Enum.RemoteTrackEvent.FLAG_CHANGED,()=>{var C;g.user.muteState.audioAvailable||(g.deleteTrackGenerator(),(C=this.audioAlignmentWorker)==null||C.postMessage({action:"remove",remoteUserId:A}))})}start(){let A=this.core.rtcDectection.isWebCodecsSupported(),g=this.core.rtcDectection.isMediaStreamTrackGeneratorSupported();if(!A||!g){this.log.info(`not support webcodec: ${A} mediaStreamTrackGenerator: ${g}`);return}this.audioAlignmentWorker||(this.log.info("create worker"),this.audioAlignmentWorker=new Worker(kC),this.audioAlignmentWorker.onmessage=({data:C})=>{var B;C.remoteUserBufferLenMap?this.remoteUserBufferLenMap=C.remoteUserBufferLenMap:C.log?this.core.loggerManager.addLogToQueue(C.log.level,C.log.log,!1,this.core.room.userId,this.core.room.sdkAppId):C.removedUserId&&((B=this.remotePublishedUserMap.get(C.removedUserId))==null||B.remoteAudioTrack.deleteTrackGenerator())},this.audioAlignmentWorker.postMessage({ntpOffset:this.core.getNetworkTimeOffset()}))}stop(){this.audioAlignmentWorker&&(this.log.warn("stop"),this.audioAlignmentWorker.terminate(),delete this.audioAlignmentWorker,this.remotePublishedUserMap.forEach(A=>{A.remoteAudioTrack.deleteTrackGenerator()}))}};var Qi="publish-mix-stream-to-room",HC=(D=>(D.STARTED="started",D.STOPPED="stopped",D.REQUIRE_LOAD_MUSIC="require-load-music",D.SCORE_UPDATED="score-updated",D.PITCH_UPDATED="pitch-updated",D.PROGRESS_UPDATED="progress_updated",D))(HC||{}),KC=0,yA=class yA extends dC.EventEmitter{constructor(g){super();this.core=g;N(this,"disableRandomCall",!0);N(this,"trtcBGM");N(this,"log");N(this,"player");N(this,"leadSingerPlayerState",1);N(this,"role");N(this,"bgmUserId","");N(this,"bgmStartNTP",0);N(this,"sendSEIIntervalId",-1);N(this,"updateProgressAndPitchIntervalId",-1);N(this,"clearBlackVideoTrack");N(this,"isInitialized",!1);N(this,"BGM_AND_PITCH_UPDATE_INTERVAL",100);N(this,"isOnStartedEmitted",!1);N(this,"isBackSingerAutoStarted",!1);N(this,"audioAlignmentManager");this.log=g.log.createChild({id:yA.Name+ ++KC}),this.player=new Ng(this.core,KC),this.player.on(this.player.EVENT.MUSIC_LOADED,this.onMusicLoaded,this),this.player.on(this.player.EVENT.PLAYING,this.onPlaying,this),this.player.on(this.player.EVENT.STOPPED,this.onStopped,this),this.core.room.audioManager.enableEncodeNTPToAudioFrame(),this.audioAlignmentManager=new cg(this.core)}get isLeadSinger(){return this.role==="LeadSinger"}get isBackSinger(){return this.role==="BackSinger"}get isAudience(){return this.role===this.core.Enum.UserRole.AUDIENCE}get isStarted(){return this.isLeadSinger?!this.player.isStopped:this.leadSingerPlayerState!==1}async onMusicLoaded(){if(this.isLeadSinger&&this.startSendSEI(),this.isLeadSinger||this.isBackSinger)try{if(await this.player.yinsudaClient.initKtvScoreClient({song_id:this.player.musicId}),this.core.trtc.on(this.core.TRTC.EVENT.TRACK,g=>{if(g.track.kind==="audio"){let C=g.track.getSettings();this.player.yinsudaClient.setAudioParams({sampleRate:C.sampleRate||48e3,channels:C.channelCount||1})}}),this.core.trtc._localAudioTrack){this.log.warn("restart local audio for pitch issue");let g=this.core.trtc._localAudioConfig||void 0;await this.core.trtc.stopLocalAudio(),await this.core.trtc.startLocalAudio(g)}this.core.trtc.on(this.core.TRTC.EVENT.AUDIO_FRAME,this.onAudioFrame,this),this.player.on(this.player.EVENT.CURRENT_TIME_INDEX_UPDATED,({currentTime:g})=>{Promise.all([this.player.yinsudaClient.getScore({pts:g}).then(C=>Math.max(0,C.data.score)),this.player.yinsudaClient.getAverageScore({pts:g}).then(C=>C.data.averageScore),this.player.yinsudaClient.getTotalScore({pts:g}).then(C=>({totalScore:C.data.totalScore,maxScore:C.data.wholeScore}))]).then(([C,B,{totalScore:o,maxScore:D}])=>{this.emit("score-updated",{score:C,averageScore:B,totalScore:o,maxScore:D})})})}catch(g){this.log.error(g)}}onAudioFrame(g){if(this.player.currentTime===0)return;let C={buffer:Int16Array.from(g.data,B=>B*32767),pts:this.player.currentTime};this.player.yinsudaClient.processScore(C)}onPlaying(){var g;this.isLeadSinger&&!this.bgmStartNTP&&(this.bgmStartNTP=this.core.trtc.getNetworkTime(),(g=this.trtcBGM)==null||g.startLocalAudio({option:{audioTrack:this.player.initBGMAudioTrack(),captureVolume:this.player.volume,echoCancellation:!1,noiseSuppression:!1,autoGainControl:!1,profile:{bitrate:128,sampleRate:48e3,channelCount:2}}}))}async initialize(g){this.isInitialized||(this.isInitialized=!0,this.log.info(`initialize ${JSON.stringify(g)}`),g.role&&(this.role=g.role),g.updateInterval&&(this.BGM_AND_PITCH_UPDATE_INTERVAL=g.updateInterval),await this.player.initialize(g.yinsuda),g.bgm.userId&&(this.bgmUserId=g.bgm.userId),this.isLeadSinger&&g.bgm.sdkAppId&&this.createTRTCBGM(g.bgm),this.role&&(this.core.trtc.on(this.core.TRTC.EVENT.REMOTE_AUDIO_AVAILABLE,C=>{(this.isLeadSinger||this.isBackSinger)&&C.userId!==this.bgmUserId&&this.core.trtc.muteRemoteAudio(C.userId,!1)}),this.core.trtc.on(this.core.TRTC.EVENT.REMOTE_VIDEO_AVAILABLE,C=>{C.userId===this.bgmUserId&&!this.isLeadSinger&&this.core.trtc.startRemoteVideo({userId:C.userId,streamType:C.streamType})}),this.core.trtc.on(this.core.TRTC.EVENT.SEI_MESSAGE,async C=>{if(this.isLeadSinger)return;let B=JSON.parse(new TextDecoder().decode(C.data));B.params.music_id=ng(B.params.music_id),this.player.musicId!==B.params.music_id&&!this.isLeadSinger&&(this.player.musicId=B.params.music_id,this.emit("require-load-music",B.params.music_id)),this.onLeadSingerPlayerState(B.params.play_state);let o=this.core.trtc.getNetworkTime()-+B.params.bgm_progress_update_ntp,D=B.params.progress===0?0:B.params.progress+o;if(this.fixBGMProgress(D),this.isAudience){let i=this.audioAlignmentManager.remoteUserBufferLenMap[C.userId]||0;this.emit("progress_updated",{currentTime:D-i<0?0:D-i,duration:B.params.duration})}})),this.core.room.audioManager.enableDecodeNTPFromAudioFrame())}async createTRTCBGM(g){this.isLeadSinger&&(this.trtcBGM=this.core.TRTC.create({enableSEI:!0,businessInfo:JSON.stringify({Str_uc_params:{is_send_audio_filterable:!1}})}),this.trtcBGM.room.enableChorus=!0,await this.trtcBGM.enterRoom({sdkAppId:g.sdkAppId,userId:g.userId,userSig:g.userSig,roomId:g.roomId,strRoomId:g.strRoomId,role:this.core.TRTC.TYPE.ROLE_ANCHOR,autoReceiveAudio:!1}),this.trtcBGM.room.audioManager.enableEncodeNTPToAudioFrame())}async destroyTRTCBGM(){this.trtcBGM&&(this.stopSendSEI(),this.trtcBGM.room.audioManager.disableEncodeNTPToAudioFrame(),await this.trtcBGM.exitRoom(),this.trtcBGM.destroy(),delete this.trtcBGM)}fixBGMProgress(g){if(!this.isBackSinger||!this.player.isPlaying)return;Math.abs(g-this.player.currentTime)>80&&(this.log.warn(`fix bgm progress: ${g-this.player.currentTime}`),this.player.currentTime=g)}startCDN(){if(!this.isLeadSinger)return;let g={roomId:this.core.room.useStringRoomId?void 0:+this.core.room.roomId,strRoomId:this.core.room.useStringRoomId?this.core.room.roomId:void 0};this.core.trtc.startPlugin("CDNStreaming",{target:{publishMode:Qi,robotUser:gA({userId:`${this.core.room.roomId}_robot`},g)},encoding:{audioBitrate:128,audioChannels:2},mix:{videoLayoutList:[{fixedVideoUser:gA({userId:`${this.core.room.roomId}_bgm`},g),width:64,height:64,locationX:0,locationY:0,fixedVideoStreamType:"main",zOrder:1}]}})}startSendSEI(){!this.trtcBGM||this.sendSEIIntervalId!==-1||(this.trtcBGM.startLocalVideo({option:{videoTrack:gI(this.core.Timer,g=>{this.clearBlackVideoTrack=g}),profile:{bitrate:50}}}),this.trtcBGM.on(this.core.TRTC.EVENT.PUBLISH_STATE_CHANGED,g=>{g.state==="started"&&this.sendSEIIntervalId<0&&(this.log.debug("start send sei"),this.sendSEIIntervalId=this.core.Timer.run("intervalInWorker",()=>{if(!this.core.room.isJoined)return this.stopSendSEI();this.player.musicId&&this.doSendSEI()},{fps:5}))}))}doSendSEI(){var C;let g={api:"info",params:{music_id:GI(this.player.musicId)?this.player.musicId:FI(this.player.musicId),duration:this.player.duration,progress:this.player.currentTime,bgm_progress_update_ntp:String((this.trtcBGM||this.core.trtc).getNetworkTime()),bgm_start_ntp:String(this.bgmStartNTP),play_state:this.player.isPlaying?2:this.player.isStopped?1:3,use_local_mix:!0}};(C=this.trtcBGM)==null||C.sendSEIMessage(new TextEncoder().encode(JSON.stringify(g)).buffer)}stopSendSEI(){var g;(g=this.clearBlackVideoTrack)==null||g.call(this),this.core.Timer.clearTask(this.sendSEIIntervalId),this.sendSEIIntervalId=-1}async onStarted(){this.isOnStartedEmitted||(this.log.info("onStarted"),this.emit("started"),this.isOnStartedEmitted=!0,this.isAudience?(this.audioAlignmentManager.start(),this.log.info("auto start chorus for audience"),this.core.trtc.startPlugin("Chorus",{})):(this.updateProgressAndPitchIntervalId=this.core.Timer.run("interval",()=>{this.player.yinsudaClient.getRealTimePitch().then(g=>{this.emit("pitch-updated",{pitch:g.data.pitch})}),this.emit("progress_updated",{currentTime:this.player.currentTime,duration:this.player.duration})},{delay:this.BGM_AND_PITCH_UPDATE_INTERVAL}),this.autoStartBackSinger()))}async autoStartBackSinger(){!this.isBackSinger||!this.player.downloadMusicPromise.promise||(this.log.info("wait music download",this.player.downloadMusicPromise.promise),await this.player.downloadMusicPromise.promise,this.isBackSingerAutoStarted||(this.log.info("auto start chorus for backsinger"),this.core.trtc.startPlugin("Chorus",{}),this.isBackSingerAutoStarted=!0))}onStopped(){this.log.info("onStopped"),this.bgmStartNTP=0,this.core.clearStarted(this,this.getGroup()),this.player.stop(),this.reset(),this.emit("stopped")}onLeadSingerPlayerState(g){if(this.leadSingerPlayerState!==g)switch(this.leadSingerPlayerState=g,g){case 2:this.player.isPaused&&this.player.resume(),this.onStarted();break;case 3:this.player.pause();break;case 1:this.onStopped();break;default:break}}getName(){return yA.Name}getAlias(){return"ktv"}getGroup(){return"ktv"}getValidateRule(g){switch(g){case"start":return nI;case"update":return MI(this.core);case"stop":return SI}}async start(g){this.isAudience||(typeof g.useOriginalSong=="boolean"&&this.player.switchMusicTrack(g.useOriginalSong),typeof g.isSelected=="boolean"&&this.switchSelected(g.isSelected),this.isLeadSinger&&this.startSendSEI(),g.bgmVolume&&this.player.setVolume(g.bgmVolume),await this.player.play(),this.isLeadSinger&&this.onStarted())}async update(g){var C;typeof g.useOriginalSong=="boolean"&&this.player.switchMusicTrack(g.useOriginalSong),typeof g.isSelected=="boolean"&&this.switchSelected(g.isSelected),g.bgmAction&&await this.player[g.bgmAction](),g.role&&g.role!==this.role&&(await this.switchRole(g.role,g.bgm),this.isLeadSinger&&this.startSendSEI()),typeof g.bgmVolume=="number"&&((C=this.trtcBGM)==null||C.updateLocalAudio({option:{captureVolume:g.bgmVolume}}),this.player.setVolume(g.bgmVolume))}async stop(){this.player.isStopped||(this.player.stop(),this.reset(),this.emit("stopped"))}async switchRole(g,C){if(g===this.role)return;let B=this.role===this.core.Enum.UserRole.AUDIENCE,o=this.role==="LeadSinger",D=this.role==="BackSinger",i=g==="LeadSinger",E=g==="BackSinger",Q=g===this.core.Enum.UserRole.AUDIENCE;this.onStopped(),this.role=g,await this.core.trtc.switchRole(Q?this.core.TRTC.TYPE.ROLE_AUDIENCE:this.core.TRTC.TYPE.ROLE_ANCHOR),B&&i?(this.createTRTCBGM(C),this.core.room.autoReceiveAudio=!1,this.player.clearMusic()):o&&Q?(this.doSendSEI(),setTimeout(()=>this.destroyTRTCBGM(),200),this.core.room.autoReceiveAudio=!0,this.player.clearMusic()):B&&E&&!this.player.isMusicDownloaded&&this.player.musicId&&await this.player.loadMusic({musicId:this.player.musicId,isNeedDownloadMusic:!0,isNeedLyric:!this.player.isLyricDownloaded,isNeedPitch:!this.player.isPitchDownloaded}),this.core.room.remotePublishedUserMap.forEach(s=>{s.remoteAudioTrack.player.setTrack(s.remoteAudioTrack.outMediaTrack)}),this.core.room.remotePublishedUserMap.has(this.bgmUserId)&&(i||this.core.trtc.muteRemoteAudio(this.bgmUserId,this.isBackSinger),await this.onStarted(),E&&this.autoStartBackSinger())}async switchSelected(g){this.isAudience||await this.core.room.signalChannel.sendWaitForResponse({command:"abstract_cmd",data:{cmd:"UpdateChannelMediaOptions",data:{is_send_audio_filterable:!g}},responseCommand:"custom-cmd-res"})}reset(){this.bgmStartNTP=0,this.isOnStartedEmitted=!1,this.isBackSinger&&(this.isBackSingerAutoStarted=!1),this.trtcBGM&&this.trtcBGM.stopLocalAudio(),this.isAudience?this.audioAlignmentManager.stop():(this.player.yinsudaClient.reset(),this.core.Timer.clearTask(this.updateProgressAndPitchIntervalId),this.updateProgressAndPitchIntervalId=-1)}destroy(){this.isInitialized=!1,this.stop(),this.destroyTRTCBGM(),this.core.room.audioManager.disableEncodeNTPToAudioFrame(),this.core.room.audioManager.disableDecodeNTPFromAudioFrame(),delete this.core,this.player.off(this.player.EVENT.MUSIC_LOADED,this.onMusicLoaded,this),this.player.off(this.player.EVENT.PLAYING,this.onPlaying,this),this.player.off(this.player.EVENT.STOPPED,this.onStopped,this),delete this.player}};N(yA,"EVENT",HC),N(yA,"decodeIdWithPrefix",ng),N(yA,"Name","Chorus");var hg=yA;var Ei=hg;return xC(ii);})().default;
25
+ `;return this.lyricStartTimeList=C.split(B).map(o=>{let D=o.match(/\[(\d+),/);if(D)return+D[1]}).filter(o=>typeof o=="number"),this.lyric=C,C}async getPitch(g){let{pitch:C}=await Z.getPitchData({song_id:g});return this.log.info("getPitchData success"),this.pitchList=C,C}async play(){if(!this.originalPlayer||!this.accompanyPlayer||this.isPlaying)return;this.setVolume(this.volume);let g=this.originalPlayer.play(),C=this.accompanyPlayer.play();this.originalPlayer.setMuted(!this.useOriginalSong),this.accompanyPlayer.setMuted(this.useOriginalSong),this.originalPlayer.on("time-updated",B=>this.onTimeUpdated(this.originalPlayer,B)),this.originalPlayer.on("player-state-changed",B=>this.onPlayerStateChange(this.originalPlayer,B.state)),this.accompanyPlayer.on("time-updated",B=>this.onTimeUpdated(this.accompanyPlayer,B)),this.accompanyPlayer.on("player-state-changed",B=>this.onPlayerStateChange(this.accompanyPlayer,B.state));try{await(this.useOriginalSong?g:C)}catch(B){if(B.message.includes("NotAllowedError"))this.handleAutoPlayFailed();else throw B}}async pause(){var B,o;let g=(B=this.originalPlayer)==null?void 0:B.pause(),C=(o=this.accompanyPlayer)==null?void 0:o.pause();await Promise.all([g,C])}async resume(){var B,o;let g=(B=this.originalPlayer)==null?void 0:B.resume(),C=(o=this.accompanyPlayer)==null?void 0:o.resume();await Promise.all([g,C])}stop(){var g,C,B,o;(g=this.originalPlayer)==null||g.stop(),(C=this.accompanyPlayer)==null||C.stop(),(B=this.originalPlayer)==null||B.removeAllListeners(),(o=this.accompanyPlayer)==null||o.removeAllListeners(),delete this.bgmAudioTrack,this.audioSourceNodes.forEach(D=>D.disconnect())}switchMusicTrack(g){var C,B;this.useOriginalSong=g,(C=this.originalPlayer)==null||C.setMuted(!g),(B=this.accompanyPlayer)==null||B.setMuted(g)}onTimeUpdated(g,C){if(g===this.player&&(this.fixBGMProgress(),this.emit("progress_updated",{currentTime:C,duration:this.player.duration}),this.lyricStartTimeList)){let B=Bi(C,this.lyricStartTimeList);B!==this.currentTimeIndex&&(this.currentTimeIndex=B,this.emit("current_time_index_updated",{currentTime:C,currentTimeIndex:B}))}}fixBGMProgress(){!this.originalPlayer||!this.accompanyPlayer||!this.player||this.originalPlayer.currentTime-this.accompanyPlayer.currentTime>80&&(this.originalPlayer.currentTime=this.player.currentTime,this.accompanyPlayer.currentTime=this.player.currentTime)}onPlayerStateChange(g,C){g===this.player&&(C==="PLAYING"?this.emit(this.EVENT.PLAYING):C==="PAUSED"?this.emit(this.EVENT.PAUSED):C==="STOPPED"&&(this.stop(),this.emit(this.EVENT.STOPPED)))}handleAutoPlayFailed(){if(this.core.room.enableAutoPlayDialog)new this.core.AutoPlayDialog;else{let g=()=>{var C;(C=this.player)==null||C.resume().then(()=>{document.removeEventListener("click",g,!0)})};document.addEventListener("click",g,!0)}}initBGMAudioTrack(){var D,i;if(this.bgmAudioTrack)return this.bgmAudioTrack;if(!((D=this.originalPlayer)!=null&&D.element)||!((i=this.accompanyPlayer)!=null&&i.element))return;let{audioContext:g}=this.core,C=g.createMediaElementSource(this.originalPlayer.element),B=g.createMediaElementSource(this.accompanyPlayer.element),o=g.createMediaStreamDestination();return C.connect(o),B.connect(o),C.connect(g.destination),B.connect(g.destination),this.bgmAudioTrack=o.stream.getAudioTracks()[0],this.audioSourceNodes=[C,B],this.bgmAudioTrack}setVolume(g){var C,B;g<0||g>100||(this.volume=g,(C=this.originalPlayer)==null||C.setVolume(this.volume/100),(B=this.accompanyPlayer)==null||B.setVolume(this.volume/100))}clearMusic(){delete this.musicId,delete this.downloadedMusicId,delete this.lyric,delete this.pitchList,this.originalURL&&URL.revokeObjectURL(this.originalURL),this.accompanyURL&&URL.revokeObjectURL(this.accompanyURL),delete this.originalURL,delete this.accompanyURL,delete this.originalPlayer,delete this.accompanyPlayer}};var dC=AI(vg(),1);var JC=function(){let I=0;class A{constructor(Q){Q&&(this.userId=Q),this.name="aa-wk"}getPrevFix(Q){return`[${this.timestamp}] <${Q.toUpperCase()}> [${this.name}${this.userId?`|${this.userId}`:""}]`}get timestamp(){let Q=new Date;Q.setTime(Date.now()+I);let s=String(Q.getMilliseconds());return"padStart"in String.prototype&&(s=s.toString().padStart(3,"0")),`${Q.toTimeString().replace(/.*(\d{2}:\d{2}:\d{2}).*/,"$1")}:${s}`}log(Q,s,...t){let e=this.getPrevFix(Q);console[Q](e,...t),postMessage({log:{log:[e,...t],level:s,userId:this.userId}})}debug(...Q){this.log("debug",1,...Q)}info(...Q){this.log("info",2,...Q)}warn(...Q){this.log("warn",3,...Q)}error(...Q){this.log("error",4,...Q)}}let g=80,C=300;class B{constructor(){this.remoteAudioMap=new Map,this.log=new A,this.log.info("DEFAULT_BUFFER_LEN",C,"MULTI_AUDIO_ALIGN_TARGET_DELAY",g),this.doMultiRemoteAudioAlignment(),setInterval(()=>{this.doMultiRemoteAudioAlignment();let Q={};this.remoteAudioMap.forEach(({buffer:s},t)=>{Q[t]=(s==null?void 0:s.length)||0}),postMessage({remoteUserBufferLenMap:Q})},2e3)}async removeRemoteAudio(Q,s=!1){if(!this.remoteAudioMap.has(Q))return;this.log.warn("removeRemoteAudio",Q,"hasLeavingTag",s);let t=this.remoteAudioMap.get(Q)||{},{buffer:e,writer:r,audioDecoder:c}=t;e==null||e.destroy(),c==null||c.close(),r==null||r.abort(),this.remoteAudioMap.delete(Q),postMessage({removedUserId:Q})}onAudioFrame(Q,s,t=!1){let e=this.remoteAudioMap.get(Q)||{};e.audioDecoder||(e.audioDecoder=new AudioDecoder({error:r=>this.log.error(`[${Q}] audio decoder error`,r),output:r=>{var c;(c=e.writer)==null||c.write(r).catch(F=>{this.log.warn(`[${Q}] writer write error`,F)})}}),e.audioDecoder.configure({codec:"opus",sampleRate:48e3,numberOfChannels:2})),e.buffer||(e.buffer=new D(Q),e.buffer.setTargetDelay(C),e.buffer.onAudioFrame=r=>{var c;((c=e.audioDecoder)==null?void 0:c.state)==="configured"&&e.audioDecoder.decode(r.frame)},e.buffer.onNotData2s=()=>{var r;(r=this.remoteAudioMap.get(Q))!=null&&r.hasLeavingTag&&(this.log.warn("no input data over 2s and hasLeavingTag, removeRemoteAudio",Q),this.removeRemoteAudio(Q,!0))}),e.buffer.input(new o(new EncodedAudioChunk({data:s.frame.data,timestamp:s.frame.timestamp,type:"key"}),s.ntp)),e.hasLeavingTag=t,t&&(e.buffer.minDelay=0),this.remoteAudioMap.set(Q,e)}onWritableStream(Q,s){this.log.warn("onWritableStream",Q);let t=this.remoteAudioMap.get(Q)||{};t.writer=s.getWriter(),this.remoteAudioMap.set(Q,t)}doMultiRemoteAudioAlignment(){if(this.remoteAudioMap.size<2||this.checkIsMultiRemoteAudioAligned())return;let Q=0,s=0,t={};this.remoteAudioMap.forEach(({buffer:e},r)=>{!e||e.inputNTP<0||(t[r]=e.inputNTP,(Q===0||e.inputNTP<Q)&&(Q=e.inputNTP),e.inputNTP>s&&(s=e.inputNTP))}),!(s-Q<g||s-Q>6e4)&&(this.log.info(`maxNTPTime ${s} minNTPTime ${Q}`,t),this.remoteAudioMap.forEach(({buffer:e},r)=>{if(!e)return;let c=s-e.inputNTP;this.log.info(`[${r}] ntpDelayToMaxNTPTime ${c}`),e.setTargetDelay(C+(s-Q)-c)}),this.checkIsMultiRemoteAudioAligned())}checkIsMultiRemoteAudioAligned(){let Q=0,s=0,t=[];this.remoteAudioMap.forEach(({buffer:r},c)=>{if(!r||r.outputNTP<0)return;let F=r.outputNTP;t.push({userId:c,ntp:F,bufferLen:r.length}),F>Q&&(Q=F),(s===0||F<s)&&(s=F)});let e=Q-s<g;return e||this.log.warn("isAligned",e,"ntp(max - min)",Q-s,t),e}}class o{constructor(Q,s){this.frame=Q,this.ntpTime=s}}class D{get inputNTP(){var Q;return((Q=this.data[this.data.length-1])==null?void 0:Q.ntpTime)||-1}get outputNTP(){var Q;return((Q=this.data[0])==null?void 0:Q.ntpTime)||-1}get length(){return this.data.length===0?0:this.data.length===1?20:(this.data[this.data.length-1].frame.timestamp-this.data[0].frame.timestamp)/48e3*1e3}get isOrdered(){return this.data.every((Q,s)=>s===0?!0:Q.frame.timestamp>this.data[s-1].frame.timestamp)}constructor(Q){this.minDelay=0,this.maxDelay=4e3,this.targetDelay=0,this.data=[],this.workerIntervalId=-1,this.workerIntervalTime=0,this.lastInputTime=0,this.lastOutputTime=0,this.userId=Q,this.log=new A("buf|"+Q)}startOutput(){this.workerIntervalId=setInterval(()=>{this.output(),this.workerIntervalTime&&Date.now()-this.workerIntervalTime>40&&this.log.warn(`worker interval delay ${Date.now()-this.workerIntervalTime}`),this.workerIntervalTime=Date.now()},20)}stopOutput(){clearInterval(this.workerIntervalId),this.workerIntervalId=-1}input(Q){this.lastInputTime=Date.now();let s=this.data.length-1,t=!1;for(;s>=0;s--)if(Q.frame.timestamp<this.data[s].frame.timestamp&&(s===0||Q.frame.timestamp>this.data[s-1].frame.timestamp)){t=!0;break}t?(this.data.splice(s,0,Q),this.isOrdered||this.log.warn("not ordered",this.data.map(e=>e.frame.timestamp/48))):this.data.push(Q),this.length>=this.targetDelay&&this.workerIntervalId===-1&&this.startOutput()}output(Q=!1,s=!1){var e;if(Date.now()-this.lastInputTime>2e3&&((e=this.onNotData2s)==null||e.call(this)),this.length<=this.minDelay)return;if(Q&&this.length<=this.targetDelay){this.log.warn(`output to targetDelay ${this.length} -> ${this.targetDelay} done`);return}let t=this.data.shift();t&&this.onAudioFrame&&(this.lastOutputTime&&Date.now()-this.lastOutputTime>60&&this.log.warn("output delay",Date.now()-this.lastOutputTime,"buf len",this.length),this.lastOutputTime=Date.now(),this.onAudioFrame(t)),this.length===0&&this.onBufferEmpty&&(this.log.warn("onBufferEmpty"),this.onBufferEmpty()),this.length>=this.targetDelay+(Q?0:g)&&(Q||this.log.warn(this.userId,`output to targetDelay ${this.length} -> ${this.targetDelay}`),this.output(!0,!0))}waitBufferEmpty(){return new Promise(Q=>{this.onBufferEmpty=Q})}async setTargetDelay(Q){if(!(Q===this.targetDelay||Q<0||Math.abs(Q-this.targetDelay)<=20)){if(Q>this.maxDelay){this.log.warn(`cannot setTargetDelay ${Q} over ${this.maxDelay}`);return}this.minDelay=Math.max(0,Q-200),Q>this.targetDelay&&this.stopOutput(),this.targetDelay=Q,this.log.info(this.userId,"setTargetDelay",Q,"bufLen",this.length),Q===0&&await this.waitBufferEmpty()}}destroy(){this.log.warn("destroy"),this.data=[],this.stopOutput(),delete this.onAudioFrame}}let i=new B;self.onmessage=function(E){E.data.action==="remove"?i.removeRemoteAudio(E.data.remoteUserId,E.data.hasLeavingTag):(E.data.frameWithNtp&&i.onAudioFrame(E.data.remoteUserId,E.data.frameWithNtp,E.data.hasLeavingTag),E.data.writableStream&&(i.onWritableStream(E.data.remoteUserId,E.data.writableStream),console.warn("onmessage",E))),E.data.ntpOffset&&(I=E.data.ntpOffset)}}.toString(),kC=URL.createObjectURL(new Blob([JC.slice(JC.indexOf("{")+1,-1)],{type:"text/javascript"}));var cg=class{constructor(A){this.core=A;N(this,"log");N(this,"intervalId",-1);N(this,"audioAlignmentWorker");N(this,"remoteUserBufferLenMap",{});this.log=A.log.createChild({id:"aal-m"}),A.room.on(A.Enum.RoomEvent.REMOTE_PUBLISHED,this.onRemotePublished,this)}get remotePublishedUserMap(){return this.core.room.remotePublishedUserMap}onRemotePublished({userId:A,remoteAudioTrack:g}){g.on(this.core.Enum.RemoteTrackEvent.AUDIO_FRAME_WITH_NTP,({ntp:C,frame:B,hasLeavingTag:o})=>{if(!g.user.muteState.audioAvailable||!this.audioAlignmentWorker)return;let D={action:"add",remoteUserId:A,hasLeavingTag:o,frameWithNtp:{ntp:C,frame:{data:B.data,timestamp:B.timestamp}}},i=[B.data];g.trackGenerator||(g.initTrackGenerator(),D.writableStream=g.trackGenerator.writable,i.push(D.writableStream)),this.audioAlignmentWorker.postMessage(D,i)}),g.on(this.core.Enum.RemoteTrackEvent.FLAG_CHANGED,()=>{var C;g.user.muteState.audioAvailable||(g.deleteTrackGenerator(),(C=this.audioAlignmentWorker)==null||C.postMessage({action:"remove",remoteUserId:A}))})}start(){let A=this.core.rtcDectection.isWebCodecsSupported(),g=this.core.rtcDectection.isMediaStreamTrackGeneratorSupported();if(!A||!g){this.log.info(`not support webcodec: ${A} mediaStreamTrackGenerator: ${g}`);return}this.audioAlignmentWorker||(this.log.info("create worker"),this.audioAlignmentWorker=new Worker(kC),this.audioAlignmentWorker.onmessage=({data:C})=>{var B;C.remoteUserBufferLenMap?this.remoteUserBufferLenMap=C.remoteUserBufferLenMap:C.log?this.core.loggerManager.addLogToQueue(C.log.level,C.log.log,!1,this.core.room.userId,this.core.room.sdkAppId):C.removedUserId&&((B=this.remotePublishedUserMap.get(C.removedUserId))==null||B.remoteAudioTrack.deleteTrackGenerator())},this.audioAlignmentWorker.postMessage({ntpOffset:this.core.getNetworkTimeOffset()}))}stop(){this.audioAlignmentWorker&&(this.log.warn("stop"),this.audioAlignmentWorker.terminate(),delete this.audioAlignmentWorker,this.remotePublishedUserMap.forEach(A=>{A.remoteAudioTrack.deleteTrackGenerator()}))}};var Qi="publish-mix-stream-to-room",HC=(D=>(D.STARTED="started",D.STOPPED="stopped",D.REQUIRE_LOAD_MUSIC="require-load-music",D.SCORE_UPDATED="score-updated",D.PITCH_UPDATED="pitch-updated",D.PROGRESS_UPDATED="progress_updated",D))(HC||{}),KC=0,yA=class yA extends dC.EventEmitter{constructor(g){super();this.core=g;N(this,"disableRandomCall",!0);N(this,"trtcBGM");N(this,"log");N(this,"player");N(this,"leadSingerPlayerState",1);N(this,"role");N(this,"bgmUserId","");N(this,"bgmStartNTP",0);N(this,"sendSEIIntervalId",-1);N(this,"updateProgressAndPitchIntervalId",-1);N(this,"clearBlackVideoTrack");N(this,"isInitialized",!1);N(this,"BGM_AND_PITCH_UPDATE_INTERVAL",100);N(this,"isOnStartedEmitted",!1);N(this,"isBackSingerAutoStarted",!1);N(this,"audioAlignmentManager");this.log=g.log.createChild({id:yA.Name+ ++KC}),this.player=new Ng(this.core,KC),this.player.on(this.player.EVENT.MUSIC_LOADED,this.onMusicLoaded,this),this.player.on(this.player.EVENT.PLAYING,this.onPlaying,this),this.player.on(this.player.EVENT.STOPPED,this.onStopped,this),this.core.room.audioManager.enableEncodeNTPToAudioFrame(),this.audioAlignmentManager=new cg(this.core)}get isLeadSinger(){return this.role==="LeadSinger"}get isBackSinger(){return this.role==="BackSinger"}get isAudience(){return this.role===this.core.Enum.UserRole.AUDIENCE}get isStarted(){return this.isLeadSinger?!this.player.isStopped:this.leadSingerPlayerState!==1}async onMusicLoaded(){if(this.isLeadSinger&&this.startSendSEI(),this.isLeadSinger||this.isBackSinger)try{if(await this.player.yinsudaClient.initKtvScoreClient({song_id:this.player.musicId}),this.core.trtc.on(this.core.TRTC.EVENT.TRACK,g=>{if(g.track.kind==="audio"){let C=g.track.getSettings();this.player.yinsudaClient.setAudioParams({sampleRate:C.sampleRate||48e3,channels:C.channelCount||1})}}),this.core.trtc._localAudioTrack){this.log.warn("restart local audio for pitch issue");let g=this.core.trtc._localAudioConfig||void 0;await this.core.trtc.stopLocalAudio(),await this.core.trtc.startLocalAudio(g)}this.core.trtc.on(this.core.TRTC.EVENT.AUDIO_FRAME,this.onAudioFrame,this),this.player.on(this.player.EVENT.CURRENT_TIME_INDEX_UPDATED,({currentTime:g})=>{Promise.all([this.player.yinsudaClient.getScore({pts:g}).then(C=>Math.max(0,C.data.score)),this.player.yinsudaClient.getAverageScore({pts:g}).then(C=>C.data.averageScore),this.player.yinsudaClient.getTotalScore({pts:g}).then(C=>({totalScore:C.data.totalScore,maxScore:C.data.wholeScore}))]).then(([C,B,{totalScore:o,maxScore:D}])=>{this.emit("score-updated",{score:C,averageScore:B,totalScore:o,maxScore:D})})})}catch(g){this.log.error(g)}}onAudioFrame(g){if(this.player.currentTime===0)return;let C={buffer:Int16Array.from(g.data,B=>B*32767),pts:this.player.currentTime};this.player.yinsudaClient.processScore(C)}onPlaying(){var g;this.isLeadSinger&&!this.bgmStartNTP&&(this.bgmStartNTP=this.core.trtc.getNetworkTime(),(g=this.trtcBGM)==null||g.startLocalAudio({option:{audioTrack:this.player.initBGMAudioTrack(),captureVolume:this.player.volume,echoCancellation:!1,noiseSuppression:!1,autoGainControl:!1,profile:{bitrate:128,sampleRate:48e3,channelCount:2}}}))}async initialize(g){this.isInitialized||(this.isInitialized=!0,this.log.info(`initialize ${JSON.stringify(g)}`),g.role&&(this.role=g.role),g.updateInterval&&(this.BGM_AND_PITCH_UPDATE_INTERVAL=g.updateInterval),await this.player.initialize(g.yinsuda),g.bgm.userId&&(this.bgmUserId=g.bgm.userId),this.isLeadSinger&&g.bgm.sdkAppId&&this.createTRTCBGM(g.bgm),this.role&&(this.core.trtc.on(this.core.TRTC.EVENT.REMOTE_AUDIO_AVAILABLE,C=>{(this.isLeadSinger||this.isBackSinger)&&C.userId!==this.bgmUserId&&this.core.trtc.muteRemoteAudio(C.userId,!1)}),this.core.trtc.on(this.core.TRTC.EVENT.REMOTE_VIDEO_AVAILABLE,C=>{C.userId===this.bgmUserId&&!this.isLeadSinger&&this.core.trtc.startRemoteVideo({userId:C.userId,streamType:C.streamType})}),this.core.trtc.on(this.core.TRTC.EVENT.SEI_MESSAGE,async C=>{if(this.isLeadSinger)return;let B=JSON.parse(new TextDecoder().decode(C.data));B.params.music_id=ng(B.params.music_id),this.player.musicId!==B.params.music_id&&!this.isLeadSinger&&(this.player.musicId=B.params.music_id,this.emit("require-load-music",B.params.music_id)),this.onLeadSingerPlayerState(B.params.play_state);let o=this.core.trtc.getNetworkTime()-+B.params.bgm_progress_update_ntp,D=B.params.progress===0?0:B.params.progress+o;if(this.fixBGMProgress(D),this.isAudience){let i=this.audioAlignmentManager.remoteUserBufferLenMap[C.userId]||0;this.emit("progress_updated",{currentTime:D-i<0?0:D-i,duration:B.params.duration})}})),this.core.room.audioManager.enableDecodeNTPFromAudioFrame())}async createTRTCBGM(g){this.isLeadSinger&&(this.trtcBGM=this.core.TRTC.create({enableSEI:!0,businessInfo:JSON.stringify({Str_uc_params:{is_send_audio_filterable:!1}})}),this.trtcBGM.room.enableChorus=!0,await this.trtcBGM.enterRoom({sdkAppId:g.sdkAppId,userId:g.userId,userSig:g.userSig,roomId:g.roomId,strRoomId:g.strRoomId,role:this.core.TRTC.TYPE.ROLE_ANCHOR,autoReceiveAudio:!1}),this.trtcBGM.room.audioManager.enableEncodeNTPToAudioFrame())}async destroyTRTCBGM(){this.trtcBGM&&(this.stopSendSEI(),this.trtcBGM.room.audioManager.disableEncodeNTPToAudioFrame(),await this.trtcBGM.exitRoom(),this.trtcBGM.destroy(),delete this.trtcBGM)}fixBGMProgress(g){if(!this.isBackSinger||!this.player.isPlaying)return;Math.abs(g-this.player.currentTime)>80&&(this.log.warn(`fix bgm progress: ${g-this.player.currentTime}`),this.player.currentTime=g)}startCDN(){if(!this.isLeadSinger)return;let g={roomId:this.core.room.useStringRoomId?void 0:+this.core.room.roomId,strRoomId:this.core.room.useStringRoomId?this.core.room.roomId:void 0};this.core.trtc.startPlugin("CDNStreaming",{target:{publishMode:Qi,robotUser:gA({userId:`${this.core.room.roomId}_robot`},g)},encoding:{audioBitrate:128,audioChannels:2},mix:{videoLayoutList:[{fixedVideoUser:gA({userId:`${this.core.room.roomId}_bgm`},g),width:64,height:64,locationX:0,locationY:0,fixedVideoStreamType:"main",zOrder:1}]}})}startSendSEI(){!this.trtcBGM||this.sendSEIIntervalId!==-1||(this.trtcBGM.startLocalVideo({option:{videoTrack:gI(this.core.Timer,g=>{this.clearBlackVideoTrack=g}),profile:{bitrate:50}}}),this.trtcBGM.on(this.core.TRTC.EVENT.PUBLISH_STATE_CHANGED,g=>{g.state==="started"&&this.sendSEIIntervalId<0&&(this.log.debug("start send sei"),this.sendSEIIntervalId=this.core.Timer.run("intervalInWorker",()=>{if(!this.core.room.isJoined)return this.stopSendSEI();this.player.musicId&&this.doSendSEI()},{fps:5}))}))}doSendSEI(){var C;let g={api:"info",params:{music_id:GI(this.player.musicId)?this.player.musicId:FI(this.player.musicId),duration:this.player.duration,progress:this.player.currentTime,bgm_progress_update_ntp:String((this.trtcBGM||this.core.trtc).getNetworkTime()),bgm_start_ntp:String(this.bgmStartNTP),play_state:this.player.isPlaying?2:this.player.isStopped?1:3,use_local_mix:!0}};(C=this.trtcBGM)==null||C.sendSEIMessage(new TextEncoder().encode(JSON.stringify(g)).buffer)}stopSendSEI(){var g;(g=this.clearBlackVideoTrack)==null||g.call(this),this.core.Timer.clearTask(this.sendSEIIntervalId),this.sendSEIIntervalId=-1}async onStarted(){this.isOnStartedEmitted||(this.log.info("onStarted"),this.emit("started"),this.isOnStartedEmitted=!0,this.isAudience?(this.audioAlignmentManager.start(),this.log.info("auto start chorus for audience"),this.core.trtc.startPlugin("Chorus",{})):(this.updateProgressAndPitchIntervalId=this.core.Timer.run("interval",()=>{this.player.yinsudaClient.getRealTimePitch().then(g=>{this.emit("pitch-updated",{pitch:g.data.pitch})}),this.emit("progress_updated",{currentTime:this.player.currentTime,duration:this.player.duration})},{delay:this.BGM_AND_PITCH_UPDATE_INTERVAL}),this.autoStartBackSinger()))}async autoStartBackSinger(){!this.isBackSinger||!this.player.downloadMusicPromise.promise||(this.log.info("wait music download",this.player.downloadMusicPromise.promise),await this.player.downloadMusicPromise.promise,this.isBackSingerAutoStarted||(this.log.info("auto start chorus for backsinger"),this.core.trtc.startPlugin("Chorus",{}),this.isBackSingerAutoStarted=!0))}onStopped(){this.log.info("onStopped"),this.bgmStartNTP=0,this.core.clearStarted(this,this.getGroup()),this.player.stop(),this.reset(),this.emit("stopped")}onLeadSingerPlayerState(g){if(this.leadSingerPlayerState!==g)switch(this.leadSingerPlayerState=g,g){case 2:this.player.isPaused&&this.player.resume(),this.onStarted();break;case 3:this.player.pause();break;case 1:this.onStopped();break;default:break}}getName(){return yA.Name}getAlias(){return"ktv"}getGroup(){return"ktv"}getValidateRule(g){switch(g){case"start":return nI;case"update":return MI(this.core);case"stop":return SI}}async start(g){this.isAudience||(typeof g.useOriginalSong=="boolean"&&this.player.switchMusicTrack(g.useOriginalSong),typeof g.isSelected=="boolean"&&this.switchSelected(g.isSelected),this.isLeadSinger&&this.startSendSEI(),g.bgmVolume&&this.player.setVolume(g.bgmVolume),await this.player.play(),this.isLeadSinger&&this.onStarted())}async update(g){var C;typeof g.useOriginalSong=="boolean"&&this.player.switchMusicTrack(g.useOriginalSong),typeof g.isSelected=="boolean"&&this.switchSelected(g.isSelected),g.bgmAction&&await this.player[g.bgmAction](),g.role&&g.role!==this.role&&(await this.switchRole(g.role,g.bgm),this.isLeadSinger&&this.startSendSEI()),typeof g.bgmVolume=="number"&&((C=this.trtcBGM)==null||C.updateLocalAudio({option:{captureVolume:g.bgmVolume}}),this.player.setVolume(g.bgmVolume))}async stop(){this.player.isStopped||(this.player.stop(),this.reset(),this.emit("stopped"))}async switchRole(g,C){if(g===this.role)return;let B=this.role===this.core.Enum.UserRole.AUDIENCE,o=this.role==="LeadSinger",D=this.role==="BackSinger",i=g==="LeadSinger",E=g==="BackSinger",Q=g===this.core.Enum.UserRole.AUDIENCE;this.onStopped(),this.role=g,await this.core.trtc.switchRole(Q?this.core.TRTC.TYPE.ROLE_AUDIENCE:this.core.TRTC.TYPE.ROLE_ANCHOR),B&&i?(this.createTRTCBGM(C),this.core.room.autoReceiveAudio=!1,this.player.clearMusic()):o&&Q?(this.doSendSEI(),setTimeout(()=>this.destroyTRTCBGM(),200),this.core.room.autoReceiveAudio=!0,this.player.clearMusic()):B&&E&&!this.player.isMusicDownloaded&&this.player.musicId&&await this.player.loadMusic({musicId:this.player.musicId,isNeedDownloadMusic:!0,isNeedLyric:!this.player.isLyricDownloaded,isNeedPitch:!this.player.isPitchDownloaded}),this.core.room.remotePublishedUserMap.forEach(s=>{s.remoteAudioTrack.player.setTrack(s.remoteAudioTrack.outMediaTrack)}),this.core.room.remotePublishedUserMap.has(this.bgmUserId)&&(i||this.core.trtc.muteRemoteAudio(this.bgmUserId,this.isBackSinger),await this.onStarted(),E&&this.autoStartBackSinger())}async switchSelected(g){this.isAudience||await this.core.room.signalChannel.sendWaitForResponse({command:"abstract_cmd",data:{cmd:"UpdateChannelMediaOptions",data:{is_send_audio_filterable:!g}},responseCommand:"custom-cmd-res"})}reset(){this.bgmStartNTP=0,this.isOnStartedEmitted=!1,this.isBackSinger&&(this.isBackSingerAutoStarted=!1),this.trtcBGM&&this.trtcBGM.stopLocalAudio(),this.isAudience?this.audioAlignmentManager.stop():(this.player.yinsudaClient.reset(),this.core.Timer.clearTask(this.updateProgressAndPitchIntervalId),this.updateProgressAndPitchIntervalId=-1)}destroy(){this.isInitialized=!1,this.stop(),this.destroyTRTCBGM(),this.core.room.audioManager.disableEncodeNTPToAudioFrame(),this.core.room.audioManager.disableDecodeNTPFromAudioFrame(),delete this.core,this.player.off(this.player.EVENT.MUSIC_LOADED,this.onMusicLoaded,this),this.player.off(this.player.EVENT.PLAYING,this.onPlaying,this),this.player.off(this.player.EVENT.STOPPED,this.onStopped,this),delete this.player}};N(yA,"EVENT",HC),N(yA,"decodeIdWithPrefix",ng),N(yA,"Name","Chorus");var hg=yA;var Ei=hg;return xC(ii);})().default;
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rtc-plugin/chorus",
3
- "version": "5.8.5-ktv.12",
3
+ "version": "5.8.5-ktv.14",
4
4
  "description": "TRTC Web SDK 5.x Chorus plugin",
5
5
  "main": "./chorus.esm.js",
6
6
  "author": "rychouwei <rychouwei@tencent.com>",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rtc-plugin/cross-room",
3
- "version": "5.8.5-ktv.12",
3
+ "version": "5.8.5-ktv.14",
4
4
  "description": "TRTC Web SDK 5.x Cross Room plugin",
5
5
  "main": "./cross-room.esm.js",
6
6
  "author": "rychouwei <rychouwei@tencent.com>",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rtc-plugin/device-detector",
3
- "version": "5.8.5-ktv.12",
3
+ "version": "5.8.5-ktv.14",
4
4
  "description": "TRTC Web SDK 5.x device detector plugin",
5
5
  "main": "./device-detector.esm.js",
6
6
  "author": "edwards <edwards@tencent.com>",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rtc-plugin/basic-beauty",
3
- "version": "5.8.5-ktv.12",
3
+ "version": "5.8.5-ktv.14",
4
4
  "description": "TRTC Web SDK 5.x basic-beauty plugin",
5
5
  "main": "./basic-beauty.esm.js",
6
6
  "author": "longyuqi <longyuqi@tencent.com>",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rtc-plugin/beauty",
3
- "version": "5.8.5-ktv.12",
3
+ "version": "5.8.5-ktv.14",
4
4
  "description": "TRTC Web SDK 5.x beauty plugin",
5
5
  "main": "./beauty.esm.js",
6
6
  "author": "longyuqi <longyuqi@tencent.com>",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rtc-plugin/virtual-background",
3
- "version": "5.8.5-ktv.12",
3
+ "version": "5.8.5-ktv.14",
4
4
  "description": "TRTC Web SDK 5.x virtual background plugin",
5
5
  "main": "./virtual-background.esm.js",
6
6
  "author": "longyuqi <longyuqi@tencent.com>",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rtc-plugin/watermark",
3
- "version": "5.8.5-ktv.12",
3
+ "version": "5.8.5-ktv.14",
4
4
  "description": "TRTC Web SDK 5.x watermark plugin",
5
5
  "main": "./watermark.esm.js",
6
6
  "author": "longyuqi <longyuqi@tencent.com>",