李勇

1.增加画笔单人控制开启和禁用的功能;2.录制回放模块增加腾讯视频数据过滤,只播放m3u8l类型;3.个人信息中增加是否禁用画笔的字段selfDisEnableDrawTime

不能预览此文件类型
  1 +market_webrtc_发布版
  2 +mcu/ms/rs服务器:腾讯云测试
  3 +appConfig:
  4 +eyJhcHBJZCI6IjBmZTQ1YmJlYTU5YjRlZTU4NmM4ZGVkNjlmMmJjOGY3IiwiYXBwQ2VydGlmaWNhdGUiOiIiLCJhcHBSZWNvcmRpbmdLZXkiOiIiLCJyZWNvcmRJbnRlcmZhY2VzIjoibmV0d29ya3NjaG9vbC54dWVkaWFueXVuLmNvbS9zZXJ2ZXIvdXNlcnMvUmVjb3JkaW5nIiwiZ2V0Q2hhbm5lbFRva2VuIjoibmV0d29ya3NjaG9vbC54dWVkaWFueXVuLmNvbS9zZXJ2ZXIvdXNlcnMvZW5jcnlwdGlvblRva2VuIiwiZ2V0UmVjb3JkSW5mb0ludGVyZmFjZXMiOiJuZXR3b3Jrc2Nob29sLnh1ZWRpYW55dW4uY29tL3NlcnZlci9yZWNvcmRJbmZvL2dldFJlY29yZEluZm8iLCJzdG9wUmVjb3JkaW5nSW50ZXJmYWNlcyI6Im5ldHdvcmtzY2hvb2wueHVlZGlhbnl1bi5jb20vc2VydmVyL3JlY29yZEluZm8vc3RvcFJlY29yZGluZyIsImdldFR4UmVjb3JkSW5mb0ludGVyZmFjZXMiOiJuZXR3b3Jrc2Nob29sLnh1ZWRpYW55dW4uY29tL3NlcnZlci9yZWNvcmRJbmZvL3RlbmNlbnRSZWNvcmRJbmZvIn0=
  5 +
  6 +
  7 +market_webrtc_测试版
  8 +mcu/ms/rs服务器:腾讯云测试
  9 +appConfig: eyJhcHBJZCI6ImViMjUzY2M3YjQwYzRhOGI4MmYwYTViNmY5M2MyY2UwIiwiYXBwQ2VydGlmaWNhdGUiOiIiLCJhcHBSZWNvcmRpbmdLZXkiOiIiLCJyZWNvcmRJbnRlcmZhY2VzIjoibmV0d29ya3NjaG9vbC54dWVkaWFueXVuLmNvbS9zZXJ2ZXIvdXNlcnMvUmVjb3JkaW5nIiwiZ2V0Q2hhbm5lbFRva2VuIjoibmV0d29ya3NjaG9vbC54dWVkaWFueXVuLmNvbS9zZXJ2ZXIvdXNlcnMvZW5jcnlwdGlvblRva2VuIiwiZ2V0UmVjb3JkSW5mb0ludGVyZmFjZXMiOiJuZXR3b3Jrc2Nob29sLnh1ZWRpYW55dW4uY29tL3NlcnZlci9yZWNvcmRJbmZvL2dldFJlY29yZEluZm8iLCJzdG9wUmVjb3JkaW5nSW50ZXJmYWNlcyI6Im5ldHdvcmtzY2hvb2wueHVlZGlhbnl1bi5jb20vc2VydmVyL3JlY29yZEluZm8vc3RvcFJlY29yZGluZyIsImdldFR4UmVjb3JkSW5mb0ludGVyZmFjZXMiOiJuZXR3b3Jrc2Nob29sLnh1ZWRpYW55dW4uY29tL3NlcnZlci9yZWNvcmRJbmZvL3RlbmNlbnRSZWNvcmRJbmZvIn0=
  10 +
  11 +
  12 +market_flash_发布版
  13 +mcu/ms/rs服务器:腾讯云测试
  14 +appConfig: eyJhcHBJZCI6IjBmZTQ1YmJlYTU5YjRlZTU4NmM4ZGVkNjlmMmJjOGY3IiwiYXBwQ2VydGlmaWNhdGUiOiIiLCJhcHBSZWNvcmRpbmdLZXkiOiIiLCJyZWNvcmRJbnRlcmZhY2VzIjoibmV0d29ya3NjaG9vbC54dWVkaWFueXVuLmNvbS9zZXJ2ZXIvdXNlcnMvUmVjb3JkaW5nIiwiZ2V0Q2hhbm5lbFRva2VuIjoibmV0d29ya3NjaG9vbC54dWVkaWFueXVuLmNvbS9zZXJ2ZXIvdXNlcnMvZW5jcnlwdGlvblRva2VuIiwiZ2V0UmVjb3JkSW5mb0ludGVyZmFjZXMiOiJuZXR3b3Jrc2Nob29sLnh1ZWRpYW55dW4uY29tL3NlcnZlci9yZWNvcmRJbmZvL2dldFJlY29yZEluZm8iLCJzdG9wUmVjb3JkaW5nSW50ZXJmYWNlcyI6Im5ldHdvcmtzY2hvb2wueHVlZGlhbnl1bi5jb20vc2VydmVyL3JlY29yZEluZm8vc3RvcFJlY29yZGluZyIsImdldFR4UmVjb3JkSW5mb0ludGVyZmFjZXMiOiJuZXR3b3Jrc2Nob29sLnh1ZWRpYW55dW4uY29tL3NlcnZlci9yZWNvcmRJbmZvL3RlbmNlbnRSZWNvcmRJbmZvIn0=
  15 +
  16 +
  17 +market_flash_测试版
  18 +mcu/ms/rs服务器:腾讯云测试
  19 +appConfig: eyJhcHBJZCI6ImViMjUzY2M3YjQwYzRhOGI4MmYwYTViNmY5M2MyY2UwIiwiYXBwQ2VydGlmaWNhdGUiOiIiLCJhcHBSZWNvcmRpbmdLZXkiOiIiLCJyZWNvcmRJbnRlcmZhY2VzIjoibmV0d29ya3NjaG9vbC54dWVkaWFueXVuLmNvbS9zZXJ2ZXIvdXNlcnMvUmVjb3JkaW5nIiwiZ2V0Q2hhbm5lbFRva2VuIjoibmV0d29ya3NjaG9vbC54dWVkaWFueXVuLmNvbS9zZXJ2ZXIvdXNlcnMvZW5jcnlwdGlvblRva2VuIiwiZ2V0UmVjb3JkSW5mb0ludGVyZmFjZXMiOiJuZXR3b3Jrc2Nob29sLnh1ZWRpYW55dW4uY29tL3NlcnZlci9yZWNvcmRJbmZvL2dldFJlY29yZEluZm8iLCJzdG9wUmVjb3JkaW5nSW50ZXJmYWNlcyI6Im5ldHdvcmtzY2hvb2wueHVlZGlhbnl1bi5jb20vc2VydmVyL3JlY29yZEluZm8vc3RvcFJlY29yZGluZyIsImdldFR4UmVjb3JkSW5mb0ludGVyZmFjZXMiOiJuZXR3b3Jrc2Nob29sLnh1ZWRpYW55dW4uY29tL3NlcnZlci9yZWNvcmRJbmZvL3RlbmNlbnRSZWNvcmRJbmZvIn0=
  1 +{"RS_PULL":{"default":[{"port":"","ip":"playback.xuedianyun.com","name":"record","hlsSuffix":".m3u8","type":"live","rHlsSuffix":"/total.m3u8","publishSuffix":"9f2d3375619115d0115cc2692ede9947"}]},"HLS_PULL":{"default":[{"port":"","ip":"txlivepull.xuedianyun.com","name":"腾讯云","hlsSuffix":".m3u8","type":"live","rHlsSuffix":"/total.m3u8","publishSuffix":"9f2d3375619115d0115cc2692ede9947"}]},"MS":{"default":[{"port":"","ip":"txlivepush.xuedianyun.com","name":"腾讯云","hlsSuffix":".m3u8","type":"live","rHlsSuffix":"/total.m3u8","publishSuffix":"9f2d3375619115d0115cc2692ede9947"}]},"RTMP_PULL":{"default":[{"port":"","ip":"txlivepull.xuedianyun.com","name":"腾讯云","hlsSuffix":".m3u8","type":"live","rHlsSuffix":"/total.m3u8","publishSuffix":"9f2d3375619115d0115cc2692ede9947"}]},"MCU":{"美国":[{"port":"80","ip":"mcuglobal.xuedianyun.com","name":"美国"},{"port":"80","ip":"mcu.xuedianyun.com","name":"全球通"}],"default":[{"port":"80","ip":"mcuchina.xuedianyun.com","name":"中国"}],"中国":{"default":[{"port":"80","ip":"mcuchina.xuedianyun.com","name":"中国"},{"port":"80","ip":"mcu.xuedianyun.com","name":"全球通"}]}}}
