UNPKG

@bddh/starling-realtime-client

Version:

2 lines (1 loc) 6.45 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("./_virtual/_rollupPluginBabelHelpers.js"),r=require("@bddh/starling-json"),t=require("lodash/isEmpty"),n=require("lodash/omit"),a=require("lodash/pick"),o=require("uuid"),i=require("./interface.js"),s=require("./Server.js"),c=require("./BrtcClient.js"),d=require("./DomControl.js"),u=require("./Cutout.js"),l=e.createClass((function l(p){var m=this;e.classCallCheck(this,l),e.defineProperty(this,"token",void 0),e.defineProperty(this,"appKey",void 0),e.defineProperty(this,"appId",void 0),e.defineProperty(this,"connectParams",void 0),e.defineProperty(this,"onDigitalHumanCallback",void 0),e.defineProperty(this,"dhServer",void 0),e.defineProperty(this,"rtcServer",void 0),e.defineProperty(this,"rtcConnectParams",void 0),e.defineProperty(this,"cutoutInstance",void 0),e.defineProperty(this,"isHuawei",d.checkIsHuawei()),e.defineProperty(this,"rtcServerUrl",void 0),e.defineProperty(this,"onRemoteVideoComing",(function(e){m.rtcConnectParams&&m.rtcConnectParams.feedId&&e===+m.rtcConnectParams.feedId&&m.rtcServer&&m.rtcServer.client&&m.rtcServer.client.subscribeStreaming("remotevideo500",+m.rtcConnectParams.feedId)})),e.defineProperty(this,"onRemoteVideoOn",(function(){setTimeout(e.asyncToGenerator(e.regeneratorRuntime().mark((function r(){var t,n,a,o,i;return e.regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=document.getElementById(d.RTC_VIDEO_ID),e.next=3,m.cutoutInstance&&m.cutoutInstance.updateSource(d.RTC_VIDEO_ID);case 3:t&&(t.setAttribute("data-playing","true"),n=t.videoWidth,a=t.videoHeight,o=document.getElementById(d.DEFAULT_CANVAS_ID),i=o.getContext("2d"),o&&i&&(o.width=n,o.height=a,i.drawImage(t,0,0,n,a)));case 4:case"end":return e.stop()}}),r)}))),100)})),e.defineProperty(this,"connectListener",(function(e){var t=e.code,n=e.body,a=e.message;if(0===t&&m.onDigitalHumanCallback&&m.onDigitalHumanCallback({status:i.statusEnum.DH_LIB_WS_SUCCESS,content:e}),0===t){var o=r.parse(n),s=o.rtcServerUrl,c=o.appId,d=o.clientToken,u=o.roomName,l=o.clientId,p=o.feedId,h=o.chargeId;c&&u&&(m.rtcConnectParams={server:m.rtcServerUrl||s,appId:c,token:d,roomName:u,userId:l,feedId:p,chargeId:h},m.rtcServer&&m.rtcServer.openRtc(m.rtcConnectParams))}else m.onDigitalHumanCallback&&m.onDigitalHumanCallback({status:i.statusEnum.DH_LIB_ERROR,content:{type:i.errorTypeEnum.CONNECT_ERROR,msg:{code:t,errMsg:a}}})})),e.defineProperty(this,"createServer",(function(r){m.dhServer&&m.dhServer.createSocket(e.objectSpread2(e.objectSpread2(e.objectSpread2({token:m.token,appKey:m.appKey,appId:m.appId},r?{sessionId:r}:{}),a(m.connectParams,i.CONNECT_MAIN_KEY)),{},{parameters:n(m.connectParams,i.CONNECT_MAIN_KEY),onConnect:m.connectListener,onDigitalHumanCallback:m.onDigitalHumanCallback}))})),e.defineProperty(this,"checkHumanInstansce",(function(){m.dhServer||console.warn("请先初始化数字人示例")})),e.defineProperty(this,"sendMessage",(function(e,r){return m.dhServer&&m.dhServer.sendMessage(e,r)})),e.defineProperty(this,"interrupt",e.asyncToGenerator(e.regeneratorRuntime().mark((function r(){return e.regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e){m.dhServer&&m.dhServer.sendMessage({requestId:o.v4(),action:"TEXT_RENDER",body:"<interrupt></interrupt>",clientTs:(new Date).getTime()},(function(){return e()}))})));case 1:case"end":return e.stop()}}),r)})))),e.defineProperty(this,"textRender",(function(e){var r=e.requestId,t=e.body,n=e.onCallbackMsg;m.checkHumanInstansce(),m.dhServer&&m.dhServer.sendMessage({requestId:r||o.v4(),action:"TEXT_RENDER",body:t,clientTs:(new Date).getTime()},n)})),e.defineProperty(this,"textStreamRender",(function(e){var t=e.requestId,n=e.body,a=e.onCallbackMsg,i=r.parse(n).first;m.checkHumanInstansce(),m.dhServer&&m.dhServer.sendMessage({requestId:t||o.v4(),action:"TEXT_STREAM_RENDER",body:n,clientTs:(new Date).getTime()},i?a:null)})),e.defineProperty(this,"audioRender",(function(e){var r=e.body,t=e.onCallbackMsg;m.checkHumanInstansce(),m.dhServer&&m.dhServer.sendMessage({requestId:o.v4(),action:"AUDIO_RENDER",body:r,clientTs:(new Date).getTime()},t)})),e.defineProperty(this,"audioStreamRender",(function(e){var r=e.requestId,t=e.body,n=e.onCallbackMsg;m.checkHumanInstansce(),m.dhServer&&m.dhServer.sendMessage({requestId:r||o.v4(),action:"AUDIO_STREAM_RENDER",body:t,clientTs:(new Date).getTime()},n)})),e.defineProperty(this,"destory",e.asyncToGenerator(e.regeneratorRuntime().mark((function r(){return e.regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,m.dhServer&&m.dhServer.closeSocket();case 2:m.rtcServer&&m.rtcServer.closeRtc(),d.removeHumanDom(),m.dhServer=null,m.rtcServer=null;case 6:case"end":return e.stop()}}),r)})))),e.defineProperty(this,"pauseHuman",(function(){return d.playHumanVideo(!1)})),e.defineProperty(this,"playHuman",(function(){return d.playHumanVideo(!0)})),e.defineProperty(this,"muteHuman",(function(){return d.muteHumanVideo(!0)})),e.defineProperty(this,"unMuteHuman",(function(){var e=d.muteHumanVideo(!1);try{return m.isHuawei?(e.pause(),e.play()):e.paused&&e.play()}catch(e){console.info(e)}}));var h=p.wrapperId,v=p.token,f=p.appKey,y=p.appId,g=p.connectParams,S=p.renderParams,I=p.rtcConnectParams,C=p.brtcParams,P=p.wsUrl,b=p.rtcServerUrl,D=p.onDigitalHumanCallback;this.token=v,this.appKey=f,this.appId=y,this.rtcServerUrl=b,this.connectParams=e.objectSpread2({autoChromaKey:S.autoChromaKey},g);var R=S.fullStatus,k=S.closeLog;this.onDigitalHumanCallback=function(e){e.status!==i.statusEnum.DH_LIB_FULL_STATUS?D&&D(e):R&&D&&D(e)},this.dhServer=new s.default(P||"wss://open.xiling.baidu.com/cloud/digital-human-demonstration");var E=(d.createHumanDom({autoChromaKey:!!S.autoChromaKey})||{}).playerWrapper,H=document.getElementById(h);H||console.error("dom with wrapperId is not find"),E&&H&&H.appendChild(E),d.appendRtcDomStyle(),this.rtcServer=new c.default({closeLog:k,videoWrapperId:d.RTC_VIDEO_ID,rtcConfig:e.objectSpread2({remotevideoviewid:h,showvideobps:!1,usingvideo:!1,usingaudio:!1,aspublisher:!1,usingdatachannel:!0,autoplaymuted:!1},C),bizConfig:{},rtcCallback:{onRemoteVideoComing:this.onRemoteVideoComing,onDigitalHumanCallback:this.onDigitalHumanCallback}}),this.cutoutInstance=new u.default({sourceId:d.RTC_VIDEO_ID}),t(I)||(this.rtcConnectParams=I,this.rtcServer.openRtc(I))}));exports.default=l;