正在显示
4 个修改的文件
包含
45 行增加
和
189 行删除
此 diff 太大无法显示。
| @@ -30,11 +30,11 @@ import MediaModule from 'apes/MediaModule'; | @@ -30,11 +30,11 @@ import MediaModule from 'apes/MediaModule'; | ||
| 30 | import MediaSharedApe from 'apes/MediaSharedApe'; | 30 | import MediaSharedApe from 'apes/MediaSharedApe'; |
| 31 | import MusicSharedApe from 'apes/MusicSharedApe'; | 31 | import MusicSharedApe from 'apes/MusicSharedApe'; |
| 32 | import QuestionApe from 'apes/QuestionApe'; | 32 | import QuestionApe from 'apes/QuestionApe'; |
| 33 | - | 33 | +import mdetect from "mdetect"; |
| 34 | import UTF8 from 'utf-8'; | 34 | import UTF8 from 'utf-8'; |
| 35 | 35 | ||
| 36 | let loger = Loger.getLoger('McuClient'); | 36 | let loger = Loger.getLoger('McuClient'); |
| 37 | -let _sdkInfo = { "version": "v1.37.3.20170627", "author": "www.3mang.com" }; | 37 | +let _sdkInfo = { "version": "v1.38.4.20170629", "author": "www.3mang.com" }; |
| 38 | 38 | ||
| 39 | //APE | 39 | //APE |
| 40 | let _sass; | 40 | let _sass; |
| @@ -58,7 +58,14 @@ export default class MessageEntrance extends Emiter { | @@ -58,7 +58,14 @@ export default class MessageEntrance extends Emiter { | ||
| 58 | super(); | 58 | super(); |
| 59 | //sdk 信息 | 59 | //sdk 信息 |
| 60 | this.sdkInfo = _sdkInfo; | 60 | this.sdkInfo = _sdkInfo; |
| 61 | - loger.log(this.sdkInfo); | 61 | + loger.warn(this.sdkInfo); |
| 62 | + //检查是否是移动端 | ||
| 63 | + GlobalConfig.isMobile=mdetect.isMobileUA(); | ||
| 64 | + if( GlobalConfig.isMobile){ | ||
| 65 | + loger.warn("当前设备是移动设备"); | ||
| 66 | + }else { | ||
| 67 | + loger.warn("当前设备是PC"); | ||
| 68 | + } | ||
| 62 | 69 | ||
| 63 | //初始化状态 | 70 | //初始化状态 |
| 64 | this.isGetUserIpCallback = false; //是否获取IP信息返回 | 71 | this.isGetUserIpCallback = false; //是否获取IP信息返回 |
| @@ -531,172 +538,6 @@ export default class MessageEntrance extends Emiter { | @@ -531,172 +538,6 @@ export default class MessageEntrance extends Emiter { | ||
| 531 | } | 538 | } |
| 532 | } | 539 | } |
| 533 | 540 | ||
| 534 | - //获取课堂所有参数 api/meeting/detail.do? flash中的接口文件是 getClassParam.do | ||
| 535 | - _sassGetClassParamSuccessHandler(_data) { | ||
| 536 | - loger.log('获取课堂课堂信息完成.'); | ||
| 537 | - //包含整个课堂最全的信息,储存数据 | ||
| 538 | - if (_data) { | ||
| 539 | - GlobalConfig.mcuDelay = _data.h5Delay || 0; //mcu消息延迟的时间间隔,单位(秒),结合客户端传的messageDelay的值使用 | ||
| 540 | - GlobalConfig.className = _data.meetingName || ""; | ||
| 541 | - GlobalConfig.classBeginTime = _data.beginTime || ""; | ||
| 542 | - GlobalConfig.classEndTime = _data.endTime || ""; | ||
| 543 | - GlobalConfig.userIp = _data.userIp || ""; | ||
| 544 | - | ||
| 545 | - GlobalConfig.maxVideoChannels = _data.maxVideoChannels; | ||
| 546 | - GlobalConfig.maxAudioChannels = _data.maxAudioChannels; | ||
| 547 | - GlobalConfig.maxMediaChannels = Math.max(GlobalConfig.maxVideoChannels, GlobalConfig.maxAudioChannels); | ||
| 548 | - | ||
| 549 | - GlobalConfig.ssTunnelAppURL = _data.ssTunnelAppURL || ''; //屏幕共享插件的地址 | ||
| 550 | - | ||
| 551 | - //视频质量相关设置,每次加入课堂都按最新的获取设置 | ||
| 552 | - GlobalConfig.fps = _data.fps || 15; | ||
| 553 | - GlobalConfig.gop = _data.gop || 3; | ||
| 554 | - GlobalConfig.videoQuality = parseInt(_data.videoQuality); | ||
| 555 | - GlobalConfig.curVideoQuality = GlobalConfig.videoQuality; | ||
| 556 | - | ||
| 557 | - //是否自动开始(身份是host的时候才用到的) | ||
| 558 | - GlobalConfig.isAutoStartClass = _data.autoRecord || 0; | ||
| 559 | - | ||
| 560 | - GlobalConfig.setDocListPrepare(_data.docListPrepare); //提前上传的文档列表 | ||
| 561 | - GlobalConfig.setRecordList(_data.recordList); //录制回放地址 | ||
| 562 | - GlobalConfig.setDocList(_data.docList); //文档地址 | ||
| 563 | - GlobalConfig.setMsList(_data.msList); //推流播流服务器地址(需要对列表中的地址进行分类,里面包含了推流和拉流的地址,目前主要是乐视的需要区分开) | ||
| 564 | - GlobalConfig.setRsList(_data.rsList); //播放m3u8格式的地址(录制回放时使用) | ||
| 565 | - GlobalConfig.setMcuList(_data.mcuList); //mcu | ||
| 566 | - GlobalConfig.setMusicList(_data.musicList); // | ||
| 567 | - GlobalConfig.setMusicListPrepare(_data.musicListPrepare); //提前上传的声音文件列表 | ||
| 568 | - GlobalConfig.setVideoCDNAddr(_data.videoCDNAddr); //cdn加速的拉流地址,直播的时候才使用 | ||
| 569 | - GlobalConfig.setMediaShareList(_data.sharedMediaList); //提前上传的媒体共享文件列表 | ||
| 570 | - | ||
| 571 | - //MCU地址 | ||
| 572 | - if (_data.mcuList && _data.mcuList.length > 0) { | ||
| 573 | - //随机选择一个 | ||
| 574 | - let index = parseInt(Math.random() * _data.mcuList.length); | ||
| 575 | - GlobalConfig.MCUServerIP = _data.mcuList[index].ip || ""; | ||
| 576 | - GlobalConfig.MCUServerPort = _data.mcuList[index].port || ""; | ||
| 577 | - loger.log('初始->MCU->.', GlobalConfig.MCUServerIP, GlobalConfig.MCUServerPort); | ||
| 578 | - } | ||
| 579 | - | ||
| 580 | - //录制回放时m3u8播流地址 | ||
| 581 | - if (_data.rsList && _data.rsList.length > 0) { | ||
| 582 | - let index = parseInt(Math.random() * _data.rsList.length); | ||
| 583 | - GlobalConfig.RS_RECORD_PLAY_IP = _data.rsList[index].ip || ""; | ||
| 584 | - GlobalConfig.RS_RECORD_PLAY_PORT = _data.rsList[index].port || ""; | ||
| 585 | - loger.log('初始->RS->.', GlobalConfig.RS_RECORD_PLAY_IP, GlobalConfig.RS_RECORD_PLAY_PORT); | ||
| 586 | - } | ||
| 587 | - | ||
| 588 | - //上课中音视频推流地址 | ||
| 589 | - if (GlobalConfig.msList && GlobalConfig.msList.length > 0) { | ||
| 590 | - let index = parseInt(Math.random() * GlobalConfig.msList.length); | ||
| 591 | - GlobalConfig.MS_PUBLISH_IP = GlobalConfig.msList[index].ip || ""; | ||
| 592 | - GlobalConfig.MS_PUBLISH_PORT = GlobalConfig.msList[index].port || ""; | ||
| 593 | - } | ||
| 594 | - loger.log('初始->MS->.', GlobalConfig.MS_PUBLISH_IP, GlobalConfig.MS_PUBLISH_PORT); | ||
| 595 | - | ||
| 596 | - //播流的地址和推流地址需要分开的时候,单独设置拉流的地址 rtmp(目前乐视使用) | ||
| 597 | - if (GlobalConfig.pullRtmpList && GlobalConfig.pullRtmpList.length > 0) { | ||
| 598 | - //有单独的rtmp拉流地址 | ||
| 599 | - let index = parseInt(Math.random() * GlobalConfig.pullRtmpList.length); | ||
| 600 | - GlobalConfig.MS_PLAY_RTMP_IP = GlobalConfig.pullRtmpList[index].ip || ""; | ||
| 601 | - GlobalConfig.MS_PLAY_RTMP_PORT = GlobalConfig.pullRtmpList[index].port || ""; | ||
| 602 | - } else { | ||
| 603 | - //如果没有单独的rtmp拉流地址,和推流地址一样即可 | ||
| 604 | - GlobalConfig.MS_PLAY_RTMP_IP = GlobalConfig.MS_PUBLISH_IP; | ||
| 605 | - GlobalConfig.MS_PLAY_RTMP_PORT = GlobalConfig.MS_PUBLISH_PORT; | ||
| 606 | - } | ||
| 607 | - | ||
| 608 | - loger.log('初始->MSPull->.', GlobalConfig.MS_PLAY_RTMP_IP, GlobalConfig.MS_PLAY_RTMP_PORT); | ||
| 609 | - | ||
| 610 | - //播流的地址和推流地址需要分开的时候,单独设置拉流的地址 hls(目前乐视使用) | ||
| 611 | - if (GlobalConfig.hlsList && GlobalConfig.hlsList.length > 0) { | ||
| 612 | - //有单独的hls拉流地址 | ||
| 613 | - let index = parseInt(Math.random() * GlobalConfig.hlsList.length); | ||
| 614 | - GlobalConfig.MS_PLAY_HLS_IP = GlobalConfig.hlsList[index].ip || ""; | ||
| 615 | - GlobalConfig.MS_PLAY_HLS_PORT = GlobalConfig.hlsList[index].port || ""; | ||
| 616 | - } else { | ||
| 617 | - //没有单独的hls拉流地址,和录制回放地址一样即可 | ||
| 618 | - GlobalConfig.MS_PLAY_HLS_IP = GlobalConfig.RS_RECORD_PLAY_IP; | ||
| 619 | - GlobalConfig.MS_PLAY_HLS_PORT = GlobalConfig.RS_RECORD_PLAY_PORT; | ||
| 620 | - } | ||
| 621 | - loger.log('初始->MSHls->.', GlobalConfig.MS_PLAY_HLS_IP, GlobalConfig.MS_PLAY_HLS_PORT); | ||
| 622 | - | ||
| 623 | - //直播的时候,拉流(rtmp和hls)需要从 videoCDNAddr中获取 | ||
| 624 | - //20170531-新规则,所有课堂类型都支持加速 | ||
| 625 | - // if(GlobalConfig.classType==ApeConsts.CLASS_TYPE_2&&GlobalConfig.videoCDNAddrList.length>0){ | ||
| 626 | - if (GlobalConfig.videoCDNAddrList.length > 0) { | ||
| 627 | - //videoCDNAddrList中rtmppush和hls是混在一起的,需要分离开; | ||
| 628 | - let listLen = GlobalConfig.videoCDNAddrList.length; | ||
| 629 | - for (let i = 0; i < listLen; i++) { | ||
| 630 | - let ipItem = GlobalConfig.videoCDNAddrList[i]; | ||
| 631 | - if (ipItem) { | ||
| 632 | - if (ipItem.indexOf('hls') >= 0) { | ||
| 633 | - //直播的时候m3u8拉流地址 | ||
| 634 | - GlobalConfig.MS_PLAY_HLS_IP = ipItem; //ip包含了端口 | ||
| 635 | - GlobalConfig.MS_PLAY_HLS_PORT = ""; | ||
| 636 | - loger.log('videoCDNAddr>初始->MSHls', GlobalConfig.MS_PLAY_HLS_IP); | ||
| 637 | - } else if (ipItem.indexOf('rtmppull') >= 0) { | ||
| 638 | - //直播的时候rtmp拉流地址 | ||
| 639 | - GlobalConfig.MS_PLAY_RTMP_IP = ipItem; //ip包含了端口 | ||
| 640 | - GlobalConfig.MS_PLAY_RTMP_PORT = ''; | ||
| 641 | - loger.log('videoCDNAddr->初始->MSPull', GlobalConfig.MS_PLAY_RTMP_IP); | ||
| 642 | - } | ||
| 643 | - } | ||
| 644 | - } | ||
| 645 | - | ||
| 646 | - } else { | ||
| 647 | - loger.log('不需要videoCDNAddr->'); | ||
| 648 | - } | ||
| 649 | - | ||
| 650 | - //文档地址 | ||
| 651 | - if (_data.docList && _data.docList.length > 0) { | ||
| 652 | - //doc上传地址,随机获取一个 | ||
| 653 | - let index = parseInt(Math.random() * _data.docList.length); | ||
| 654 | - loger.log("docServer->", _data.docList[index]); | ||
| 655 | - GlobalConfig.DOCServerIP = _data.docList[index].ip || ""; | ||
| 656 | - GlobalConfig.DOCServerPort = _data.docList[index].port || ""; | ||
| 657 | - loger.log('初始->DOC->.', GlobalConfig.DOCServerIP, GlobalConfig.DOCServerPort); | ||
| 658 | - } | ||
| 659 | - | ||
| 660 | - //record | ||
| 661 | - if (_data.recordList && _data.recordList.length > 0) { | ||
| 662 | - let index = parseInt(Math.random() * _data.recordList.length); | ||
| 663 | - GlobalConfig.RecordServerIP = _data.recordList[index].ip || ""; | ||
| 664 | - GlobalConfig.RecordServerPort = _data.recordList[index].port || ""; | ||
| 665 | - loger.log('初始->RECORD->.', GlobalConfig.RecordServerIP, GlobalConfig.RecordServerPort); | ||
| 666 | - } | ||
| 667 | - | ||
| 668 | - } | ||
| 669 | - //这里需要考虑是否加延迟处理,课堂信息刚获取完成,客户端需要根据数据创建界面UI,等创建完成后再加入课堂是最合适的(目前没有加延迟) | ||
| 670 | - this._emit(MessageTypes.CLASS_GET_INFO_SUCCESS, GlobalConfig.getClassInfo()); | ||
| 671 | - | ||
| 672 | - if (_data.currentInfo) { | ||
| 673 | - //根据从Sass获取的数据信息,同步最后一次保存的课堂状态信息 | ||
| 674 | - loger.log("本地同步最后一次保存过的课堂状态信息"); | ||
| 675 | - try { | ||
| 676 | - GlobalConfig.setClassStatusInfo(JSON.parse(_data.currentInfo)); | ||
| 677 | - } catch (err) { | ||
| 678 | - GlobalConfig.setClassStatusInfo(_data.currentInfo); | ||
| 679 | - } | ||
| 680 | - loger.log(GlobalConfig.classStatusInfo); | ||
| 681 | - } else { | ||
| 682 | - loger.log("还没有保存过课堂状信息"); | ||
| 683 | - } | ||
| 684 | - | ||
| 685 | - //录制回放不需要获取ip信息和选点 | ||
| 686 | - if (GlobalConfig.isRecordPlayBack) { | ||
| 687 | - if (_recordPlayback) { | ||
| 688 | - //开启录制回放流程 | ||
| 689 | - loger.log("开启录制回放流程"); | ||
| 690 | - _recordPlayback.readyRecordPlay(); | ||
| 691 | - } else { | ||
| 692 | - loger.warn("开启录制回放流程失败->还未创建模块"); | ||
| 693 | - } | ||
| 694 | - } else { | ||
| 695 | - //根据用户的userIp获取信息,选点 | ||
| 696 | - this.getUserIpInfo(); | ||
| 697 | - } | ||
| 698 | - } | ||
| 699 | - | ||
| 700 | //根据UserIp获取ip信息,选点 | 541 | //根据UserIp获取ip信息,选点 |
| 701 | getUserIpInfo() { | 542 | getUserIpInfo() { |
| 702 | let _this = this; | 543 | let _this = this; |
| @@ -877,6 +718,13 @@ export default class MessageEntrance extends Emiter { | @@ -877,6 +718,13 @@ export default class MessageEntrance extends Emiter { | ||
| 877 | //Sass校验流程结束之后,开始加入MCU | 718 | //Sass校验流程结束之后,开始加入MCU |
| 878 | _joinMCU() { | 719 | _joinMCU() { |
| 879 | loger.log('加入课堂->.'); | 720 | loger.log('加入课堂->.'); |
| 721 | + loger.warn("课堂服务信息->"); | ||
| 722 | + | ||
| 723 | + loger.warn('MCU服务器地址->mcu->',GlobalConfig.MCUServerIP, GlobalConfig.MCUServerPort); | ||
| 724 | + loger.warn('推流地址->MS->', GlobalConfig.MS_PUBLISH_IP, GlobalConfig.MS_PUBLISH_PORT); | ||
| 725 | + loger.warn('RTMP播流地址->RTMP->',GlobalConfig.MS_PLAY_RTMP_IP, GlobalConfig.MS_PLAY_RTMP_PORT); | ||
| 726 | + loger.warn('HLS播流地址->HLS->',GlobalConfig.MS_PLAY_HLS_IP, GlobalConfig.MS_PLAY_HLS_PORT); | ||
| 727 | + | ||
| 880 | if (_mcu) { | 728 | if (_mcu) { |
| 881 | _mcu.joinMCU(GlobalConfig.getClassInfo()); | 729 | _mcu.joinMCU(GlobalConfig.getClassInfo()); |
| 882 | } | 730 | } |
| @@ -1339,28 +1187,33 @@ export default class MessageEntrance extends Emiter { | @@ -1339,28 +1187,33 @@ export default class MessageEntrance extends Emiter { | ||
| 1339 | //直播的时候,拉流(rtmp和hls)需要从 videoCDNAddr中获取 | 1187 | //直播的时候,拉流(rtmp和hls)需要从 videoCDNAddr中获取 |
| 1340 | //20170531-新规则,所有课堂类型都支持加速 | 1188 | //20170531-新规则,所有课堂类型都支持加速 |
| 1341 | // if(GlobalConfig.classType==ApeConsts.CLASS_TYPE_2&&GlobalConfig.videoCDNAddrList.length>0){ | 1189 | // if(GlobalConfig.classType==ApeConsts.CLASS_TYPE_2&&GlobalConfig.videoCDNAddrList.length>0){ |
| 1342 | - if (GlobalConfig.videoCDNAddrList.length > 0) { | ||
| 1343 | - //videoCDNAddrList中rtmppush和hls是混在一起的,需要分离开; | ||
| 1344 | - let listLen = GlobalConfig.videoCDNAddrList.length; | ||
| 1345 | - for (let i = 0; i < listLen; i++) { | ||
| 1346 | - let ipItem = GlobalConfig.videoCDNAddrList[i]; | ||
| 1347 | - if (ipItem) { | ||
| 1348 | - if (ipItem.indexOf('hls') >= 0) { | ||
| 1349 | - //直播的时候m3u8拉流地址 | ||
| 1350 | - GlobalConfig.MS_PLAY_HLS_IP = ipItem; //ip包含了端口 | ||
| 1351 | - GlobalConfig.MS_PLAY_HLS_PORT = ""; | ||
| 1352 | - loger.log('videoCDNAddr>初始->MSHls', GlobalConfig.MS_PLAY_HLS_IP); | ||
| 1353 | - } else if (ipItem.indexOf('rtmppull') >= 0) { | ||
| 1354 | - //直播的时候rtmp拉流地址 | ||
| 1355 | - GlobalConfig.MS_PLAY_RTMP_IP = ipItem; //ip包含了端口 | ||
| 1356 | - GlobalConfig.MS_PLAY_RTMP_PORT = ''; | ||
| 1357 | - loger.log('videoCDNAddr->初始->MSPull', GlobalConfig.MS_PLAY_RTMP_IP); | 1190 | + |
| 1191 | + //20170629-直播课堂和移动端设备的时候支持 | ||
| 1192 | + if(GlobalConfig.classType==ApeConsts.CLASS_TYPE_2||GlobalConfig.isMobile){ | ||
| 1193 | + if (GlobalConfig.videoCDNAddrList.length > 0) { | ||
| 1194 | + //videoCDNAddrList中rtmppush和hls是混在一起的,需要分离开; | ||
| 1195 | + let listLen = GlobalConfig.videoCDNAddrList.length; | ||
| 1196 | + for (let i = 0; i < listLen; i++) { | ||
| 1197 | + let ipItem = GlobalConfig.videoCDNAddrList[i]; | ||
| 1198 | + if (ipItem) { | ||
| 1199 | + if (ipItem.indexOf('hls') >= 0) { | ||
| 1200 | + //直播的时候m3u8拉流地址 | ||
| 1201 | + GlobalConfig.MS_PLAY_HLS_IP = ipItem; //ip包含了端口 | ||
| 1202 | + GlobalConfig.MS_PLAY_HLS_PORT = ""; | ||
| 1203 | + loger.log('videoCDNAddr>初始->MSHls', GlobalConfig.MS_PLAY_HLS_IP); | ||
| 1204 | + } else if (ipItem.indexOf('rtmppull') >= 0) { | ||
| 1205 | + //直播的时候rtmp拉流地址 | ||
| 1206 | + GlobalConfig.MS_PLAY_RTMP_IP = ipItem; //ip包含了端口 | ||
| 1207 | + GlobalConfig.MS_PLAY_RTMP_PORT = ''; | ||
| 1208 | + loger.log('videoCDNAddr->初始->MSPull', GlobalConfig.MS_PLAY_RTMP_IP); | ||
| 1209 | + } | ||
| 1358 | } | 1210 | } |
| 1359 | } | 1211 | } |
| 1212 | + } else { | ||
| 1213 | + loger.error('videoCDNAddr数据无效->',GlobalConfig.videoCDNAddr); | ||
| 1360 | } | 1214 | } |
| 1361 | - | ||
| 1362 | - } else { | ||
| 1363 | - loger.log('不需要videoCDNAddr->'); | 1215 | + }else { |
| 1216 | + loger.warn('非直播课堂或不是移动端->不需要videoCDN加速'); | ||
| 1364 | } | 1217 | } |
| 1365 | 1218 | ||
| 1366 | //文档地址 | 1219 | //文档地址 |
| @@ -1412,6 +1265,7 @@ export default class MessageEntrance extends Emiter { | @@ -1412,6 +1265,7 @@ export default class MessageEntrance extends Emiter { | ||
| 1412 | this.getUserIpInfo(); | 1265 | this.getUserIpInfo(); |
| 1413 | } | 1266 | } |
| 1414 | } | 1267 | } |
| 1268 | + | ||
| 1415 | //ChatApe | 1269 | //ChatApe |
| 1416 | // 发送聊天消息 | 1270 | // 发送聊天消息 |
| 1417 | _sendChatMsg(_messageInfo) { | 1271 | _sendChatMsg(_messageInfo) { |
| @@ -472,5 +472,7 @@ GlobalConfig.siteId_letv = 'shchuanbao'; //乐视,MS不需要动态选点的 | @@ -472,5 +472,7 @@ GlobalConfig.siteId_letv = 'shchuanbao'; //乐视,MS不需要动态选点的 | ||
| 472 | GlobalConfig.ssTunnelAppURL = ''; //屏幕共享插件的地址 | 472 | GlobalConfig.ssTunnelAppURL = ''; //屏幕共享插件的地址 |
| 473 | GlobalConfig.serverTime = 0; //服务器当前时间戳 | 473 | GlobalConfig.serverTime = 0; //服务器当前时间戳 |
| 474 | GlobalConfig.serverAndLoacTimeDistanc = 0; //本地时间和服务器时间错的差值; | 474 | GlobalConfig.serverAndLoacTimeDistanc = 0; //本地时间和服务器时间错的差值; |
| 475 | + | ||
| 476 | +GlobalConfig.isMobile=false;//是否是移动端 | ||
| 475 | export default GlobalConfig; | 477 | export default GlobalConfig; |
| 476 | 478 |
| @@ -28,7 +28,7 @@ ApeConsts.USER_ACTION_SILENCE_STATUS_CHANGE = 3; //更改用户的禁言状态 | @@ -28,7 +28,7 @@ ApeConsts.USER_ACTION_SILENCE_STATUS_CHANGE = 3; //更改用户的禁言状态 | ||
| 28 | //课堂类型 1:1v1(2路流) 2:直播(1路流) 3:小班课(可以多路流) | 28 | //课堂类型 1:1v1(2路流) 2:直播(1路流) 3:小班课(可以多路流) |
| 29 | ApeConsts.CLASS_TYPE_1 = 1; // 互动课堂,通过MS转发音视频,不能进行H5观看 1v1(2路流) | 29 | ApeConsts.CLASS_TYPE_1 = 1; // 互动课堂,通过MS转发音视频,不能进行H5观看 1v1(2路流) |
| 30 | ApeConsts.CLASS_TYPE_2 = 2; // 直播课堂,通过CDN转发音视频,不能进行音视频互动 :直播(1路流) | 30 | ApeConsts.CLASS_TYPE_2 = 2; // 直播课堂,通过CDN转发音视频,不能进行音视频互动 :直播(1路流) |
| 31 | -ApeConsts.CLASS_TYPE_3 = 2; // 直播课堂,通过CDN转发音视频,不能进行音视频互动 ::小班课(可以多路流) | 31 | +ApeConsts.CLASS_TYPE_3 = 3; // 小班课,通过CDN转发音视频,不能进行音视频互动 ::小班课(可以多路流) |
| 32 | 32 | ||
| 33 | //角色身份 | 33 | //角色身份 |
| 34 | //ApeConsts.NR_GUEST = 0; // 客人 | 34 | //ApeConsts.NR_GUEST = 0; // 客人 |
-
请 注册 或 登录 后发表评论