@@ -62,7 +62,7 @@ export default class MessageEntrance extends Emiter { @@ -62,7 +62,7 @@ export default class MessageEntrance extends Emiter {
62 constructor() { 62 constructor() {
63 super(); 63 super();
64 //sdk 信息 64 //sdk 信息
65 - GlobalConfig.sdkVersion = "v2.12.14.20170927"; 65 + GlobalConfig.sdkVersion = "v2.13.5.20170927";
66 loger.warn("sdkVersion:" + GlobalConfig.sdkVersion); 66 loger.warn("sdkVersion:" + GlobalConfig.sdkVersion);
67 67
68 //设置 68 //设置
@@ -200,6 +200,8 @@ export default class MessageEntrance extends Emiter { @@ -200,6 +200,8 @@ export default class MessageEntrance extends Emiter {
200 this.controlHandUpStatus = this._controlHandUpStatus.bind(this); //控制别人的举手状态 200 this.controlHandUpStatus = this._controlHandUpStatus.bind(this); //控制别人的举手状态
201 this.controlSilenceStatus = this._controlSilenceStatus.bind(this); //改变禁言状态 201 this.controlSilenceStatus = this._controlSilenceStatus.bind(this); //改变禁言状态
202 202
  203 + this.controlDrawStatus = this._controlDrawStatus.bind(this); //控制别人的是否可以使用画笔状态
  204 +
203 this.sceneTableChange = this._sceneTableChange.bind(this); //切换模块显示 205 this.sceneTableChange = this._sceneTableChange.bind(this); //切换模块显示
204 this.kickOutRosterFormNodeId = this._kickOutRosterFormNodeId.bind(this); //把指定nodeId的人踢出课堂 206 this.kickOutRosterFormNodeId = this._kickOutRosterFormNodeId.bind(this); //把指定nodeId的人踢出课堂
205 this.sendThridChannelMessage = this._sendThridChannelMessage.bind(this);//通道第三方消息通道发送消息 207 this.sendThridChannelMessage = this._sendThridChannelMessage.bind(this);//通道第三方消息通道发送消息
@@ -1621,7 +1623,19 @@ export default class MessageEntrance extends Emiter { @@ -1621,7 +1623,19 @@ export default class MessageEntrance extends Emiter {
1621 _confer_ape.changeHandUpStatus(_param); 1623 _confer_ape.changeHandUpStatus(_param);
1622 } 1624 }
1623 } 1625 }
1624 - 1626 + /*
  1627 + * 控制画笔使用状态
  1628 + * */
  1629 + _controlDrawStatus(_param){
  1630 + //{nodeId:333333,isDisEnableDraw:true}
  1631 + if (!_mcu.connected) {
  1632 + loger.warn(GlobalConfig.getCurrentStatus());
  1633 + return {"code": ApeConsts.RETURN_FAILED, "data": ""};
  1634 + }
  1635 + if (_confer_ape) {
  1636 + _confer_ape.controlDrawStatus(_param);
  1637 + }
  1638 + }
1625 //停止上课 1639 //停止上课
1626 _sendCloseClass(_param) { 1640 _sendCloseClass(_param) {
1627 if (!_mcu||!_mcu.connected) { 1641 if (!_mcu||!_mcu.connected) {
@@ -1683,6 +1697,11 @@ export default class MessageEntrance extends Emiter { @@ -1683,6 +1697,11 @@ export default class MessageEntrance extends Emiter {
1683 loger.log('获取课堂课堂信息完成.',_data.appConfig); 1697 loger.log('获取课堂课堂信息完成.',_data.appConfig);
1684 //包含整个课堂最全的信息,储存数据 1698 //包含整个课堂最全的信息,储存数据
1685 if (_data) { 1699 if (_data) {
  1700 + //老师默认启用画笔功能,其他身份默认禁用画笔功能
  1701 + if(GlobalConfig.userRole==ApeConsts.host){
  1702 + GlobalConfig.selfDisEnableDrawTime=0;
  1703 + }
  1704 +
1686 GlobalConfig.mcuDelay = _data.h5Delay || 0; //mcu消息延迟的时间间隔,单位(秒),结合客户端传的messageDelay的值使用 1705 GlobalConfig.mcuDelay = _data.h5Delay || 0; //mcu消息延迟的时间间隔,单位(秒),结合客户端传的messageDelay的值使用
1687 GlobalConfig.className = _data.meetingName || ""; 1706 GlobalConfig.className = _data.meetingName || "";
1688 GlobalConfig.classBeginTime = _data.beginTime || ""; 1707 GlobalConfig.classBeginTime = _data.beginTime || "";
@@ -494,6 +494,8 @@ GlobalConfig.handUpTime = 0; @@ -494,6 +494,8 @@ GlobalConfig.handUpTime = 0;
494 GlobalConfig.level = 0; 494 GlobalConfig.level = 0;
495 GlobalConfig.openCamera = 0; 495 GlobalConfig.openCamera = 0;
496 GlobalConfig.openMicrophones = 0; 496 GlobalConfig.openMicrophones = 0;
  497 +GlobalConfig.selfDisEnableDrawTime=1;//记录是否禁用画笔,0为启用画笔,大于0时被禁用的时间戳
  498 +
497 //视频质量相关设置 499 //视频质量相关设置
498 GlobalConfig.fps = 15; //帧频 500 GlobalConfig.fps = 15; //帧频
499 GlobalConfig.gop = 3; //关键帧间隔(秒) 501 GlobalConfig.gop = 3; //关键帧间隔(秒)
@@ -439,7 +439,9 @@ class RecordPlayBackParse extends Emiter { @@ -439,7 +439,9 @@ class RecordPlayBackParse extends Emiter {
439 439
440 } 440 }
441 if(itemJson&&itemJson.video_url){ 441 if(itemJson&&itemJson.video_url){
442 - MediaModule.streams[itemJson.stream_id]=itemJson.video_url; 442 + if(itemJson.video_url.indexOf(".m3u8")>0){
  443 + MediaModule.streams[itemJson.stream_id]=itemJson.video_url;
  444 + }
443 } 445 }
444 } 446 }
445 } 447 }
@@ -26,7 +26,7 @@ ApeConsts.CLASS_ACTION_HANDUP_STATUS_CHANGE = 2; //更改用户的举手状态 @@ -26,7 +26,7 @@ ApeConsts.CLASS_ACTION_HANDUP_STATUS_CHANGE = 2; //更改用户的举手状态
26 ApeConsts.USER_ACTION_SILENCE_STATUS_CHANGE = 3; //更改用户的禁言状态 26 ApeConsts.USER_ACTION_SILENCE_STATUS_CHANGE = 3; //更改用户的禁言状态
27 ApeConsts.CLASS_ACTION_KICK_OUT_ROSTER=4; //指定的人踢出课堂 27 ApeConsts.CLASS_ACTION_KICK_OUT_ROSTER=4; //指定的人踢出课堂
28 ApeConsts.STOP_ALL_PUBLISH=5; //所有人停止推流 28 ApeConsts.STOP_ALL_PUBLISH=5; //所有人停止推流
29 - 29 +ApeConsts.CLASS_ACTION_DRAW_STATUS_CHANGE = 6; //更改用户的画笔状态
30 30
31 //课堂类型 1:1v1(2路流) 2:直播(1路流) 3:小班课(可以多路流) 31 //课堂类型 1:1v1(2路流) 2:直播(1路流) 3:小班课(可以多路流)
32 ApeConsts.CLASS_TYPE_1 = 1; // 互动课堂,通过MS转发音视频,不能进行H5观看 1v1(2路流) 32 ApeConsts.CLASS_TYPE_1 = 1; // 互动课堂,通过MS转发音视频,不能进行H5观看 1v1(2路流)
@@ -107,6 +107,7 @@ class ConferApe extends Ape { @@ -107,6 +107,7 @@ class ConferApe extends Ape {
107 nodeInfoRecordPdu.userData = GlobalConfig.userData; 107 nodeInfoRecordPdu.userData = GlobalConfig.userData;
108 nodeInfoRecordPdu.userId = GlobalConfig.userId; 108 nodeInfoRecordPdu.userId = GlobalConfig.userId;
109 nodeInfoRecordPdu.handUpTime = GlobalConfig.handUpTime; 109 nodeInfoRecordPdu.handUpTime = GlobalConfig.handUpTime;
  110 + nodeInfoRecordPdu.selfDisEnableDrawTime = GlobalConfig.selfDisEnableDrawTime;
110 //nodeInfoRecordPdu.deviceType= GlobalConfig.deviceType; 111 //nodeInfoRecordPdu.deviceType= GlobalConfig.deviceType;
111 //nodeInfoRecordPdu.mobileDirection= GlobalConfig.mobileDirection; 112 //nodeInfoRecordPdu.mobileDirection= GlobalConfig.mobileDirection;
112 nodeInfoRecordPdu.microphones = GlobalConfig.microphones; 113 nodeInfoRecordPdu.microphones = GlobalConfig.microphones;
@@ -407,6 +408,18 @@ class ConferApe extends Ape { @@ -407,6 +408,18 @@ class ConferApe extends Ape {
407 loger.warn('学生没有开启绘制的权限'); 408 loger.warn('学生没有开启绘制的权限');
408 } 409 }
409 } 410 }
  411 + //控制指定用户的画笔状态
  412 + changeUserDrawStatus(_param){
  413 + loger.log('控制指定用户的画笔状态->', _param);
  414 + if (_param && _param.isDisEnableDraw == true) {
  415 + //举手
  416 + GlobalConfig.selfDisEnableDrawTime=EngineUtils.creatTimestamp();//被禁用画笔的时间
  417 + } else {
  418 + GlobalConfig.selfDisEnableDrawTime = 0; //取消禁用画笔
  419 + }
  420 + this.updateUserInfo();
  421 + }
  422 +
410 //开始上课 423 //开始上课
411 startClass(_param) { 424 startClass(_param) {
412 if (GlobalConfig.isHost) { 425 if (GlobalConfig.isHost) {
@@ -517,6 +530,25 @@ class ConferApe extends Ape { @@ -517,6 +530,25 @@ class ConferApe extends Ape {
517 console.log(_param); 530 console.log(_param);
518 } 531 }
519 } 532 }
  533 + //控制画笔的使用状态
  534 + controlDrawStatus(_param) {
  535 + //控制用户的举手状态
  536 + if (!_param || !_param.nodeId) {
  537 + loger.log('控制画笔的使用状态->失败->参数错误', _param);
  538 + return;
  539 + }
  540 + let msgObj = {};
  541 + msgObj.nodeId = _param.nodeId;
  542 + msgObj.isDisEnableDraw = false;
  543 + if (_param && _param.isDisEnableDraw == true) {
  544 + msgObj.isDisEnableDraw = true;
  545 + }
  546 + this.sendConferMsg({
  547 + "to": _param.nodeId,
  548 + "message": JSON.stringify(msgObj),
  549 + "actionType": ApeConsts.CLASS_ACTION_DRAW_STATUS_CHANGE
  550 + });
  551 + }
520 552
521 //控制举手状态 553 //控制举手状态
522 controlHandUpStatus(_param) { 554 controlHandUpStatus(_param) {
@@ -612,7 +644,7 @@ class ConferApe extends Ape { @@ -612,7 +644,7 @@ class ConferApe extends Ape {
612 let adapterPdu = new pdu['RCAdapterPdu']; 644 let adapterPdu = new pdu['RCAdapterPdu'];
613 adapterPdu.type = pdu.RCPDU_REG_ADAPTER; 645 adapterPdu.type = pdu.RCPDU_REG_ADAPTER;
614 adapterPdu.item.push(adapterItemPdu); 646 adapterPdu.item.push(adapterItemPdu);
615 - 647 + loger.log('发送更新课堂信息->');
616 this.sendUniform(adapterPdu, true); 648 this.sendUniform(adapterPdu, true);
617 } 649 }
618 650
@@ -674,6 +706,8 @@ class ConferApe extends Ape { @@ -674,6 +706,8 @@ class ConferApe extends Ape {
674 GlobalConfig.classTimestamp = GlobalConfig.classTimestamp + 1; //计时 706 GlobalConfig.classTimestamp = GlobalConfig.classTimestamp + 1; //计时
675 //向应用层更新当前课堂进行的时间长度 (秒) 707 //向应用层更新当前课堂进行的时间长度 (秒)
676 this._emit(MessageTypes.CLASS_UPDATE_TIMER, {"classTimestamp": GlobalConfig.classTimestamp}); 708 this._emit(MessageTypes.CLASS_UPDATE_TIMER, {"classTimestamp": GlobalConfig.classTimestamp});
  709 +
  710 + /* 录制消息已经更新了数据,这个课堂内的就不需要再更新,间隔太短了频率太高
677 //以一定的时间间隔同步课堂内所有人的累积上课时间 711 //以一定的时间间隔同步课堂内所有人的累积上课时间
678 if (GlobalConfig.classTimestamp % GlobalConfig.updateClassInfoDelay == 0) { 712 if (GlobalConfig.classTimestamp % GlobalConfig.updateClassInfoDelay == 0) {
679 //如果是host身份,需要同步时间给其他人,同时把当前的状态上传到服务器 713 //如果是host身份,需要同步时间给其他人,同时把当前的状态上传到服务器
@@ -683,7 +717,7 @@ class ConferApe extends Ape { @@ -683,7 +717,7 @@ class ConferApe extends Ape {
683 //同步消息给其他人 717 //同步消息给其他人
684 this.sendUpdaterClassStatusInfo({"actionType": ApeConsts.CLASS_STATUS_STARTED, isStopAllPublishMedia: false}); 718 this.sendUpdaterClassStatusInfo({"actionType": ApeConsts.CLASS_STATUS_STARTED, isStopAllPublishMedia: false});
685 } 719 }
686 - } 720 + }*/
687 721
688 //进行MS动态选点,选择最快的MS服务器地址(录制回放不做处理) 722 //进行MS动态选点,选择最快的MS服务器地址(录制回放不做处理)
689 if (!GlobalConfig.isRecordPlayBack && GlobalConfig.classTimestamp % GlobalConfig.msDynamicChooseIpDelay == 0) { 723 if (!GlobalConfig.isRecordPlayBack && GlobalConfig.classTimestamp % GlobalConfig.msDynamicChooseIpDelay == 0) {
@@ -710,7 +744,6 @@ class ConferApe extends Ape { @@ -710,7 +744,6 @@ class ConferApe extends Ape {
710 //MCU同步消息给其他人 744 //MCU同步消息给其他人
711 this.sendUpdaterClassStatusInfo({"actionType": GlobalConfig.classStatus, isStopAllPublishMedia: false}); 745 this.sendUpdaterClassStatusInfo({"actionType": GlobalConfig.classStatus, isStopAllPublishMedia: false});
712 } 746 }
713 -  
714 } 747 }
715 /* if (GlobalConfig.classStatus == ApeConsts.CLASS_STATUS_STARTED) { 748 /* if (GlobalConfig.classStatus == ApeConsts.CLASS_STATUS_STARTED) {
716 GlobalConfig.classTimestamp = GlobalConfig.classTimestamp + 1; //计时 749 GlobalConfig.classTimestamp = GlobalConfig.classTimestamp + 1; //计时
@@ -875,6 +908,17 @@ class ConferApe extends Ape { @@ -875,6 +908,17 @@ class ConferApe extends Ape {
875 loger.warn('chatMsg->JSON数据解析失败'); 908 loger.warn('chatMsg->JSON数据解析失败');
876 } 909 }
877 break; 910 break;
  911 + case ApeConsts.CLASS_ACTION_DRAW_STATUS_CHANGE:
  912 + let drawMsgObj = null;
  913 + try {
  914 + drawMsgObj = JSON.parse(chatMsg.message);
  915 + if (drawMsgObj && drawMsgObj.nodeId == GlobalConfig.nodeId) {
  916 + this.changeUserDrawStatus(drawMsgObj);
  917 + }
  918 + } catch (err) {
  919 + loger.warn('chatMsg->JSON数据解析失败');
  920 + }
  921 + break;
878 case ApeConsts.USER_ACTION_SILENCE_STATUS_CHANGE: 922 case ApeConsts.USER_ACTION_SILENCE_STATUS_CHANGE:
879 let silenceMsg = null; 923 let silenceMsg = null;
880 try { 924 try {
@@ -218,6 +218,7 @@ class MCU extends Emiter { @@ -218,6 +218,7 @@ class MCU extends Emiter {
218 nodeInfoRecordPdu.role = ApeConsts.userTypesToId[this.classInfo.userRole] || 1; //NR_NORMAL用户的身份,根据用户登录时的身份设置 218 nodeInfoRecordPdu.role = ApeConsts.userTypesToId[this.classInfo.userRole] || 1; //NR_NORMAL用户的身份,根据用户登录时的身份设置
219 nodeInfoRecordPdu.level = 0; 219 nodeInfoRecordPdu.level = 0;
220 nodeInfoRecordPdu.handUpTime = 0; 220 nodeInfoRecordPdu.handUpTime = 0;
  221 + nodeInfoRecordPdu.selfDisEnableDrawTime = 1;
221 nodeInfoRecordPdu.openCamera = 0; 222 nodeInfoRecordPdu.openCamera = 0;
222 nodeInfoRecordPdu.openMicrophones = 0; 223 nodeInfoRecordPdu.openMicrophones = 0;
223 nodeInfoRecordPdu.microphones = GlobalConfig.microphones; 224 nodeInfoRecordPdu.microphones = GlobalConfig.microphones;
@@ -928,6 +928,7 @@ message RCNodeInfoRecordPdu { @@ -928,6 +928,7 @@ message RCNodeInfoRecordPdu {
928 optional string sdkVersion = 36;//SDK版本 928 optional string sdkVersion = 36;//SDK版本
929 optional uint32 micNoise=37; 929 optional uint32 micNoise=37;
930 optional bool autoGain=38; 930 optional bool autoGain=38;
  931 + optional uint32 selfDisEnableDrawTime = 39;
931 } 932 }
932 933
933 message RCVotingPollSettingsPdu { 934 message RCVotingPollSettingsPdu {