正在显示
12 个修改的文件
包含
967 行增加
和
27 行删除
dist/.DS_Store
0 → 100644
不能预览此文件类型
dist/main.html
0 → 100644
| 1 | +<!DOCTYPE html><html><head><meta charset="UTF-8"><title>UMD PLAYGROUND</title></head><body><div id="stage"></div><script type="text/javascript" src="main.js"></script></body></html> |
dist/ss.js
0 → 100644
| 1 | +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.share=t():e.share=t()}(this,function(){return function(e){function t(n){if(_[n])return _[n].exports;var a=_[n]={exports:{},id:n,loaded:!1};return e[n].call(a.exports,a,a.exports,t),a.loaded=!0,a.exports}var _={};return t.m=e,t.c=_,t.p="",t(0)}([function(e,t,_){e.exports=_(2)},function(e,t){"use strict";function _(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var n=function(){function e(e,t){for(var _=0;_<t.length;_++){var n=t[_];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,_,n){return _&&e(t.prototype,_),n&&e(t,n),t}}(),a=function(){function e(){_(this,e),this.MAPS={}}return n(e,[{key:"on",value:function(e,t){if(e&&t){var _=this.MAPS[e];if(!_)return this.MAPS[e]=[t];_.push(t)}}},{key:"off",value:function(e,t){if(e){var _=this.MAPS[e];if(_){if(t)return _.splice(_.indexOf(t),1);_.length=0}}}},{key:"emit",value:function(e,t){if(e){var _=this.MAPS["*"];_&&_.length&&_.forEach(function(_){_(e,t)});var n=this.MAPS[e];n&&n.length&&n.forEach(function(e){e(t)})}}}]),e}();t.default=a},function(e,t,_){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function a(e){var t,_,n,a;n=e.length,t=new Uint8Array(3*n);var r=0;for(_=0;_<n;_++)a=e.charCodeAt(_),a>=1&&a<=127?t[r++]=a:a>2047?(t[r++]=224|a>>12&15,t[r++]=128|a>>6&63,t[r++]=128|a>>0&63):(t[r++]=192|a>>6&31,t[r++]=128|a>>0&63);return new Uint8Array(t.buffer,0,r)}function r(e){var t,_,n,a,r,o;for(t="",n=e.length,_=0;_<n;)switch(a=e[_++],a>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:t+=String.fromCharCode(a);break;case 12:case 13:r=e[_++],t+=String.fromCharCode((31&a)<<6|63&r);break;case 14:r=e[_++],o=e[_++],t+=String.fromCharCode((15&a)<<12|(63&r)<<6|(63&o)<<0)}return t}function o(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",_=new Object;if(_.data_len=0,_.data="",_.name=e,"mov_start"==e)_.type=1;else if("mov_stop"==e)_.type=2;else if("mov_pause"==e){if(_.type=3,pos=t,pos.length>0){_.data_len=4;var n=new ArrayBuffer(_.data_len),r=new Uint32Array(n,0,1);r[0]=parseInt(pos),_.data=new Uint8Array(n,0,4)}}else if("mov_resume"==e)_.type=4;else if("mov_seek"==e){if(_.type=5,pos=t,pos.length>0){_.data_len=4;var n=new ArrayBuffer(_.data_len),r=new Uint32Array(n,0,1);r[0]=parseInt(pos),_.data=new Uint8Array(n,0,4)}}else if("ss_start"==e)_.type=6,_.data=a(t),_.data_len=_.data.length;else if("ss_stop"==e)_.type=7;else if("ss_version"==e)_.type=14;else if("get_mic"==e)_.type=26;else{if("ds_start"==e){_.type=27,_.data_len=536;var n=new ArrayBuffer(_.data_len),o=new Uint32Array(n,0,6);coordstr=t;var i=coordstr.split(",");if(4!=i.length)return;o[0]=parseInt(i[0]),o[1]=parseInt(i[1]),o[2]=parseInt(i[2]),o[3]=parseInt(i[3]);var s=new Uint8Array(n,24,256);window_name=t;for(var S=a(window_name),E=0;E<S.length;E++)s[E]=S[E];o[4]=S.length,o[5]=0;new Uint8Array(n,280,256);return _.data=new Uint8Array(n,0,_.data_len),void A(_)}if("ds_stop"==e)_.type=28;else{if("aud_start"==e){_.type=29,_.data_len=520;var n=new ArrayBuffer(_.data_len),l=new Uint32Array(n,0,1),C=t;l[0]=C.length;var f=new Uint32Array(n,4,1);f[0]=0;for(var c=new Uint8Array(n,8,256),O=a(C),E=0;E<O.length;E++)c[E]=O[E];new Uint8Array(n,264,256);return _.data=new Uint8Array(n,0,_.data_len),void A(_)}if("aud_stop"==e)_.type=30;else if("get_cam"==e)_.type=41;else{if("cam_start"==e){_.type=42,_.data_len=520;var n=new ArrayBuffer(_.data_len),I=new Uint32Array(n,0,1),T=t;I[0]=T.length;var f=new Uint32Array(n,4,1);f[0]=0;for(var U=new Uint8Array(n,8,256),u=a(T),E=0;E<u.length;E++)U[E]=u[E];new Uint8Array(n,264,256);return _.data=new Uint8Array(n,0,_.data_len),void A(_)}"cam_stop"==e?_.type=43:"set_videoparam"==e?(_.type=46,_.data=a(t),_.data_len=_.data.length):"get_videoparam"==e?(_.type=47,_.data=a(t),_.data_len=_.data.length):"start_record"==e?(_.type=48,_.data=a(t),_.data_len=_.data.length):"stop_record"==e?(_.type=49,_.data=a(t),_.data_len=_.data.length):"start_push"==e?(_.type=50,_.data=a(t),_.data_len=_.data.length):"stop_push"==e?(_.type=51,_.data=a(t),_.data_len=_.data.length):"get_rtmp_port"==e?_.type=52:"set_mic_vol"==e?(_.type=53,_.data=a(t),_.data_len=_.data.length):"get_mic_vol"==e&&(_.type=54)}}}A(_)}function A(e){var t=8+e.data_len,_=new ArrayBuffer(t),n=new Uint16Array(_,0,1),a=new Uint8Array(_,2,1),r=new Uint32Array(_,4,1);if(n[0]=e.type,a[0]=0,r[0]=e.data_len,e.data_len>0)for(var o=new Uint8Array(_,8,e.data_len),A=0;A<e.data_len;A++)o[A]=e.data[A];R&&R.send(_)}function i(){try{R&&(R.close(),R=R.onopen=R.onclose=R.onerror=R.onmessage=null,C.emit(C.CLOSE))}catch(e){console.log(e)}}function s(){i()}function S(){R&&i(),R=new WebSocket("ws://"+p+":"+L),g=setTimeout(function(){clearTimeout(g),i()},1500),R.timeout=1500,R.binaryType="arraybuffer",R.onopen=function(){clearTimeout(g),o("get_rtmp_port"),o("get_mic"),o("get_cam"),o("get_mic_vol"),C.emit(C.OPEN)},R.onclose=function(){i()},R.onerror=function(){i()},R.onmessage=function(e){var t=e.data;if("string"==typeof e.data)console.log("on message [string] ignore.");else{var _=new DataView(t),n=_.getUint16(0,!0);console.log("onmessage code->",n);var a=(_.getUint8(2,!0),_.getUint32(4,!0));if(n>=0&&n<f.length){f[n]}if(0==n||6==n||8==n)console.log("mov_start,mov_pause,mov_seek success");else if(10==n){if(a>36){var o=new Uint32Array(t,8,8),A="width:"+o[0]+" height:"+o[1];A="framerate:"+o[2]+" duration:"+o[3],A="playpos:"+o[4]+" filesize:"+o[5],c=A;var i=o[6],s=new Uint8Array(t,40,i),S=r(s);c.filename=S,C.emit(C.MOVIE_INFO_CHANGE,c)}}else if(11==n)console.log("ss_start success"),C.emit(C.SS_START);else if(24<=n&&26>=n){if(a>=4){var E=_.getUint32(8,!0);O=E.toString(),C.emit(C.VERSION_INFO_CHANGE,O)}}else if(55==n)console.log("ds_start success");else if(59==n)console.log("as start success");else if(83==n){if(console.log("get camera sucess"),a>4){var l=_.getUint32(8,!0),R=12;I.length=0;for(var p=0;p<l;p++){var L=_.getUint32(R,!0);R+=4;var g=new Uint8Array(t,R,L-1);R+=L;var y=r(g);I.push(y)}C.emit(C.CAMERA_INFO_CHANGE,I)}}else if(53==n){if(a>4){var v=_.getUint32(8,!0),R=12;T.length=0;for(var p=0;p<v;p++){var M=_.getUint32(R,!0);R+=4;var P=new Uint8Array(t,R,M-1);R+=M;var y=r(P);T.push(y)}C.emit(C.MIC_INFO_CHANGE,T)}}else if(85==n)console.log("cam_share success");else if(95==n){console.log("get_videoparam success");var N=new Uint8Array(t,8,t.byteLength-8-1),y=r(N);U=y,C.emit(C.VIDEO_INFO_CHANGE,U)}else if(105==n){console.log("get_rtmp_port_success");var N=new Uint8Array(t,8,t.byteLength-8-1),y=r(N);u=y,C.emit(C.RTMP_PORT_CHANGE,u)}else if(109==n){console.log("get_mic_vol success");var N=new Uint8Array(t,8,t.byteLength-8-1),y=r(N);d=y,C.emit(C.MIC_VOL_CHANGE,d)}else if(111<=n&&114>=n){var N=new Uint8Array(t,8,t.byteLength-8),V=r(N);console.log("url->",V)}else if(13==n)C.emit(C.SS_STOP);else{var N=new Uint8Array(t,8,t.byteLength-8),y=r(N);console.log("data ->",y)}}}}Object.defineProperty(t,"__esModule",{value:!0});var E=_(1),l=n(E),C=new l.default,f=["MOV_START_SUC","MOV_START_FAIL","MOV_STOP_SUC","MOV_STOP_FAIL","MOV_PAUSE_SUC","MOV_PAUSE_FAIL","MOV_RESUME_SUC","MOV_RESUME_FAIL","MOV_SEEK_SUC","MOV_SEEK_FAIL","MOV_PROPERTY","SS_START_SUC","SS_START_FAIL","SS_STOP_SUC","SS_STOP_FAIL","REC_START_SUC","REC_START_FAIL","REC_STOP_SUC","REC_STOP_FAIL","REC_PAUSE_SUC","REC_PAUSE_FAIL","REC_RESUME_SUC","REC_RESUME_FAIL","MOV_PLAY_FINISH","MOV_VERSION","SS_VERSION","REC_VERSION","MOV_SELECT_FILE_CANCEL","QAV_LOGIN_SUC","QAV_LOGIN_FAIL","QAV_LOGOUT_SUC","QAV_LOGOUT_FAIL","QAV_ENTERROOM_SUC","QAV_ENTERROOM_FAIL","QAV_LEAVEROOM_SUC","QAV_LEAVEROOM_FAIL","QAV_OPEN_MIC_SUC","QAV_OPEN_MIC_FAIL","QAV_OPEN_MIC_NODEV","QAV_CLOSE_MIC_SUC","QAV_CLOSE_MIC_FAIL","QAV_CLOSE_MIC_NODEV","QAV_OPEN_PLAYER_SUC","QAV_OPEN_PLAYER_FAIL","QAV_OPEN_PLAYER_NODEV","QAV_CLOSE_PLAYER_SUC","QAV_CLOSE_PLAYER_FAIL","QAV_CLOSE_PLAYER_NODEV","QAV_MUTE_AUDIO_SUC","QAV_MUTE_AUDIO_FAIL","QAV_UNMUTE_AUDIO_SUC","QAV_UNMUTE_AUDIO_FAIL","REC_SAVE_FILE_CANCEL","GET_MIC_SUC","GET_MIC_FAIL","DS_START_SUC","DS_START_FAIL","DS_STOP_SUC","DS_STOP_FAIL","AUD_START_SUC","AUD_START_FAIL","AUD_STOP_SUC","AUD_STOP_FAIL","AUD_DATA","SS_DATA","MOV_DATA","PEN_START_SUC","PEN_START_FAIL","PEN_STOP_SUC","PEN_STOP_FAIL","PEN_VERSION","QAV_DEVICE_SUC","QAV_DEVICE_FAIL","CBD_QUERY_SUC","CBD_QUERY_FAIL","CBD_GET_SUC","CBD_GET_FAIL","FILE_GET_SUC","FILE_GET_FAIL","FILE_SET_SUC","FILE_SET_FAIL","RESTART_SUC","RESTART_FAIL","GET_CAM_SUC","GET_CAM_FAIL","CAM_START_SUC","CAM_START_FAIL","CAM_STOP_SUC","CAM_STOP_FAIL","SWITCH_SCENE_SUC","SWITCH_SCENE_FAIL","PUSH_STREAM_FAIL","SHOW_UI_SUC","SET_VIDEO_PARAM_SUC","SET_VIDEO_PARAM_FAIL","GET_VIDEO_PARAM_SUC","GET_VIDEO_PARAM_FAIL","START_RECORD_SUC","START_RECORD_FAIL","STOP_RECORD_SUC","STOP_RECORD_FAIL","START_PUSH_SUC","START_PUSH_FAIL","STOP_PUSH_SUC","STOP_PUSH_FAIL","GET_RTMP_PORT_SUC","GET_RTMP_PORT_FAIL","SET_MIC_VOL_SUC","SET_MIC_VOL_FAIL","GET_MIC_VOL_SUC","GET_MIC_VOL_FAIL","RTMP_CONNECTING","RTMP_CONNECT_SUC","RTMP_CONNECT_FAIL","RTMP_CONNECT_CLOSED"],c=null,O="",I=[],T=[],U="",u="",d="",R=null,p="127.0.0.1",L=8090,g=0;C.infos={movieInfo:c,versionInfo:O,cameraInfo:I,micInfo:T,videoInfo:U,rtmpPort:u,micVol:d},C.MOVIE_INFO_CHANGE="MOVIE_INFO_CHANGE",C.VERSION_INFO_CHANGE="VERSION_INFO_CHANGE",C.CAMERA_INFO_CHANGE="CAMERA_INFO_CHANGE",C.MIC_INFO_CHANGE="MIC_INFO_CHANGE",C.VIDEO_INFO_CHANGE="VIDEO_INFO_CHANGE",C.RTMP_PORT_CHANGE="RTMP_PORT_CHANGE",C.MIC_VOL_CHANGE="MIC_VOL_CHANGE",C.SS_START="SS_START",C.SS_STOP="SS_STOP",C.OPEN="OPEN",C.CLOSE="CLOSE",C.ERROR="ERROR",C.getRTMPPort=function(){o("get_rtmp_port")},C.getMicInfo=function(){o("get_mic")},C.getCamInfo=function(){o("get_cam")},C.getMicVol=function(){o("get_mic_vol")},C.start=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"127.0.0.1",t=arguments[1];p=e,L=t,S()},C.stop=function(){s()},C.startShareScreen=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";o("ss_start",e)},C.stopShareScreen=function(){o("ss_stop")},t.default=C}])}); |
dist/test.html
0 → 100644
| 1 | +<!DOCTYPE html><html><head><meta charset="UTF-8"><title>UMD PLAYGROUND</title></head><body><div id="stage"></div><script type="text/javascript" src="test.js"></script></body></html> |
dist/test.js
0 → 100644
| 1 | +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.share=t():e.share=t()}(this,function(){return function(e){function t(n){if(_[n])return _[n].exports;var a=_[n]={exports:{},id:n,loaded:!1};return e[n].call(a.exports,a,a.exports,t),a.loaded=!0,a.exports}var _={};return t.m=e,t.c=_,t.p="",t(0)}([function(e,t,_){e.exports=_(3)},function(e,t){"use strict";function _(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var n=function(){function e(e,t){for(var _=0;_<t.length;_++){var n=t[_];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,_,n){return _&&e(t.prototype,_),n&&e(t,n),t}}(),a=function(){function e(){_(this,e),this.MAPS={}}return n(e,[{key:"on",value:function(e,t){if(e&&t){var _=this.MAPS[e];if(!_)return this.MAPS[e]=[t];_.push(t)}}},{key:"off",value:function(e,t){if(e){var _=this.MAPS[e];if(_){if(t)return _.splice(_.indexOf(t),1);_.length=0}}}},{key:"emit",value:function(e,t){if(e){var _=this.MAPS["*"];_&&_.length&&_.forEach(function(_){_(e,t)});var n=this.MAPS[e];n&&n.length&&n.forEach(function(e){e(t)})}}}]),e}();t.default=a},function(e,t,_){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function a(e){var t,_,n,a;n=e.length,t=new Uint8Array(3*n);var r=0;for(_=0;_<n;_++)a=e.charCodeAt(_),a>=1&&a<=127?t[r++]=a:a>2047?(t[r++]=224|a>>12&15,t[r++]=128|a>>6&63,t[r++]=128|a>>0&63):(t[r++]=192|a>>6&31,t[r++]=128|a>>0&63);return new Uint8Array(t.buffer,0,r)}function r(e){var t,_,n,a,r,o;for(t="",n=e.length,_=0;_<n;)switch(a=e[_++],a>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:t+=String.fromCharCode(a);break;case 12:case 13:r=e[_++],t+=String.fromCharCode((31&a)<<6|63&r);break;case 14:r=e[_++],o=e[_++],t+=String.fromCharCode((15&a)<<12|(63&r)<<6|(63&o)<<0)}return t}function o(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",_=new Object;if(_.data_len=0,_.data="",_.name=e,"mov_start"==e)_.type=1;else if("mov_stop"==e)_.type=2;else if("mov_pause"==e){if(_.type=3,pos=t,pos.length>0){_.data_len=4;var n=new ArrayBuffer(_.data_len),r=new Uint32Array(n,0,1);r[0]=parseInt(pos),_.data=new Uint8Array(n,0,4)}}else if("mov_resume"==e)_.type=4;else if("mov_seek"==e){if(_.type=5,pos=t,pos.length>0){_.data_len=4;var n=new ArrayBuffer(_.data_len),r=new Uint32Array(n,0,1);r[0]=parseInt(pos),_.data=new Uint8Array(n,0,4)}}else if("ss_start"==e)_.type=6,_.data=a(t),_.data_len=_.data.length;else if("ss_stop"==e)_.type=7;else if("ss_version"==e)_.type=14;else if("get_mic"==e)_.type=26;else{if("ds_start"==e){_.type=27,_.data_len=536;var n=new ArrayBuffer(_.data_len),o=new Uint32Array(n,0,6);coordstr=t;var A=coordstr.split(",");if(4!=A.length)return;o[0]=parseInt(A[0]),o[1]=parseInt(A[1]),o[2]=parseInt(A[2]),o[3]=parseInt(A[3]);var s=new Uint8Array(n,24,256);window_name=t;for(var S=a(window_name),l=0;l<S.length;l++)s[l]=S[l];o[4]=S.length,o[5]=0;new Uint8Array(n,280,256);return _.data=new Uint8Array(n,0,_.data_len),void i(_)}if("ds_stop"==e)_.type=28;else{if("aud_start"==e){_.type=29,_.data_len=520;var n=new ArrayBuffer(_.data_len),E=new Uint32Array(n,0,1),f=t;E[0]=f.length;var c=new Uint32Array(n,4,1);c[0]=0;for(var C=new Uint8Array(n,8,256),O=a(f),l=0;l<O.length;l++)C[l]=O[l];new Uint8Array(n,264,256);return _.data=new Uint8Array(n,0,_.data_len),void i(_)}if("aud_stop"==e)_.type=30;else if("get_cam"==e)_.type=41;else{if("cam_start"==e){_.type=42,_.data_len=520;var n=new ArrayBuffer(_.data_len),u=new Uint32Array(n,0,1),T=t;u[0]=T.length;var c=new Uint32Array(n,4,1);c[0]=0;for(var I=new Uint8Array(n,8,256),U=a(T),l=0;l<U.length;l++)I[l]=U[l];new Uint8Array(n,264,256);return _.data=new Uint8Array(n,0,_.data_len),void i(_)}"cam_stop"==e?_.type=43:"set_videoparam"==e?(_.type=46,_.data=a(t),_.data_len=_.data.length):"get_videoparam"==e?(_.type=47,_.data=a(t),_.data_len=_.data.length):"start_record"==e?(_.type=48,_.data=a(t),_.data_len=_.data.length):"stop_record"==e?(_.type=49,_.data=a(t),_.data_len=_.data.length):"start_push"==e?(_.type=50,_.data=a(t),_.data_len=_.data.length):"stop_push"==e?(_.type=51,_.data=a(t),_.data_len=_.data.length):"get_rtmp_port"==e?_.type=52:"set_mic_vol"==e?(_.type=53,_.data=a(t),_.data_len=_.data.length):"get_mic_vol"==e&&(_.type=54)}}}i(_)}function i(e){var t=8+e.data_len,_=new ArrayBuffer(t),n=new Uint16Array(_,0,1),a=new Uint8Array(_,2,1),r=new Uint32Array(_,4,1);if(n[0]=e.type,a[0]=0,r[0]=e.data_len,e.data_len>0)for(var o=new Uint8Array(_,8,e.data_len),i=0;i<e.data_len;i++)o[i]=e.data[i];R&&R.send(_)}function A(){try{R&&(R.close(),R=R.onopen=R.onclose=R.onerror=R.onmessage=null,f.emit(f.CLOSE))}catch(e){console.log(e)}}function s(){A()}function S(){R&&A(),R=new WebSocket("ws://"+g+":"+p),L=setTimeout(function(){clearTimeout(L),A()},1500),R.timeout=1500,R.binaryType="arraybuffer",R.onopen=function(){clearTimeout(L),o("get_rtmp_port"),o("get_mic"),o("get_cam"),o("get_mic_vol"),f.emit(f.OPEN)},R.onclose=function(){A()},R.onerror=function(){A()},R.onmessage=function(e){var t=e.data;if("string"==typeof e.data)console.log("on message [string] ignore.");else{var _=new DataView(t),n=_.getUint16(0,!0);console.log("onmessage code->",n);var a=(_.getUint8(2,!0),_.getUint32(4,!0));if(n>=0&&n<c.length){c[n]}if(0==n||6==n||8==n)console.log("mov_start,mov_pause,mov_seek success");else if(10==n){if(a>36){var o=new Uint32Array(t,8,8),i="width:"+o[0]+" height:"+o[1];i="framerate:"+o[2]+" duration:"+o[3],i="playpos:"+o[4]+" filesize:"+o[5],C=i;var A=o[6],s=new Uint8Array(t,40,A),S=r(s);C.filename=S,f.emit(f.MOVIE_INFO_CHANGE,C)}}else if(11==n)console.log("ss_start success"),f.emit(f.SS_START);else if(24<=n&&26>=n){if(a>=4){var l=_.getUint32(8,!0);O=l.toString(),f.emit(f.VERSION_INFO_CHANGE,O)}}else if(55==n)console.log("ds_start success");else if(59==n)console.log("as start success");else if(83==n){if(console.log("get camera sucess"),a>4){var E=_.getUint32(8,!0),R=12;u.length=0;for(var g=0;g<E;g++){var p=_.getUint32(R,!0);R+=4;var L=new Uint8Array(t,R,p-1);R+=p;var y=r(L);u.push(y)}f.emit(f.CAMERA_INFO_CHANGE,u)}}else if(53==n){if(a>4){var P=_.getUint32(8,!0),R=12;T.length=0;for(var g=0;g<P;g++){var v=_.getUint32(R,!0);R+=4;var M=new Uint8Array(t,R,v-1);R+=v;var y=r(M);T.push(y)}f.emit(f.MIC_INFO_CHANGE,T)}}else if(85==n)console.log("cam_share success");else if(95==n){console.log("get_videoparam success");var N=new Uint8Array(t,8,t.byteLength-8-1),y=r(N);I=y,f.emit(f.VIDEO_INFO_CHANGE,I)}else if(105==n){console.log("get_rtmp_port_success");var N=new Uint8Array(t,8,t.byteLength-8-1),y=r(N);U=y,f.emit(f.RTMP_PORT_CHANGE,U)}else if(109==n){console.log("get_mic_vol success");var N=new Uint8Array(t,8,t.byteLength-8-1),y=r(N);d=y,f.emit(f.MIC_VOL_CHANGE,d)}else if(111<=n&&114>=n){var N=new Uint8Array(t,8,t.byteLength-8),V=r(N);console.log("url->",V)}else if(13==n)f.emit(f.SS_STOP);else{var N=new Uint8Array(t,8,t.byteLength-8),y=r(N);console.log("data ->",y)}}}}Object.defineProperty(t,"__esModule",{value:!0});var l=_(1),E=n(l),f=new E.default,c=["MOV_START_SUC","MOV_START_FAIL","MOV_STOP_SUC","MOV_STOP_FAIL","MOV_PAUSE_SUC","MOV_PAUSE_FAIL","MOV_RESUME_SUC","MOV_RESUME_FAIL","MOV_SEEK_SUC","MOV_SEEK_FAIL","MOV_PROPERTY","SS_START_SUC","SS_START_FAIL","SS_STOP_SUC","SS_STOP_FAIL","REC_START_SUC","REC_START_FAIL","REC_STOP_SUC","REC_STOP_FAIL","REC_PAUSE_SUC","REC_PAUSE_FAIL","REC_RESUME_SUC","REC_RESUME_FAIL","MOV_PLAY_FINISH","MOV_VERSION","SS_VERSION","REC_VERSION","MOV_SELECT_FILE_CANCEL","QAV_LOGIN_SUC","QAV_LOGIN_FAIL","QAV_LOGOUT_SUC","QAV_LOGOUT_FAIL","QAV_ENTERROOM_SUC","QAV_ENTERROOM_FAIL","QAV_LEAVEROOM_SUC","QAV_LEAVEROOM_FAIL","QAV_OPEN_MIC_SUC","QAV_OPEN_MIC_FAIL","QAV_OPEN_MIC_NODEV","QAV_CLOSE_MIC_SUC","QAV_CLOSE_MIC_FAIL","QAV_CLOSE_MIC_NODEV","QAV_OPEN_PLAYER_SUC","QAV_OPEN_PLAYER_FAIL","QAV_OPEN_PLAYER_NODEV","QAV_CLOSE_PLAYER_SUC","QAV_CLOSE_PLAYER_FAIL","QAV_CLOSE_PLAYER_NODEV","QAV_MUTE_AUDIO_SUC","QAV_MUTE_AUDIO_FAIL","QAV_UNMUTE_AUDIO_SUC","QAV_UNMUTE_AUDIO_FAIL","REC_SAVE_FILE_CANCEL","GET_MIC_SUC","GET_MIC_FAIL","DS_START_SUC","DS_START_FAIL","DS_STOP_SUC","DS_STOP_FAIL","AUD_START_SUC","AUD_START_FAIL","AUD_STOP_SUC","AUD_STOP_FAIL","AUD_DATA","SS_DATA","MOV_DATA","PEN_START_SUC","PEN_START_FAIL","PEN_STOP_SUC","PEN_STOP_FAIL","PEN_VERSION","QAV_DEVICE_SUC","QAV_DEVICE_FAIL","CBD_QUERY_SUC","CBD_QUERY_FAIL","CBD_GET_SUC","CBD_GET_FAIL","FILE_GET_SUC","FILE_GET_FAIL","FILE_SET_SUC","FILE_SET_FAIL","RESTART_SUC","RESTART_FAIL","GET_CAM_SUC","GET_CAM_FAIL","CAM_START_SUC","CAM_START_FAIL","CAM_STOP_SUC","CAM_STOP_FAIL","SWITCH_SCENE_SUC","SWITCH_SCENE_FAIL","PUSH_STREAM_FAIL","SHOW_UI_SUC","SET_VIDEO_PARAM_SUC","SET_VIDEO_PARAM_FAIL","GET_VIDEO_PARAM_SUC","GET_VIDEO_PARAM_FAIL","START_RECORD_SUC","START_RECORD_FAIL","STOP_RECORD_SUC","STOP_RECORD_FAIL","START_PUSH_SUC","START_PUSH_FAIL","STOP_PUSH_SUC","STOP_PUSH_FAIL","GET_RTMP_PORT_SUC","GET_RTMP_PORT_FAIL","SET_MIC_VOL_SUC","SET_MIC_VOL_FAIL","GET_MIC_VOL_SUC","GET_MIC_VOL_FAIL","RTMP_CONNECTING","RTMP_CONNECT_SUC","RTMP_CONNECT_FAIL","RTMP_CONNECT_CLOSED"],C=null,O="",u=[],T=[],I="",U="",d="",R=null,g="127.0.0.1",p=8090,L=0;f.infos={movieInfo:C,versionInfo:O,cameraInfo:u,micInfo:T,videoInfo:I,rtmpPort:U,micVol:d},f.MOVIE_INFO_CHANGE="MOVIE_INFO_CHANGE",f.VERSION_INFO_CHANGE="VERSION_INFO_CHANGE",f.CAMERA_INFO_CHANGE="CAMERA_INFO_CHANGE",f.MIC_INFO_CHANGE="MIC_INFO_CHANGE",f.VIDEO_INFO_CHANGE="VIDEO_INFO_CHANGE",f.RTMP_PORT_CHANGE="RTMP_PORT_CHANGE",f.MIC_VOL_CHANGE="MIC_VOL_CHANGE",f.SS_START="SS_START",f.SS_STOP="SS_STOP",f.OPEN="OPEN",f.CLOSE="CLOSE",f.ERROR="ERROR",f.getRTMPPort=function(){o("get_rtmp_port")},f.getMicInfo=function(){o("get_mic")},f.getCamInfo=function(){o("get_cam")},f.getMicVol=function(){o("get_mic_vol")},f.start=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"127.0.0.1",t=arguments[1];g=e,p=t,S()},f.stop=function(){s()},f.startShareScreen=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";o("ss_start",e)},f.stopShareScreen=function(){o("ss_stop")},t.default=f},function(e,t,_){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function a(){console.log("发起屏幕"),i.default.startShareScreen("rtmp://123.56.205.116/live/alexwang")}function r(){console.log("关闭屏幕"),i.default.stopShareScreen()}var o=_(2),i=n(o);i.default.on(i.default.SS_START,function(){console.log("SS_START"),setTimeout(function(){r()},200)}),i.default.on(i.default.SS_STOP,function(){console.log("SS_STOP"),setTimeout(function(){a()},500)}),i.default.on(i.default.ERROR,function(){console.log("ERROR")}),i.default.on(i.default.CLOSE,function(){console.log("CLOSE")}),i.default.on(i.default.OPEN,function(){console.log("OPEN"),a()}),i.default.start("192.168.222.216",8090)}])}); |
| @@ -15,7 +15,9 @@ | @@ -15,7 +15,9 @@ | ||
| 15 | ], | 15 | ], |
| 16 | "author": "AlexWang", | 16 | "author": "AlexWang", |
| 17 | "license": "MIT", | 17 | "license": "MIT", |
| 18 | - "dependencies": {}, | 18 | + "dependencies": { |
| 19 | + "buffer": "^5.0.6" | ||
| 20 | + }, | ||
| 19 | "wbp": { | 21 | "wbp": { |
| 20 | "project": "umd", | 22 | "project": "umd", |
| 21 | "entries": { | 23 | "entries": { |
| @@ -25,4 +27,4 @@ | @@ -25,4 +27,4 @@ | ||
| 25 | "source": "src/", | 27 | "source": "src/", |
| 26 | "build": "dist/" | 28 | "build": "dist/" |
| 27 | } | 29 | } |
| 28 | -} | ||
| 30 | +} |
src/Emiter.js
0 → 100644
| 1 | +// ////////////////////////////////////////////////////////////////////////////// | ||
| 2 | +// | ||
| 3 | +// Copyright (C) 2016-present All Rights Reserved. | ||
| 4 | +// Licensed under the Apache License, Version 2.0 (the "License"); | ||
| 5 | +// http://www.apache.org/licenses/LICENSE-2.0 | ||
| 6 | +// | ||
| 7 | +// Github Home: https://github.com/AlexWang1987 | ||
| 8 | +// Author: AlexWang | ||
| 9 | +// Date: 2017-05-20 11:55:44 | ||
| 10 | +// QQ Email: 1669499355@qq.com | ||
| 11 | +// Last Modified time: 2017-05-20 11:55:45 | ||
| 12 | +// Description: saas-Emiter | ||
| 13 | +// | ||
| 14 | +// ////////////////////////////////////////////////////////////////////////////// | ||
| 15 | + | ||
| 16 | +export default class Emiter { | ||
| 17 | + constructor() { | ||
| 18 | + this.MAPS = {}; | ||
| 19 | + } | ||
| 20 | + on(eid, elistener) { | ||
| 21 | + if (eid && elistener) { | ||
| 22 | + let stub = this.MAPS[eid]; | ||
| 23 | + if (!stub) { | ||
| 24 | + return this.MAPS[eid] = [elistener]; | ||
| 25 | + } | ||
| 26 | + stub.push(elistener); | ||
| 27 | + } | ||
| 28 | + } | ||
| 29 | + off(eid, elistener) { | ||
| 30 | + if (eid) { | ||
| 31 | + let stub = this.MAPS[eid]; | ||
| 32 | + if (stub) { | ||
| 33 | + if (elistener) { | ||
| 34 | + return stub.splice(stub.indexOf(elistener), 1); | ||
| 35 | + } | ||
| 36 | + stub.length = 0; | ||
| 37 | + } | ||
| 38 | + } | ||
| 39 | + } | ||
| 40 | + emit(eid, data) { | ||
| 41 | + if (eid) { | ||
| 42 | + //eid=* broadcast | ||
| 43 | + let asteriskStub = this.MAPS['*']; | ||
| 44 | + if (asteriskStub && asteriskStub.length) { | ||
| 45 | + asteriskStub.forEach(function (elistener) { | ||
| 46 | + elistener(eid, data); | ||
| 47 | + }) | ||
| 48 | + } | ||
| 49 | + | ||
| 50 | + // eid= normal | ||
| 51 | + let stub = this.MAPS[eid]; | ||
| 52 | + if (stub && stub.length) { | ||
| 53 | + stub.forEach(function (elistener) { | ||
| 54 | + elistener(data); | ||
| 55 | + }); | ||
| 56 | + } | ||
| 57 | + } | ||
| 58 | + } | ||
| 59 | +} |
src/Loger.js
0 → 100644
| 1 | +// ////////////////////////////////////////////////////////////////////////////// | ||
| 2 | +// | ||
| 3 | +// Copyright (C) 2016-present All Rights Reserved. | ||
| 4 | +// Licensed under the Apache License, Version 2.0 (the "License"); | ||
| 5 | +// http://www.apache.org/licenses/LICENSE-2.0 | ||
| 6 | +// | ||
| 7 | +// Github Home: https://github.com/AlexWang1987 | ||
| 8 | +// Author: AlexWang | ||
| 9 | +// Date: 2016-08-27 22:58:47 | ||
| 10 | +// QQ Email: 1669499355@qq.com | ||
| 11 | +// Last Modified time: 2017-05-20 11:56:07 | ||
| 12 | +// Description: LiveClass-Loger | ||
| 13 | +// | ||
| 14 | +// ////////////////////////////////////////////////////////////////////////////// | ||
| 15 | + | ||
| 16 | +class Loger { | ||
| 17 | + constructor(info) { | ||
| 18 | + this.info = info || ''; | ||
| 19 | + this.id = this.initId(); | ||
| 20 | + } | ||
| 21 | + | ||
| 22 | + initId() { | ||
| 23 | + const infoType = this.info.constructor.name.toLowerCase(); | ||
| 24 | + if (infoType === 'string') { | ||
| 25 | + return this.info; | ||
| 26 | + } | ||
| 27 | + if (infoType === 'object') { | ||
| 28 | + return this.info.mid || ''; | ||
| 29 | + } | ||
| 30 | + return ''; | ||
| 31 | + } | ||
| 32 | + | ||
| 33 | + log(...msg) { | ||
| 34 | + this._log(Loger.LOG, msg); | ||
| 35 | + } | ||
| 36 | + | ||
| 37 | + warn(...msg) { | ||
| 38 | + this._log(Loger.WARN, msg); | ||
| 39 | + } | ||
| 40 | + | ||
| 41 | + error(...msg) { | ||
| 42 | + this._log(Loger.ERROR, msg); | ||
| 43 | + } | ||
| 44 | + | ||
| 45 | + _log(type, msg) { | ||
| 46 | + msg = JSON.stringify(msg); | ||
| 47 | + | ||
| 48 | + let logMsg = `${this.id} -> ${msg}`; | ||
| 49 | + if (type >= Loger.logLevel) { | ||
| 50 | + switch (type) { | ||
| 51 | + case Loger.LOG: | ||
| 52 | + console.log(logMsg); | ||
| 53 | + break; | ||
| 54 | + case Loger.WARN: | ||
| 55 | + console.warn(logMsg); | ||
| 56 | + break; | ||
| 57 | + case Loger.ERROR: | ||
| 58 | + console.error(logMsg); | ||
| 59 | + break; | ||
| 60 | + } | ||
| 61 | + } | ||
| 62 | + } | ||
| 63 | +} | ||
| 64 | + | ||
| 65 | +Loger.LOG = 0; | ||
| 66 | +Loger.WARN = 1; | ||
| 67 | +Loger.ERROR = 2; | ||
| 68 | +Loger.NO = Infinity; | ||
| 69 | +Loger.logLevel = Loger.LOG; | ||
| 70 | + | ||
| 71 | +export default { | ||
| 72 | + getLoger: function getLoger(info) { | ||
| 73 | + return new Loger(info); | ||
| 74 | + }, | ||
| 75 | + setLogLevel: function setLogLevel(logLevel) { | ||
| 76 | + Loger.logLevel = logLevel; | ||
| 77 | + }, | ||
| 78 | + LOG: Loger.LOG, | ||
| 79 | + WARN: Loger.WARN, | ||
| 80 | + ERROR: Loger.ERROR, | ||
| 81 | + NO: Loger.NO, | ||
| 82 | +}; |
src/Socket.js
0 → 100644
| 1 | +// ////////////////////////////////////////////////////////////////////////////// | ||
| 2 | +// | ||
| 3 | +// Copyright (C) 2016-present | ||
| 4 | +// All Rights Reserved. | ||
| 5 | +// | ||
| 6 | +// Author: AlexWang | ||
| 7 | +// Date: 2016-08-27 21:40:49 | ||
| 8 | +// Last Modified by: AlexWang | ||
| 9 | +// Last Modified time: 2017-05-20 12:38:31 | ||
| 10 | +// QQ Email: 1669499355@qq.com | ||
| 11 | +// Description: 底层Socket管理器,保持一直在线及异常重连. | ||
| 12 | +// | ||
| 13 | +// ////////////////////////////////////////////////////////////////////////////// | ||
| 14 | + | ||
| 15 | +import Emiter from 'Emiter'; | ||
| 16 | +import Loger from 'Loger'; | ||
| 17 | +let loger = Loger.getLoger('EverSocket'); | ||
| 18 | + | ||
| 19 | +class EverSocket extends Emiter { | ||
| 20 | + constructor() { | ||
| 21 | + super(); | ||
| 22 | + this._connected = false; | ||
| 23 | + this._lastActiveTime = 0; | ||
| 24 | + this._enableEverSocket = false; | ||
| 25 | + } | ||
| 26 | + | ||
| 27 | + begin(ip, port) { | ||
| 28 | + loger.log('开始WebSocket应用.'); | ||
| 29 | + this._enableEverSocket = true; | ||
| 30 | + this.wsURL = 'ws://' + ip + ':' + port; | ||
| 31 | + this._newConnection(); | ||
| 32 | + } | ||
| 33 | + | ||
| 34 | + end() { | ||
| 35 | + loger.log('停止WebSocket应用.'); | ||
| 36 | + this._clear(); | ||
| 37 | + } | ||
| 38 | + | ||
| 39 | + get connected() { | ||
| 40 | + return this._connected; | ||
| 41 | + } | ||
| 42 | + | ||
| 43 | + send(data) { | ||
| 44 | + if (this._connected) { | ||
| 45 | + loger.log('SEND MESSAGE---->', data); | ||
| 46 | + this.websocket.send(data); | ||
| 47 | + } else { | ||
| 48 | + loger.warn('WebSocket未建立连接.消息忽略'); | ||
| 49 | + } | ||
| 50 | + } | ||
| 51 | + | ||
| 52 | + _setConnected(isConn = true) { | ||
| 53 | + this._connected = isConn; | ||
| 54 | + if (this._connected) { | ||
| 55 | + this.emit(EverSocket.OPEN); | ||
| 56 | + } else { | ||
| 57 | + this.emit(EverSocket.CLOSED); | ||
| 58 | + } | ||
| 59 | + } | ||
| 60 | + | ||
| 61 | + _newConnection() { | ||
| 62 | + this.websocket = new WebSocket(this.wsURL); | ||
| 63 | + this.websocket.binaryType = 'arraybuffer'; | ||
| 64 | + this.websocket.onopen = this._onOpen.bind(this); | ||
| 65 | + this.websocket.onclose = this._onClose.bind(this); | ||
| 66 | + this.websocket.onerror = this._onError.bind(this); | ||
| 67 | + this.websocket.onmessage = this._onMessage.bind(this); | ||
| 68 | + } | ||
| 69 | + | ||
| 70 | + _reConnection() { | ||
| 71 | + this._clear(); | ||
| 72 | + this.reConnectionTimeout = window.setTimeout(() => { | ||
| 73 | + loger.log('WebSocket重新建立.'); | ||
| 74 | + window.clearTimeout(this.reConnectionTimeout); | ||
| 75 | + this._newConnection(); | ||
| 76 | + }, EverSocket.RECONN_INTERVAL); | ||
| 77 | + } | ||
| 78 | + | ||
| 79 | + _clear() { | ||
| 80 | + loger.log('WebSocket,Timers销毁'); | ||
| 81 | + window.clearInterval(this.pingTimer); | ||
| 82 | + window.clearInterval(this.pongTimer); | ||
| 83 | + this.websocket.onopen = undefined; | ||
| 84 | + this.websocket.onclose = undefined; | ||
| 85 | + this.websocket.onerror = undefined; | ||
| 86 | + this.websocket.onmessage = undefined; | ||
| 87 | + try { | ||
| 88 | + this.websocket.close(); | ||
| 89 | + } catch (e) { | ||
| 90 | + loger.log('ignore errors'); | ||
| 91 | + } | ||
| 92 | + this.websocket = undefined; | ||
| 93 | + this._enableEverSocket = false; | ||
| 94 | + this._setConnected(false); | ||
| 95 | + } | ||
| 96 | + | ||
| 97 | + _onOpen() { | ||
| 98 | + loger.log('WebSocket建立成功', this.wsURL); | ||
| 99 | + //this.pingTimer = window.setInterval(this._sendPingHandler.bind(this), EverSocket.PING_INTERVAL); | ||
| 100 | + //this.pongTimer = window.setInterval(this._checkPongHandler.bind(this), EverSocket.PONG_INTERVAL); | ||
| 101 | + this._setConnected(); | ||
| 102 | + } | ||
| 103 | + | ||
| 104 | + _onClose(closeEvent) { | ||
| 105 | + loger.log(`WebSocket连接断开 CODE:${closeEvent.code} REASON:${closeEvent.reason} CLEAN: ${closeEvent.wasClean}`, this.wsURL); | ||
| 106 | + this._reConnection(); | ||
| 107 | + } | ||
| 108 | + | ||
| 109 | + _onError() { | ||
| 110 | + loger.log('WebSocket错误出现'); | ||
| 111 | + this._connected = false; | ||
| 112 | + this._reConnection(); | ||
| 113 | + } | ||
| 114 | + | ||
| 115 | + _onMessage(messageEvent) { | ||
| 116 | + loger.log('<----RECEIVE MESSAGE'); | ||
| 117 | + this._lastActiveTime = Date.now(); | ||
| 118 | + const bufferData = messageEvent.data; | ||
| 119 | + if (bufferData.byteLength > 0) { | ||
| 120 | + this.emit(EverSocket.MESSAGE, bufferData); | ||
| 121 | + } | ||
| 122 | + } | ||
| 123 | + | ||
| 124 | + _sendPingHandler() { | ||
| 125 | + if (this._connected) { | ||
| 126 | + this.websocket.send(new ArrayBuffer); | ||
| 127 | + } else { | ||
| 128 | + this._reConnection(); | ||
| 129 | + } | ||
| 130 | + } | ||
| 131 | + | ||
| 132 | + _checkPongHandler() { | ||
| 133 | + let pongTime = Date.now(); | ||
| 134 | + if (this._lastActiveTime && | ||
| 135 | + this._lastActiveTime >= pongTime - EverSocket.PONG_INTERVAL && | ||
| 136 | + this._lastActiveTime <= pongTime | ||
| 137 | + ) {} else { | ||
| 138 | + loger.warn('---服务器PINGPONG超时-----'); | ||
| 139 | + this._reConnection(); | ||
| 140 | + } | ||
| 141 | + } | ||
| 142 | +} | ||
| 143 | + | ||
| 144 | +EverSocket.prototype.PONG_INTERVAL = EverSocket.PONG_INTERVAL = 5000; | ||
| 145 | +EverSocket.prototype.PING_INTERVAL = EverSocket.PING_INTERVAL = 3000; | ||
| 146 | +EverSocket.prototype.RECONN_INTERVAL = EverSocket.RECONN_INTERVAL = 2000; | ||
| 147 | +EverSocket.prototype.CONNECTING = EverSocket.CONNECTING = 0; | ||
| 148 | +EverSocket.prototype.OPEN = EverSocket.OPEN = 1; | ||
| 149 | +EverSocket.prototype.CLOSING = EverSocket.CLOSING = 2; | ||
| 150 | +EverSocket.prototype.CLOSED = EverSocket.CLOSED = 3; | ||
| 151 | +EverSocket.prototype.MESSAGE = EverSocket.MESSAGE = 4; | ||
| 152 | + | ||
| 153 | +export default new EverSocket(); |
| @@ -6,15 +6,592 @@ | @@ -6,15 +6,592 @@ | ||
| 6 | // | 6 | // |
| 7 | // Github Home: https://github.com/AlexWang1987 | 7 | // Github Home: https://github.com/AlexWang1987 |
| 8 | // Author: AlexWang | 8 | // Author: AlexWang |
| 9 | -// Date: 2017-03-17 11:13:14 | 9 | +// Date: 2017-05-20 16:54:13 |
| 10 | // QQ Email: 1669499355@qq.com | 10 | // QQ Email: 1669499355@qq.com |
| 11 | -// Last Modified time: 2017-03-17 11:13:36 | ||
| 12 | -// Description: wbp-init-umd-main | 11 | +// Last Modified time: 2017-05-26 18:44:59 |
| 12 | +// Description: saas-main | ||
| 13 | // | 13 | // |
| 14 | // ////////////////////////////////////////////////////////////////////////////// | 14 | // ////////////////////////////////////////////////////////////////////////////// |
| 15 | 15 | ||
| 16 | -// only for hot reload | ||
| 17 | -if (module && module.hot) { | ||
| 18 | - module.hot.accept(); | 16 | +import Emiter from './Emiter.js'; |
| 17 | +const e = new Emiter(); | ||
| 18 | + | ||
| 19 | +function utf16to8(str) { | ||
| 20 | + var out, i, len, c; | ||
| 21 | + | ||
| 22 | + len = str.length; | ||
| 23 | + out = new Uint8Array(len * 3); | ||
| 24 | + var utf8len = 0; | ||
| 25 | + for (i = 0; i < len; i++) { | ||
| 26 | + c = str.charCodeAt(i); | ||
| 27 | + if ((c >= 0x0001) && (c <= 0x007F)) { | ||
| 28 | + out[utf8len++] = c; | ||
| 29 | + } else if (c > 0x07FF) { | ||
| 30 | + out[utf8len++] = (0xE0 | ((c >> 12) & 0x0F)); | ||
| 31 | + out[utf8len++] = (0x80 | ((c >> 6) & 0x3F)); | ||
| 32 | + out[utf8len++] = (0x80 | ((c >> 0) & 0x3F)); | ||
| 33 | + } else { | ||
| 34 | + out[utf8len++] = (0xC0 | ((c >> 6) & 0x1F)); | ||
| 35 | + out[utf8len++] = (0x80 | ((c >> 0) & 0x3F)); | ||
| 36 | + } | ||
| 37 | + } | ||
| 38 | + return new Uint8Array(out.buffer, 0, utf8len); | ||
| 39 | +} | ||
| 40 | + | ||
| 41 | +function utf8to16(str) { | ||
| 42 | + var out, i, len, c; | ||
| 43 | + var char2, char3; | ||
| 44 | + | ||
| 45 | + out = ""; | ||
| 46 | + len = str.length; | ||
| 47 | + i = 0; | ||
| 48 | + while (i < len) { | ||
| 49 | + c = str[i++]; | ||
| 50 | + switch (c >> 4) { | ||
| 51 | + case 0: | ||
| 52 | + case 1: | ||
| 53 | + case 2: | ||
| 54 | + case 3: | ||
| 55 | + case 4: | ||
| 56 | + case 5: | ||
| 57 | + case 6: | ||
| 58 | + case 7: | ||
| 59 | + // 0xxxxxxx | ||
| 60 | + out += String.fromCharCode(c); | ||
| 61 | + break; | ||
| 62 | + case 12: | ||
| 63 | + case 13: | ||
| 64 | + // 110x xxxx 10xx xxxx | ||
| 65 | + char2 = str[i++]; | ||
| 66 | + out += String.fromCharCode(((c & 0x1F) << 6) | (char2 & 0x3F)); | ||
| 67 | + break; | ||
| 68 | + case 14: | ||
| 69 | + // 1110 xxxx 10xx xxxx 10xx xxxx | ||
| 70 | + char2 = str[i++]; | ||
| 71 | + char3 = str[i++]; | ||
| 72 | + out += String.fromCharCode(((c & 0x0F) << 12) | | ||
| 73 | + ((char2 & 0x3F) << 6) | | ||
| 74 | + ((char3 & 0x3F) << 0)); | ||
| 75 | + break; | ||
| 76 | + } | ||
| 77 | + } | ||
| 78 | + | ||
| 79 | + return out; | ||
| 80 | +} | ||
| 81 | + | ||
| 82 | +const CODE = [ | ||
| 83 | + "MOV_START_SUC", | ||
| 84 | + "MOV_START_FAIL", | ||
| 85 | + "MOV_STOP_SUC", | ||
| 86 | + "MOV_STOP_FAIL", | ||
| 87 | + "MOV_PAUSE_SUC", | ||
| 88 | + "MOV_PAUSE_FAIL", | ||
| 89 | + "MOV_RESUME_SUC", | ||
| 90 | + "MOV_RESUME_FAIL", | ||
| 91 | + "MOV_SEEK_SUC", | ||
| 92 | + "MOV_SEEK_FAIL", | ||
| 93 | + "MOV_PROPERTY", | ||
| 94 | + "SS_START_SUC", | ||
| 95 | + "SS_START_FAIL", | ||
| 96 | + "SS_STOP_SUC", | ||
| 97 | + "SS_STOP_FAIL", | ||
| 98 | + "REC_START_SUC", | ||
| 99 | + "REC_START_FAIL", | ||
| 100 | + "REC_STOP_SUC", | ||
| 101 | + "REC_STOP_FAIL", | ||
| 102 | + "REC_PAUSE_SUC", | ||
| 103 | + "REC_PAUSE_FAIL", | ||
| 104 | + "REC_RESUME_SUC", | ||
| 105 | + "REC_RESUME_FAIL", | ||
| 106 | + "MOV_PLAY_FINISH", | ||
| 107 | + "MOV_VERSION", | ||
| 108 | + "SS_VERSION", | ||
| 109 | + "REC_VERSION", | ||
| 110 | + "MOV_SELECT_FILE_CANCEL", | ||
| 111 | + "QAV_LOGIN_SUC", | ||
| 112 | + "QAV_LOGIN_FAIL", | ||
| 113 | + "QAV_LOGOUT_SUC", | ||
| 114 | + "QAV_LOGOUT_FAIL", | ||
| 115 | + "QAV_ENTERROOM_SUC", | ||
| 116 | + "QAV_ENTERROOM_FAIL", | ||
| 117 | + "QAV_LEAVEROOM_SUC", | ||
| 118 | + "QAV_LEAVEROOM_FAIL", | ||
| 119 | + "QAV_OPEN_MIC_SUC", | ||
| 120 | + "QAV_OPEN_MIC_FAIL", | ||
| 121 | + "QAV_OPEN_MIC_NODEV", | ||
| 122 | + "QAV_CLOSE_MIC_SUC", | ||
| 123 | + "QAV_CLOSE_MIC_FAIL", | ||
| 124 | + "QAV_CLOSE_MIC_NODEV", | ||
| 125 | + "QAV_OPEN_PLAYER_SUC", | ||
| 126 | + "QAV_OPEN_PLAYER_FAIL", | ||
| 127 | + "QAV_OPEN_PLAYER_NODEV", | ||
| 128 | + "QAV_CLOSE_PLAYER_SUC", | ||
| 129 | + "QAV_CLOSE_PLAYER_FAIL", | ||
| 130 | + "QAV_CLOSE_PLAYER_NODEV", | ||
| 131 | + "QAV_MUTE_AUDIO_SUC", | ||
| 132 | + "QAV_MUTE_AUDIO_FAIL", | ||
| 133 | + "QAV_UNMUTE_AUDIO_SUC", | ||
| 134 | + "QAV_UNMUTE_AUDIO_FAIL", | ||
| 135 | + "REC_SAVE_FILE_CANCEL", | ||
| 136 | + "GET_MIC_SUC", | ||
| 137 | + "GET_MIC_FAIL", | ||
| 138 | + "DS_START_SUC", | ||
| 139 | + "DS_START_FAIL", | ||
| 140 | + "DS_STOP_SUC", | ||
| 141 | + "DS_STOP_FAIL", | ||
| 142 | + "AUD_START_SUC", | ||
| 143 | + "AUD_START_FAIL", | ||
| 144 | + "AUD_STOP_SUC", | ||
| 145 | + "AUD_STOP_FAIL", | ||
| 146 | + "AUD_DATA", | ||
| 147 | + "SS_DATA", | ||
| 148 | + "MOV_DATA", | ||
| 149 | + "PEN_START_SUC", | ||
| 150 | + "PEN_START_FAIL", | ||
| 151 | + "PEN_STOP_SUC", | ||
| 152 | + "PEN_STOP_FAIL", | ||
| 153 | + "PEN_VERSION", | ||
| 154 | + "QAV_DEVICE_SUC", | ||
| 155 | + "QAV_DEVICE_FAIL", | ||
| 156 | + "CBD_QUERY_SUC", | ||
| 157 | + "CBD_QUERY_FAIL", | ||
| 158 | + "CBD_GET_SUC", | ||
| 159 | + "CBD_GET_FAIL", | ||
| 160 | + "FILE_GET_SUC", | ||
| 161 | + "FILE_GET_FAIL", | ||
| 162 | + "FILE_SET_SUC", | ||
| 163 | + "FILE_SET_FAIL", | ||
| 164 | + "RESTART_SUC", | ||
| 165 | + "RESTART_FAIL", | ||
| 166 | + "GET_CAM_SUC", | ||
| 167 | + "GET_CAM_FAIL", | ||
| 168 | + "CAM_START_SUC", | ||
| 169 | + "CAM_START_FAIL", | ||
| 170 | + "CAM_STOP_SUC", | ||
| 171 | + "CAM_STOP_FAIL", | ||
| 172 | + "SWITCH_SCENE_SUC", | ||
| 173 | + "SWITCH_SCENE_FAIL", | ||
| 174 | + "PUSH_STREAM_FAIL", | ||
| 175 | + "SHOW_UI_SUC", | ||
| 176 | + "SET_VIDEO_PARAM_SUC", | ||
| 177 | + "SET_VIDEO_PARAM_FAIL", | ||
| 178 | + "GET_VIDEO_PARAM_SUC", | ||
| 179 | + "GET_VIDEO_PARAM_FAIL", | ||
| 180 | + "START_RECORD_SUC", | ||
| 181 | + "START_RECORD_FAIL", | ||
| 182 | + "STOP_RECORD_SUC", | ||
| 183 | + "STOP_RECORD_FAIL", | ||
| 184 | + "START_PUSH_SUC", | ||
| 185 | + "START_PUSH_FAIL", | ||
| 186 | + "STOP_PUSH_SUC", | ||
| 187 | + "STOP_PUSH_FAIL", | ||
| 188 | + "GET_RTMP_PORT_SUC", | ||
| 189 | + "GET_RTMP_PORT_FAIL", | ||
| 190 | + "SET_MIC_VOL_SUC", | ||
| 191 | + "SET_MIC_VOL_FAIL", | ||
| 192 | + "GET_MIC_VOL_SUC", | ||
| 193 | + "GET_MIC_VOL_FAIL", | ||
| 194 | + "RTMP_CONNECTING", | ||
| 195 | + "RTMP_CONNECT_SUC", | ||
| 196 | + "RTMP_CONNECT_FAIL", | ||
| 197 | + "RTMP_CONNECT_CLOSED" | ||
| 198 | +]; | ||
| 199 | + | ||
| 200 | +function sendCommand(cmdName, cmdParams = '') { | ||
| 201 | + var cmd = new Object(); | ||
| 202 | + cmd.data_len = 0; | ||
| 203 | + cmd.data = ""; | ||
| 204 | + cmd.name = cmdName; | ||
| 205 | + | ||
| 206 | + if (cmdName == "mov_start") { | ||
| 207 | + cmd.type = 1; | ||
| 208 | + } else if (cmdName == "mov_stop") { | ||
| 209 | + cmd.type = 2; | ||
| 210 | + } else if (cmdName == "mov_pause") { | ||
| 211 | + cmd.type = 3; | ||
| 212 | + // var pos = document.getElementById("mov_pos").value; | ||
| 213 | + pos = cmdParams; | ||
| 214 | + if (pos.length > 0) { | ||
| 215 | + cmd.data_len = 4; | ||
| 216 | + var buffer = new ArrayBuffer(cmd.data_len); | ||
| 217 | + var Uint32param = new Uint32Array(buffer, 0, 1); | ||
| 218 | + Uint32param[0] = parseInt(pos); | ||
| 219 | + cmd.data = new Uint8Array(buffer, 0, 4); | ||
| 220 | + } | ||
| 221 | + } else if (cmdName == "mov_resume") { | ||
| 222 | + cmd.type = 4; | ||
| 223 | + } else if (cmdName == "mov_seek") { | ||
| 224 | + cmd.type = 5; | ||
| 225 | + // var pos = document.getElementById("mov_pos").value; | ||
| 226 | + pos = cmdParams; | ||
| 227 | + if (pos.length > 0) { | ||
| 228 | + cmd.data_len = 4; | ||
| 229 | + var buffer = new ArrayBuffer(cmd.data_len); | ||
| 230 | + var Uint32param = new Uint32Array(buffer, 0, 1); | ||
| 231 | + Uint32param[0] = parseInt(pos); | ||
| 232 | + cmd.data = new Uint8Array(buffer, 0, 4); | ||
| 233 | + } | ||
| 234 | + } else if (cmdName == "ss_start") { | ||
| 235 | + cmd.type = 6; | ||
| 236 | + // var param = document.getElementById("ss_start_input"); | ||
| 237 | + // param = cmdParams; | ||
| 238 | + cmd.data = utf16to8(cmdParams); | ||
| 239 | + cmd.data_len = cmd.data.length; | ||
| 240 | + } else if (cmdName == "ss_stop") { | ||
| 241 | + cmd.type = 7; | ||
| 242 | + } else if (cmdName == "ss_version") { | ||
| 243 | + cmd.type = 14; | ||
| 244 | + } else if (cmdName == "get_mic") { | ||
| 245 | + cmd.type = 26; | ||
| 246 | + } else if (cmdName == "ds_start") { | ||
| 247 | + cmd.type = 27; | ||
| 248 | + cmd.data_len = 4 * 6 + 256 + 256; | ||
| 249 | + var buffer = new ArrayBuffer(cmd.data_len); | ||
| 250 | + var int32param = new Uint32Array(buffer, 0, 6); | ||
| 251 | + // var coordstr = document.getElementById("ds_start_coord").value; | ||
| 252 | + coordstr = cmdParams; | ||
| 253 | + var coordarray = coordstr.split(","); | ||
| 254 | + if (coordarray.length == 4) { | ||
| 255 | + int32param[0] = parseInt(coordarray[0]); | ||
| 256 | + int32param[1] = parseInt(coordarray[1]); | ||
| 257 | + int32param[2] = parseInt(coordarray[2]); | ||
| 258 | + int32param[3] = parseInt(coordarray[3]); | ||
| 259 | + } else { | ||
| 260 | + //promopt error parameter | ||
| 261 | + return; // | ||
| 262 | + } | ||
| 263 | + | ||
| 264 | + var window_name_buffer = new Uint8Array(buffer, 24, 256); | ||
| 265 | + // var window_name = document.getElementById("ds_start_window_name").value; | ||
| 266 | + window_name = cmdParams; | ||
| 267 | + //var window_name_array = new TextEncoder("utf-8").encode(window_name); | ||
| 268 | + var window_name_array = utf16to8(window_name); | ||
| 269 | + for (var i = 0; i < window_name_array.length; i++) { | ||
| 270 | + window_name_buffer[i] = window_name_array[i]; | ||
| 271 | + } | ||
| 272 | + | ||
| 273 | + int32param[4] = window_name_array.length; | ||
| 274 | + int32param[5] = 0; | ||
| 275 | + | ||
| 276 | + var url_name = new Uint8Array(buffer, 24 + 256, 256); //todo: set push url | ||
| 277 | + cmd.data = new Uint8Array(buffer, 0, cmd.data_len); | ||
| 278 | + _sendCommand(cmd); | ||
| 279 | + return; | ||
| 280 | + } else if (cmdName == "ds_stop") { | ||
| 281 | + cmd.type = 28; | ||
| 282 | + } else if (cmdName == "aud_start") { | ||
| 283 | + cmd.type = 29; | ||
| 284 | + cmd.data_len = 4 + 4 + 256 + 256; | ||
| 285 | + var buffer = new ArrayBuffer(cmd.data_len); | ||
| 286 | + var mic_name_len = new Uint32Array(buffer, 0, 1); | ||
| 287 | + var sel_mic_name = cmdParams; | ||
| 288 | + mic_name_len[0] = sel_mic_name.length; | ||
| 289 | + var urlname_len = new Uint32Array(buffer, 4, 1); | ||
| 290 | + urlname_len[0] = 0; | ||
| 291 | + var mic_name = new Uint8Array(buffer, 8, 256); | ||
| 292 | + var mic_name_array = utf16to8(sel_mic_name); | ||
| 293 | + for (var i = 0; i < mic_name_array.length; i++) { | ||
| 294 | + mic_name[i] = mic_name_array[i]; | ||
| 295 | + } | ||
| 296 | + var url_name = new Uint8Array(buffer, 8 + 256, 256); | ||
| 297 | + cmd.data = new Uint8Array(buffer, 0, cmd.data_len); | ||
| 298 | + _sendCommand(cmd); | ||
| 299 | + return; | ||
| 300 | + } else if (cmdName == "aud_stop") { | ||
| 301 | + cmd.type = 30; | ||
| 302 | + } else if (cmdName == "get_cam") { | ||
| 303 | + cmd.type = 41; | ||
| 304 | + } else if (cmdName == "cam_start") { | ||
| 305 | + cmd.type = 42; | ||
| 306 | + cmd.data_len = 4 + 4 + 256 + 256; | ||
| 307 | + var buffer = new ArrayBuffer(cmd.data_len); | ||
| 308 | + var cam_name_len = new Uint32Array(buffer, 0, 1); | ||
| 309 | + var sel_cam_name = cmdParams; | ||
| 310 | + cam_name_len[0] = sel_cam_name.length; | ||
| 311 | + var urlname_len = new Uint32Array(buffer, 4, 1); | ||
| 312 | + urlname_len[0] = 0; | ||
| 313 | + var cam_name = new Uint8Array(buffer, 8, 256); | ||
| 314 | + //var cam_name_array = new TextEncoder("utf-8").encode(sel_cam_name); | ||
| 315 | + var cam_name_array = utf16to8(sel_cam_name); | ||
| 316 | + for (var i = 0; i < cam_name_array.length; i++) { | ||
| 317 | + cam_name[i] = cam_name_array[i]; | ||
| 318 | + } | ||
| 319 | + var url_name = new Uint8Array(buffer, 8 + 256, 256); //todo: set push url | ||
| 320 | + cmd.data = new Uint8Array(buffer, 0, cmd.data_len); | ||
| 321 | + _sendCommand(cmd); | ||
| 322 | + return; | ||
| 323 | + } else if (cmdName == "cam_stop") { | ||
| 324 | + cmd.type = 43; | ||
| 325 | + } else if (cmdName == "set_videoparam") { | ||
| 326 | + cmd.type = 46; | ||
| 327 | + cmd.data = utf16to8(cmdParams); | ||
| 328 | + cmd.data_len = cmd.data.length; | ||
| 329 | + } else if (cmdName == "get_videoparam") { | ||
| 330 | + cmd.type = 47; | ||
| 331 | + cmd.data = utf16to8(cmdParams); | ||
| 332 | + cmd.data_len = cmd.data.length; | ||
| 333 | + } else if (cmdName == "start_record") { | ||
| 334 | + cmd.type = 48; | ||
| 335 | + cmd.data = utf16to8(cmdParams); | ||
| 336 | + cmd.data_len = cmd.data.length; | ||
| 337 | + } else if (cmdName == "stop_record") { | ||
| 338 | + cmd.type = 49; | ||
| 339 | + cmd.data = utf16to8(cmdParams); | ||
| 340 | + cmd.data_len = cmd.data.length; | ||
| 341 | + } else if (cmdName == "start_push") { | ||
| 342 | + cmd.type = 50; | ||
| 343 | + cmd.data = utf16to8(cmdParams); | ||
| 344 | + cmd.data_len = cmd.data.length; | ||
| 345 | + } else if (cmdName == "stop_push") { | ||
| 346 | + cmd.type = 51; | ||
| 347 | + cmd.data = utf16to8(cmdParams); | ||
| 348 | + cmd.data_len = cmd.data.length; | ||
| 349 | + } else if (cmdName == "get_rtmp_port") { | ||
| 350 | + cmd.type = 52; | ||
| 351 | + } else if (cmdName == "set_mic_vol") { | ||
| 352 | + cmd.type = 53; | ||
| 353 | + cmd.data = utf16to8(cmdParams); | ||
| 354 | + cmd.data_len = cmd.data.length; | ||
| 355 | + } else if (cmdName == "get_mic_vol") { | ||
| 356 | + cmd.type = 54; | ||
| 357 | + } | ||
| 358 | + _sendCommand(cmd); | ||
| 359 | +} | ||
| 360 | + | ||
| 361 | +function _sendCommand(wsCmd) { | ||
| 362 | + var cmd_buf_len = 2 + 1 * 2 + 4 + wsCmd.data_len; | ||
| 363 | + var buffer = new ArrayBuffer(cmd_buf_len); | ||
| 364 | + var cmd = new Uint16Array(buffer, 0, 1); | ||
| 365 | + var byte_order = new Uint8Array(buffer, 2, 1); | ||
| 366 | + var data_len = new Uint32Array(buffer, 4, 1); | ||
| 367 | + | ||
| 368 | + cmd[0] = wsCmd.type; | ||
| 369 | + byte_order[0] = 0; | ||
| 370 | + data_len[0] = wsCmd.data_len; | ||
| 371 | + | ||
| 372 | + if (wsCmd.data_len > 0) { | ||
| 373 | + var data_buf = new Uint8Array(buffer, 8, wsCmd.data_len); | ||
| 374 | + for (var i = 0; i < wsCmd.data_len; i++) { | ||
| 375 | + data_buf[i] = wsCmd.data[i]; | ||
| 376 | + } | ||
| 377 | + } | ||
| 378 | + | ||
| 379 | + if (ws) ws.send(buffer); | ||
| 380 | +} | ||
| 381 | + | ||
| 382 | +let movieInfo = null; | ||
| 383 | +let versionInfo = ''; | ||
| 384 | +let cameraInfo = []; | ||
| 385 | +let micInfo = []; | ||
| 386 | +let videoInfo = ''; | ||
| 387 | +let rtmpPort = ''; | ||
| 388 | +let micVol = ''; | ||
| 389 | +let ws = null; | ||
| 390 | +let host = '127.0.0.1'; | ||
| 391 | +let port = 8090; | ||
| 392 | +let wstimer = 0; | ||
| 393 | + | ||
| 394 | +function clear() { | ||
| 395 | + try { | ||
| 396 | + if (ws) { | ||
| 397 | + ws.close(); | ||
| 398 | + ws = ws.onopen = ws.onclose = ws.onerror = ws.onmessage = null; | ||
| 399 | + e.emit(e.CLOSE); | ||
| 400 | + } | ||
| 401 | + } catch (er) { | ||
| 402 | + console.log(er); | ||
| 403 | + } | ||
| 404 | +} | ||
| 405 | + | ||
| 406 | +function stop() { | ||
| 407 | + clear(); | ||
| 408 | +} | ||
| 409 | + | ||
| 410 | +function start() { | ||
| 411 | + if (ws) { | ||
| 412 | + clear(); | ||
| 413 | + } | ||
| 414 | + ws = new WebSocket('ws://' + host + ':' + port); | ||
| 415 | + wstimer = setTimeout(() => { | ||
| 416 | + clearTimeout(wstimer); | ||
| 417 | + clear(); | ||
| 418 | + }, 1500) | ||
| 419 | + ws.timeout = 1500; | ||
| 420 | + ws.binaryType = 'arraybuffer'; | ||
| 421 | + ws.onopen = () => { | ||
| 422 | + clearTimeout(wstimer); | ||
| 423 | + sendCommand("get_rtmp_port"); | ||
| 424 | + sendCommand("get_mic"); | ||
| 425 | + sendCommand("get_cam"); | ||
| 426 | + sendCommand("get_mic_vol"); | ||
| 427 | + e.emit(e.OPEN); | ||
| 428 | + } | ||
| 429 | + | ||
| 430 | + ws.onclose = () => { | ||
| 431 | + clear(); | ||
| 432 | + }; | ||
| 433 | + | ||
| 434 | + ws.onerror = () => { | ||
| 435 | + clear(); | ||
| 436 | + } | ||
| 437 | + | ||
| 438 | + ws.onmessage = (evt) => { | ||
| 439 | + const msg = evt.data; | ||
| 440 | + if (typeof (evt.data) === "string") { | ||
| 441 | + console.log('on message [string] ignore.'); | ||
| 442 | + } else { | ||
| 443 | + var dv = new DataView(msg); | ||
| 444 | + var result = dv.getUint16(0, true); | ||
| 445 | + console.log('onmessage code->', result); | ||
| 446 | + var byte_order = dv.getUint8(2, true); | ||
| 447 | + var data_len = dv.getUint32(4, true); | ||
| 448 | + if (result >= 0 && result < CODE.length) { | ||
| 449 | + var resultString = CODE[result]; | ||
| 450 | + } else {} | ||
| 451 | + if (0 == result || 6 == result || 8 == result) { //mov_start,mov_pause,mov_seek success | ||
| 452 | + console.log('mov_start,mov_pause,mov_seek success'); | ||
| 453 | + //playRTMPStream("rtmp://127.0.0.1:" + rtmp_port + "/live/ms"); | ||
| 454 | + } else if (10 == result) { //movie property | ||
| 455 | + if (data_len > 7 * 4 + 8) { | ||
| 456 | + var uint32params = new Uint32Array(msg, 8, 8); | ||
| 457 | + var info = "width:" + uint32params[0] + " height:" + uint32params[1]; | ||
| 458 | + info = "framerate:" + uint32params[2] + " duration:" + uint32params[3]; | ||
| 459 | + info = "playpos:" + uint32params[4] + " filesize:" + uint32params[5]; | ||
| 460 | + movieInfo = info; | ||
| 461 | + var file_name_len = uint32params[6]; | ||
| 462 | + var file_name = new Uint8Array(msg, 40, file_name_len); | ||
| 463 | + var file_name_string = utf8to16(file_name); | ||
| 464 | + movieInfo.filename = file_name_string; | ||
| 465 | + | ||
| 466 | + e.emit(e.MOVIE_INFO_CHANGE, movieInfo); | ||
| 467 | + } | ||
| 468 | + } else if (11 == result) { | ||
| 469 | + console.log('ss_start success'); | ||
| 470 | + e.emit(e.SS_START); | ||
| 471 | + } else if (24 <= result && 26 >= result) { | ||
| 472 | + if (data_len >= 4) { | ||
| 473 | + var version = dv.getUint32(8, true); | ||
| 474 | + versionInfo = version.toString(); | ||
| 475 | + e.emit(e.VERSION_INFO_CHANGE, versionInfo); | ||
| 476 | + } | ||
| 477 | + } else if (55 == result) { //ds_start success | ||
| 478 | + console.log('ds_start success'); | ||
| 479 | + //playRTMPStream("rtmp://127.0.0.1:" + rtmp_port + "/live/ds"); | ||
| 480 | + } else if (59 == result) { //as start success | ||
| 481 | + console.log('as start success'); | ||
| 482 | + //playRTMPStream("rtmp://127.0.0.1:" + rtmp_port + "/live/as"); | ||
| 483 | + } else if (result == 83) { //get camera sucess | ||
| 484 | + console.log('get camera sucess'); | ||
| 485 | + if (data_len > 4) { | ||
| 486 | + var cam_num = dv.getUint32(8, true); | ||
| 487 | + var offset = 12; | ||
| 488 | + cameraInfo.length = 0; | ||
| 489 | + for (var i = 0; i < cam_num; i++) { | ||
| 490 | + var cam_name_len = dv.getUint32(offset, true); | ||
| 491 | + offset += 4; | ||
| 492 | + var cam_name = new Uint8Array(msg, offset, cam_name_len - 1); | ||
| 493 | + offset += cam_name_len; | ||
| 494 | + //var data_sting = new TextDecoder("utf-8").decode(cam_name); | ||
| 495 | + var data_sting = utf8to16(cam_name); | ||
| 496 | + cameraInfo.push(data_sting) | ||
| 497 | + } | ||
| 498 | + e.emit(e.CAMERA_INFO_CHANGE, cameraInfo); | ||
| 499 | + } | ||
| 500 | + } else if (53 == result) { //get mic success | ||
| 501 | + if (data_len > 4) { | ||
| 502 | + var mic_num = dv.getUint32(8, true); | ||
| 503 | + var offset = 12; | ||
| 504 | + micInfo.length = 0; | ||
| 505 | + for (var i = 0; i < mic_num; i++) { | ||
| 506 | + var mic_name_len = dv.getUint32(offset, true); | ||
| 507 | + offset += 4; | ||
| 508 | + var mic_name = new Uint8Array(msg, offset, mic_name_len - 1); | ||
| 509 | + offset += mic_name_len; | ||
| 510 | + //var data_sting = new TextDecoder("utf-8").decode(mic_name); | ||
| 511 | + var data_sting = utf8to16(mic_name); | ||
| 512 | + micInfo.push(data_sting); | ||
| 513 | + } | ||
| 514 | + e.emit(e.MIC_INFO_CHANGE, micInfo); | ||
| 515 | + } | ||
| 516 | + } else if (85 == result) { //cam_share success | ||
| 517 | + console.log('cam_share success'); | ||
| 518 | + //playRTMPStream("rtmp://127.0.0.1:" + rtmp_port + "/live/cs"); | ||
| 519 | + } else if (95 == result) { //get_videoparam success | ||
| 520 | + console.log('get_videoparam success'); | ||
| 521 | + var data = new Uint8Array(msg, 8, msg.byteLength - 8 - 1); | ||
| 522 | + //var data_sting = new TextDecoder("utf-8").decode(data); | ||
| 523 | + var data_sting = utf8to16(data); | ||
| 524 | + videoInfo = data_sting; | ||
| 525 | + e.emit(e.VIDEO_INFO_CHANGE, videoInfo); | ||
| 526 | + } else if (105 == result) { //get_rtmp_port_success | ||
| 527 | + console.log('get_rtmp_port_success'); | ||
| 528 | + var data = new Uint8Array(msg, 8, msg.byteLength - 8 - 1); | ||
| 529 | + //var data_sting = new TextDecoder("utf-8").decode(data); | ||
| 530 | + var data_sting = utf8to16(data); | ||
| 531 | + rtmpPort = data_sting; | ||
| 532 | + e.emit(e.RTMP_PORT_CHANGE, rtmpPort); | ||
| 533 | + } else if (109 == result) { //get_mic_vol success | ||
| 534 | + console.log('get_mic_vol success'); | ||
| 535 | + var data = new Uint8Array(msg, 8, msg.byteLength - 8 - 1); | ||
| 536 | + //var data_sting = new TextDecoder("utf-8").decode(data); | ||
| 537 | + var data_sting = utf8to16(data); | ||
| 538 | + micVol = data_sting; | ||
| 539 | + e.emit(e.MIC_VOL_CHANGE, micVol); | ||
| 540 | + } else if (111 <= result && 114 >= result) { | ||
| 541 | + var data = new Uint8Array(msg, 8, msg.byteLength - 8); | ||
| 542 | + var url = utf8to16(data); | ||
| 543 | + console.log('url->', url); | ||
| 544 | + } else if (13 == result) { | ||
| 545 | + e.emit(e.SS_STOP); | ||
| 546 | + } else { | ||
| 547 | + var data = new Uint8Array(msg, 8, msg.byteLength - 8); | ||
| 548 | + //var data_sting = new TextDecoder("utf-8").decode(data); | ||
| 549 | + var data_sting = utf8to16(data); | ||
| 550 | + console.log('data ->', data_sting); | ||
| 551 | + } | ||
| 552 | + } | ||
| 553 | + } | ||
| 554 | +} | ||
| 555 | + | ||
| 556 | +e.infos = { movieInfo, versionInfo, cameraInfo, micInfo, videoInfo, rtmpPort, micVol } | ||
| 557 | +e.MOVIE_INFO_CHANGE = 'MOVIE_INFO_CHANGE'; | ||
| 558 | +e.VERSION_INFO_CHANGE = 'VERSION_INFO_CHANGE'; | ||
| 559 | +e.CAMERA_INFO_CHANGE = 'CAMERA_INFO_CHANGE'; | ||
| 560 | +e.MIC_INFO_CHANGE = 'MIC_INFO_CHANGE'; | ||
| 561 | +e.VIDEO_INFO_CHANGE = 'VIDEO_INFO_CHANGE'; | ||
| 562 | +e.RTMP_PORT_CHANGE = 'RTMP_PORT_CHANGE'; | ||
| 563 | +e.MIC_VOL_CHANGE = 'MIC_VOL_CHANGE'; | ||
| 564 | +e.SS_START = 'SS_START'; | ||
| 565 | +e.SS_STOP = 'SS_STOP'; | ||
| 566 | +e.OPEN = 'OPEN'; | ||
| 567 | +e.CLOSE = 'CLOSE'; | ||
| 568 | +e.ERROR = 'ERROR'; | ||
| 569 | + | ||
| 570 | +e.getRTMPPort = () => { | ||
| 571 | + sendCommand('get_rtmp_port'); | ||
| 572 | +} | ||
| 573 | +e.getMicInfo = () => { | ||
| 574 | + sendCommand('get_mic'); | ||
| 575 | +} | ||
| 576 | +e.getCamInfo = () => { | ||
| 577 | + sendCommand('get_cam'); | ||
| 578 | +} | ||
| 579 | +e.getMicVol = () => { | ||
| 580 | + sendCommand('get_mic_vol'); | ||
| 581 | +} | ||
| 582 | +e.start = (_host = '127.0.0.1', _port) => { | ||
| 583 | + host = _host; | ||
| 584 | + port = _port; | ||
| 585 | + start(); | ||
| 586 | +} | ||
| 587 | +e.stop = () => { | ||
| 588 | + stop(); | ||
| 589 | +} | ||
| 590 | +e.startShareScreen = (params = '') => { | ||
| 591 | + sendCommand('ss_start', params); | ||
| 592 | +} | ||
| 593 | +e.stopShareScreen = () => { | ||
| 594 | + sendCommand('ss_stop'); | ||
| 19 | } | 595 | } |
| 20 | 596 | ||
| 597 | +export default e; |
| 1 | -// ////////////////////////////////////////////////////////////////////////////// | ||
| 2 | -// | ||
| 3 | -// Copyright (C) 2016-present All Rights Reserved. | ||
| 4 | -// Licensed under the Apache License, Version 2.0 (the "License"); | ||
| 5 | -// http://www.apache.org/licenses/LICENSE-2.0 | ||
| 6 | -// | ||
| 7 | -// Github Home: https://github.com/AlexWang1987 | ||
| 8 | -// Author: AlexWang | ||
| 9 | -// Date: 2017-03-17 11:13:11 | ||
| 10 | -// QQ Email: 1669499355@qq.com | ||
| 11 | -// Last Modified time: 2017-03-17 11:13:45 | ||
| 12 | -// Description: wbp-init-umd-test | ||
| 13 | -// | ||
| 14 | -// ////////////////////////////////////////////////////////////////////////////// | ||
| 15 | - | ||
| 16 | -// only for hot reload | ||
| 17 | -if (module && module.hot) { | ||
| 18 | - module.hot.accept(); | 1 | +import ss from 'main.js'; |
| 2 | + | ||
| 3 | +// 媒体信息 | ||
| 4 | +ss.on(ss.MOVIE_INFO_CHANGE, (d) => { | ||
| 5 | + console.log('MOVIE_INFO_CHANGE->', d); | ||
| 6 | +}) | ||
| 7 | + | ||
| 8 | +// 版本信息 | ||
| 9 | +ss.on(ss.VERSION_INFO_CHANGE, (d) => { | ||
| 10 | + console.log('VERSION_INFO_CHANGE->', d); | ||
| 11 | +}) | ||
| 12 | + | ||
| 13 | +// 本地摄像头设备 | ||
| 14 | +ss.on(ss.CAMERA_INFO_CHANGE, (d) => { | ||
| 15 | + console.log('CAMERA_INFO_CHANGE->', d); | ||
| 16 | +}) | ||
| 17 | + | ||
| 18 | +// 本地麦克风设备 | ||
| 19 | +ss.on(ss.MIC_INFO_CHANGE, (d) => { | ||
| 20 | + console.log('MIC_INFO_CHANGE->', d); | ||
| 21 | +}) | ||
| 22 | + | ||
| 23 | +// 视频信息 | ||
| 24 | +ss.on(ss.VIDEO_INFO_CHANGE, (d) => { | ||
| 25 | + console.log('VIDEO_INFO_CHANGE->', d); | ||
| 26 | +}) | ||
| 27 | + | ||
| 28 | +// 本地RTMP服务端口 | ||
| 29 | +ss.on(ss.RTMP_PORT_CHANGE, (d) => { | ||
| 30 | + console.log('RTMP_PORT_CHANGE->', d); | ||
| 31 | +}) | ||
| 32 | + | ||
| 33 | +// 麦克风音量 | ||
| 34 | +ss.on(ss.MIC_VOL_CHANGE, (d) => { | ||
| 35 | + console.log('MIC_VOL_CHANGE->', d); | ||
| 36 | +}) | ||
| 37 | + | ||
| 38 | +function startSS() { | ||
| 39 | + // 发起屏幕共享[推送地址可选] | ||
| 40 | + console.log('发起屏幕'); | ||
| 41 | + ss.startShareScreen('rtmp://123.56.205.116/live/alexwang'); | ||
| 19 | } | 42 | } |
| 20 | 43 | ||
| 44 | +function stopSS() { | ||
| 45 | + // 关闭屏幕共享 | ||
| 46 | + console.log('关闭屏幕'); | ||
| 47 | + //ss.stopShareScreen(); | ||
| 48 | +} | ||
| 49 | + | ||
| 50 | +// 屏幕共享开始 | ||
| 51 | +ss.on(ss.SS_START, () => { | ||
| 52 | + console.log('SS_START'); | ||
| 53 | + setTimeout(() => { | ||
| 54 | + stopSS(); | ||
| 55 | + }, 200) | ||
| 56 | +}) | ||
| 57 | + | ||
| 58 | +// 屏幕共享关闭 | ||
| 59 | +ss.on(ss.SS_STOP, () => { | ||
| 60 | + console.log('SS_STOP'); | ||
| 61 | + setTimeout(() => { | ||
| 62 | + startSS(); | ||
| 63 | + }, 500) | ||
| 64 | +}) | ||
| 65 | + | ||
| 66 | +// 发生错误 | ||
| 67 | +ss.on(ss.ERROR, () => { | ||
| 68 | + console.log('ERROR'); | ||
| 69 | +}) | ||
| 70 | + | ||
| 71 | +// 服务关闭 | ||
| 72 | +ss.on(ss.CLOSE, () => { | ||
| 73 | + console.log('CLOSE'); | ||
| 74 | +}) | ||
| 75 | + | ||
| 76 | +// 服务开启 | ||
| 77 | +ss.on(ss.OPEN, () => { | ||
| 78 | + console.log('OPEN'); | ||
| 79 | + startSS(); | ||
| 80 | +}) | ||
| 81 | + | ||
| 82 | +// 连接本地流媒体服务 | ||
| 83 | +ss.start('192.168.222.216', 8090); |
| 1 | module.exports = function (umdConf) { | 1 | module.exports = function (umdConf) { |
| 2 | umdConf.devServer.host = '0.0.0.0'; | 2 | umdConf.devServer.host = '0.0.0.0'; |
| 3 | + umdConf.devServer.port = '9000'; | ||
| 3 | umdConf.output.publicPath = ''; | 4 | umdConf.output.publicPath = ''; |
| 4 | 5 | ||
| 5 | umdConf.webpackFeatures.enableEntryHTML(); | 6 | umdConf.webpackFeatures.enableEntryHTML(); |
| @@ -14,4 +15,3 @@ module.exports = function (umdConf) { | @@ -14,4 +15,3 @@ module.exports = function (umdConf) { | ||
| 14 | }); | 15 | }); |
| 15 | } | 16 | } |
| 16 | }; | 17 | }; |
| 17 | - |
-
请 注册 或 登录 后发表评论