You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1 lines
16 KiB
1 lines
16 KiB
function H5sPlayerWS(t){this.sourceBuffer,this.buffer=[],this.t,this.s,this.i,this.o,this.h,this.l=0,this.u=0,this.S=0,this.v=!1,this.k=!1,this.p=!1,this.H,this.P=t,this.W=t.videoid,this.C=t.token,void 0===this.W?(this.I=t.videodom,console.log(t.token,"use dom directly")):(this.I=document.getElementById(this.W)),this.s=this.I;var s=this.P.protocol+"//"+this.P.host+this.P.rootpath+"api/v1/GetImage?token="+this.C+"&session="+this.P.session;this.I.setAttribute("poster",s)}function H5sPlayerHls(t){this.i,this.h,this.P=t,this.W=t.videoid,this.C=t.token,this.R,this.m=t.hlsver,void 0===this.W?(this.I=t.videodom,console.log(t.token,"use dom directly")):(this.I=document.getElementById(this.W)),this.A=this.I,this.A.type="application/x-mpegURL",this.T=0,this.M=0;var s=this.P.protocol+"//"+window.location.host+"/api/v1/GetImage?token="+this.C+"&session="+this.P.session;this.I.setAttribute("poster",s)}function H5sPlayerRTC(t){this.i,this.o,this.h,this.l=0,this.u=0,this.S=0,this.v=!1,this.k=!1,this.P=t,this.W=t.videoid,this.C=t.token,void 0===this.W?(this.I=t.videodom,console.log(t.token,"use dom directly")):(this.I=document.getElementById(this.W)),this.s=this.I,this.O=null,this.J={optional:[{DtlsSrtpKeyAgreement:!0}]},this.N={mandatory:{offerToReceiveAudio:!0,offerToReceiveVideo:!0}},this.g={B:[]},this.L=[];var s=this.P.protocol+"//"+this.P.host+this.P.rootpath+"api/v1/GetImage?token="+this.C+"&session="+this.P.session;this.I.setAttribute("poster",s)}function createRTCSessionDescription(t){return console.log("createRTCSessionDescription "),new RTCSessionDescription(t)}function H5sPlayerAudio(t){this.buffer=[],this.i,this.v=!1,this.k=!1,this.P=t,console.log("Aduio Player Conf:",t),this.C=t.token,this.D=new AudioContext}function H5sPlayerAudBack(t){this.buffer=[],this.i,this.v=!1,this.k=!1,this.P=t,this.U=0,console.log("Aduio Back Conf:",t),this.C=t.token,this.D=new AudioContext}function float32ToInt16(t){for(l=t.length,buf=new Int16Array(l);l--;)buf[l]=32767*Math.min(1,t[l]);return buf}H5sPlayerWS.prototype.G=function(){console.log("Try Reconnect...",this.v),!0===this.v&&(console.log("Reconnect..."),this._(this.C),this.v=!1),console.log("Try Reconnect...",this.v)},H5sPlayerWS.prototype.K=function(t){var s;console.log("H5SWebSocketClient");try{"http:"==this.P.protocol&&(s="undefined"!=typeof MozWebSocket?new MozWebSocket("ws://"+this.P.host+t):new WebSocket("ws://"+this.P.host+t)),"https:"==this.P.protocol&&(console.log(this.P.host),s="undefined"!=typeof MozWebSocket?new MozWebSocket("wss://"+this.P.host+t):new WebSocket("wss://"+this.P.host+t)),console.log(this.P.host)}catch(t){return void alert("error")}return s},H5sPlayerWS.prototype.V=function(){if(null!==this.sourceBuffer&&void 0!==this.sourceBuffer){if(0!==this.buffer.length&&!this.sourceBuffer.updating)try{var t=this.buffer.shift(),s=new Uint8Array(t);this.sourceBuffer.appendBuffer(s)}catch(t){console.log(t)}}else console.log(this.sourceBuffer,"is null or undefined")},H5sPlayerWS.prototype.j=function(){try{var t={cmd:"H5_KEEPALIVE",nSpeed:"1.0",nTime:"0"};this.i.send(JSON.stringify(t))}catch(t){console.log(t)}},H5sPlayerWS.prototype.q=function(t){if(!0!==this.k)return!1===this.p?(this.H=String.fromCharCode.apply(null,new Uint8Array(t.data)),this.F(this),void(this.p=!0)):(this.buffer.push(t.data),void this.V())},H5sPlayerWS.prototype.F=function(t){try{window.MediaSource=window.MediaSource||window.WebKitMediaSource,window.MediaSource||console.log("MediaSource API is not available");var s='video/mp4; codecs="avc1.42E01E, mp4a.40.2"';"MediaSource"in window&&MediaSource.isTypeSupported(s)?console.log("MIME type or codec: ",s):console.log("Unsupported MIME type or codec: ",s),t.t=new window.MediaSource,t.s.autoplay=!0,console.log(t.W);t.s.src=window.URL.createObjectURL(t.t),t.s.play(),t.t.addEventListener("sourceopen",t.X.bind(t),!1)}catch(t){console.log(t)}},H5sPlayerWS.prototype.X=function(){console.log("Add SourceBuffer"),this.sourceBuffer=this.t.addSourceBuffer(this.H),this.t.duration=1/0,this.t.removeEventListener("sourceopen",this.X,!1),this.sourceBuffer.addEventListener("updateend",this.V.bind(this),!1)},H5sPlayerWS.prototype._=function(t){this.s.autoplay=!0;var s="api/v1/h5swsapi";s=this.P.rootpath+s+"?token="+t+"&session="+this.P.session,console.log(s),this.i=this.K(s),console.log("setupWebSocket",this.i),this.i.binaryType="arraybuffer",(this.i.Y=this).i.onmessage=this.q.bind(this),this.i.onopen=function(){console.log("wsSocket.onopen",this.Y),this.Y.o=setInterval(this.Y.Z.bind(this.Y),1e4),this.Y.h=setInterval(this.Y.j.bind(this.Y),1e3)},this.i.onclose=function(){console.log("wsSocket.onclose",this.Y),!0===this.Y.k?console.log("wsSocket.onclose disconnect"):this.Y.v=!0,this.Y.$(this.Y),this.Y.tt(this.Y),this.Y.H="",this.Y.p=!1}},H5sPlayerWS.prototype.$=function(t){console.log("Cleanup Source Buffer",t);try{t.sourceBuffer.removeEventListener("updateend",t.V,!1),t.sourceBuffer.abort(),document.documentMode||/Edge/.test(navigator.userAgent)?console.log("IE or EDGE!"):t.t.removeSourceBuffer(t.sourceBuffer),t.sourceBuffer=null,t.t=null,t.buffer=[]}catch(t){console.log(t)}},H5sPlayerWS.prototype.tt=function(t){console.log("CleanupWebSocket",t),clearInterval(t.h),clearInterval(t.o),t.l=0,t.u=0,t.S=0},H5sPlayerWS.prototype.Z=function(){!0===this.k&&(console.log("CheckSourceBuffer has been disconnect",this),clearInterval(this.h),clearInterval(this.o),clearInterval(this.st));try{if(console.log("CheckSourceBuffer",this),this.sourceBuffer.buffered.length<=0){if(this.l++,8<this.l)return console.log("CheckSourceBuffer Close 1"),void this.i.close()}else{this.l=0;this.sourceBuffer.buffered.start(0);var t=this.sourceBuffer.buffered.end(0),s=t-this.s.currentTime;if(5<s||s<0)return console.log("CheckSourceBuffer Close 2",s),void this.i.close();if(t==this.u){if(this.S++,3<this.S)return console.log("CheckSourceBuffer Close 3"),void this.i.close()}else this.S=0;this.u=t}}catch(t){console.log(t)}},H5sPlayerWS.prototype.connect=function(){this._(this.C),this.st=setInterval(this.G.bind(this),3e3)},H5sPlayerWS.prototype.disconnect=function(){console.log("disconnect",this),this.k=!0,clearInterval(this.st),null!=this.i&&(this.i.close(),this.i=null),console.log("disconnect",this)},H5sPlayerWS.prototype.pause=function(){try{var t={cmd:"H5_PAUSE",nSpeed:"1.0",nTime:"0"};this.i.send(JSON.stringify(t))}catch(t){console.log(t)}},H5sPlayerWS.prototype.resume=function(){try{var t={cmd:"H5_RESUME",nSpeed:"1.0",nTime:"0"};this.i.send(JSON.stringify(t))}catch(t){console.log(t)}},H5sPlayerWS.prototype.seek=function(t){try{var s={cmd:"H5_SEEK",nSpeed:"1.0"};s.nTime=t,this.i.send(JSON.stringify(s))}catch(t){console.log(t)}},H5sPlayerWS.prototype.speed=function(t){try{var s={cmd:"H5_SPEED"};s.nSpeed=t,s.nTime=0,this.i.send(JSON.stringify(s))}catch(t){console.log(t)}},H5sPlayerHls.prototype.K=function(t){var s;console.log("H5SWebSocketClient");try{"http:"==this.P.protocol&&(s="undefined"!=typeof MozWebSocket?new MozWebSocket("ws://"+this.P.host+t):new WebSocket("ws://"+this.P.host+t)),"https:"==this.P.protocol&&(console.log(this.P.host),s="undefined"!=typeof MozWebSocket?new MozWebSocket("wss://"+this.P.host+t):new WebSocket("wss://"+this.P.host+t)),console.log(this.P.host)}catch(t){return void alert("error")}return s},H5sPlayerHls.prototype.j=function(){try{var t={type:"keepalive"};this.i.send(JSON.stringify(t))}catch(t){console.log(t)}},H5sPlayerHls.prototype.q=function(t){console.log("HLS received ",t.data)},H5sPlayerHls.prototype._=function(t){var s="api/v1/h5swscmnapi";s=this.P.rootpath+s+"?token="+t,console.log(s),this.i=this.K(s),console.log("setupWebSocket",this.i),this.i.binaryType="arraybuffer",(this.i.Y=this).i.onmessage=this.q.bind(this),this.i.onopen=function(){console.log("wsSocket.onopen",this.Y),this.Y.h=setInterval(this.Y.j.bind(this.Y),1e3)},this.i.onclose=function(){console.log("wsSocket.onclose",this.Y),this.Y.tt(this.Y)}},H5sPlayerHls.prototype.tt=function(t){console.log("H5sPlayerHls CleanupWebSocket",t),clearInterval(t.h)},H5sPlayerHls.prototype.et=function(){console.log("HLS video.ended",this.A.ended),console.log("HLS video.currentTime",this.A.currentTime);var t=this.A.currentTime,s=t-this.T;console.log("HLS diff",s),0===s&&this.M++,this.T=t,3<this.M&&(null!=this.i&&(this.i.close(),this.i=null),this._(this.C),console.log("HLS reconnect"),this.A.src="",this.T=0,this.M=0,this.A.src=this.P.protocol+"//"+this.P.host+this.P.rootpath+"hls/"+this.m+"/"+this.C+"/hls.m3u8",this.A.play())},H5sPlayerHls.prototype.connect=function(){this._(this.C),this.T=0,this.M=0,this.A.onended=function(t){console.log("The End")},this.A.onpause=function(t){console.log("Pause")},this.A.onplaying=function(t){console.log("Playing")},this.A.onseeking=function(t){console.log("seeking")},this.A.onvolumechange=function(t){console.log("volumechange")},this.A.src=this.P.protocol+"//"+this.P.host+this.P.rootpath+"hls/"+this.m+"/"+this.C+"/hls.m3u8",this.A.play(),this.R=setInterval(this.et.bind(this),3e3)},H5sPlayerHls.prototype.disconnect=function(){clearInterval(this.R),this.T=0,this.M=0,null!=this.i&&(this.i.close(),this.i=null),console.log("disconnect",this)},H5sPlayerRTC.prototype.G=function(){console.log("Try Reconnect...",this.v),!0===this.v&&(console.log("Reconnect..."),this._(this.C),this.v=!1),console.log("Try Reconnect...",this.v)},H5sPlayerRTC.prototype.K=function(t){var s;console.log("H5SWebSocketClient");try{"http:"==this.P.protocol&&(s="undefined"!=typeof MozWebSocket?new MozWebSocket("ws://"+this.P.host+t):new WebSocket("ws://"+this.P.host+t)),"https:"==this.P.protocol&&(console.log(this.P.host),s="undefined"!=typeof MozWebSocket?new MozWebSocket("wss://"+this.P.host+t):new WebSocket("wss://"+this.P.host+t)),console.log(this.P.host)}catch(t){return void alert("error")}return s},H5sPlayerRTC.prototype.j=function(){try{var t={type:"keepalive"};this.i.send(JSON.stringify(t))}catch(t){console.log(t)}},H5sPlayerRTC.prototype.it=function(t){if(t.candidate){var s;console.log("onIceCandidate currentice",t.candidate),s=t.candidate,console.log("onIceCandidate currentice",s,JSON.stringify(s));var e=JSON.parse(JSON.stringify(s));e.type="remoteice",console.log("onIceCandidate currentice new",e,JSON.stringify(e)),this.i.send(JSON.stringify(e))}else console.log("End of candidates.")},H5sPlayerRTC.prototype.ot=function(t){var s;console.log("Remote track added:"+JSON.stringify(t)),s=t.nt?t.nt[0]:t.stream;var e=this.I;e.src=URL.createObjectURL(s),e.play()},H5sPlayerRTC.prototype.ct=function(){console.log("createPeerConnection config: "+JSON.stringify(this.g)+" option:"+JSON.stringify(this.J));var s=new RTCPeerConnection(this.g,this.J),e=this;return s.onicecandidate=function(t){e.it.call(e,t)},void 0!==s.ht?s.ht=function(t){e.ot.call(e,t)}:s.onaddstream=function(t){e.ot.call(e,t)},s.oniceconnectionstatechange=function(t){console.log("oniceconnectionstatechange state: "+s.iceConnectionState)},console.log("Created RTCPeerConnnection with config: "+JSON.stringify(this.g)+"option:"+JSON.stringify(this.J)),s},H5sPlayerRTC.prototype.rt=function(t){console.log("ProcessRTCOffer",t);try{this.O=this.ct(),this.L.length=0;var s=this;this.O.setRemoteDescription(createRTCSessionDescription(t)),this.O.createAnswer(this.N).then(function(t){console.log("Create answer:"+JSON.stringify(t)),s.O.setLocalDescription(t,function(){console.log("ProcessRTCOffer createAnswer",t),s.i.send(JSON.stringify(t))},function(){})},function(t){alert("Create awnser error:"+JSON.stringify(t))})}catch(t){this.disconnect(),alert("connect error: "+t)}},H5sPlayerRTC.prototype.lt=function(t){console.log("ProcessRemoteIce",t);try{var s=new RTCIceCandidate({sdpMLineIndex:t.sdpMLineIndex,candidate:t.candidate});console.log("ProcessRemoteIce",s),console.log("Adding ICE candidate :"+JSON.stringify(s)),this.O.addIceCandidate(s,function(){console.log("addIceCandidate OK")},function(t){console.log("addIceCandidate error:"+JSON.stringify(t))})}catch(t){alert("connect ProcessRemoteIce error: "+t)}},H5sPlayerRTC.prototype.q=function(t){console.log("RTC received ",t.data);var s=JSON.parse(t.data);console.log("Get Message type ",s.type),"offer"===s.type&&(console.log("Process Message type ",s.type),this.rt(s)),"remoteice"===s.type&&(console.log("Process Message type ",s.type),this.lt(s))},H5sPlayerRTC.prototype._=function(t){this.s.autoplay=!0;var s="api/v1/h5srtcapi";s=this.P.rootpath+s+"?token="+t,console.log(s),this.i=this.K(s),console.log("setupWebSocket",this.i),this.i.binaryType="arraybuffer",(this.i.Y=this).i.onmessage=this.q.bind(this),this.i.onopen=function(){console.log("wsSocket.onopen",this.Y);var t={type:"open"};this.Y.i.send(JSON.stringify(t)),this.Y.h=setInterval(this.Y.j.bind(this.Y),1e3)},this.i.onclose=function(){console.log("wsSocket.onclose",this.Y),!0===this.Y.k?console.log("wsSocket.onclose disconnect"):this.Y.v=!0,this.Y.tt(this.Y)}},H5sPlayerRTC.prototype.tt=function(t){console.log("CleanupWebSocket",t),clearInterval(t.h),t.l=0,t.u=0,t.S=0},H5sPlayerRTC.prototype.connect=function(){this._(this.C),this.st=setInterval(this.G.bind(this),3e3)},H5sPlayerRTC.prototype.disconnect=function(){console.log("disconnect",this),this.k=!0,clearInterval(this.st),null!=this.i&&(this.i.close(),this.i=null),console.log("disconnect",this)},H5sPlayerAudio.prototype.K=function(t){var s;console.log("H5SWebSocketClient");try{"http:"==this.P.protocol&&(s="undefined"!=typeof MozWebSocket?new MozWebSocket("ws://"+this.P.host+t):new WebSocket("ws://"+this.P.host+t)),"https:"==this.P.protocol&&(console.log(this.P.host),s="undefined"!=typeof MozWebSocket?new MozWebSocket("wss://"+this.P.host+t):new WebSocket("wss://"+this.P.host+t)),console.log(this.P.host)}catch(t){return void alert("error")}return s},H5sPlayerAudio.prototype.j=function(){try{this.i.send("keepalive")}catch(t){console.log(t)}},H5sPlayerAudio.prototype.q=function(t){for(var s=new Int16Array(t.data),e=s.length,i=this.D.createBuffer(1,e,8e3),o=0;o<1;o++)for(var n=i.getChannelData(o),c=0;c<e;c++)n[c]=s[c]/16383.5;var h=this.D.createBufferSource();h.buffer=i,h.connect(this.D.destination),h.start()},H5sPlayerAudio.prototype.tt=function(t){console.log("CleanupWebSocket",t),clearInterval(t.h)},H5sPlayerAudio.prototype._=function(t){var s="api/v1/h5saudapi";s=this.P.rootpath+s+"?token="+t+"&session="+this.P.session,console.log(s),this.i=this.K(s),console.log("setupWebSocket for audio",this.i),this.i.binaryType="arraybuffer",(this.i.Y=this).i.onmessage=this.q.bind(this),this.i.onopen=function(){console.log("wsSocket.onopen",this.Y),this.Y.h=setInterval(this.Y.j.bind(this.Y),1e3)},this.i.onclose=function(){console.log("wsSocket.onclose",this.Y),this.Y.tt(this.Y)}},H5sPlayerAudio.prototype.connect=function(){this._(this.C)},H5sPlayerAudio.prototype.disconnect=function(){console.log("disconnect",this),null!=this.i&&(this.i.close(),this.i=null),console.log("disconnect",this)},H5sPlayerAudBack.prototype.K=function(t){var s;console.log("H5SWebSocketClient");try{"http:"==this.P.protocol&&(s="undefined"!=typeof MozWebSocket?new MozWebSocket("ws://"+this.P.host+t):new WebSocket("ws://"+this.P.host+t)),"https:"==this.P.protocol&&(console.log(this.P.host),s="undefined"!=typeof MozWebSocket?new MozWebSocket("wss://"+this.P.host+t):new WebSocket("wss://"+this.P.host+t)),console.log(this.P.host)}catch(t){return void alert("error")}return s},H5sPlayerAudBack.prototype.j=function(){try{this.i.send("keepalive")}catch(t){console.log(t)}},H5sPlayerAudBack.prototype.q=function(t){},H5sPlayerAudBack.prototype.tt=function(t){console.log("CleanupWebSocket",t),clearInterval(t.h)},H5sPlayerAudBack.prototype.at=function(t){console.log("wsSocket.onopen",this);try{navigator.getUserMedia({s:!1,ut:!0},this.dt.bind(this))}catch(t){return void alert("Audio intecomm error",t)}},H5sPlayerAudBack.prototype._=function(t){var s="api/v1/h5saudbackapi";s=this.P.rootpath+s+"?token="+t+"&session="+this.P.session,console.log(s),this.i=this.K(s),console.log("setupWebSocket for audio back",this.i),this.i.binaryType="arraybuffer",(this.i.Y=this).i.onmessage=this.q.bind(this),this.i.onopen=this.at.bind(this),this.i.onclose=function(){console.log("wsSocket.onclose",this.Y),this.Y.tt(this.Y)}},H5sPlayerAudBack.prototype.ft=function(t){var s=float32ToInt16(t.inputBuffer.getChannelData(0));this.i.send(s)},H5sPlayerAudBack.prototype.dt=function(t){try{var s=this.D.createMediaStreamSource(t);console.log("sampleRate",this.D.sampleRate);var e=this.D.createScriptProcessor(256,1,1);s.connect(e),e.connect(this.D.destination),e.onaudioprocess=this.ft.bind(this)}catch(t){return void alert("Audio intecomm error",t)}},H5sPlayerAudBack.prototype.connect=function(){this._(this.C)},H5sPlayerAudBack.prototype.disconnect=function(){console.log("disconnect",this),null!=this.i&&(this.i.close(),this.i=null),console.log("disconnect",this)};
|