李勇

增加监课的推流地址获取接口,单独使用音视频通道,不占用课堂内的通道

此 diff 太大无法显示。
... ... @@ -28,7 +28,7 @@ import MediaModule from 'apes/MediaModule';
import UTF8 from 'utf-8';
let loger = Loger.getLoger('McuClient');
let _sdkInfo = {"version": "v1.20.1.201705015", "author": "www.3mang.com"};
let _sdkInfo = {"version": "v1.21.1.201705017", "author": "www.3mang.com"};
//APE
let _sass;
... ...
... ... @@ -53,6 +53,14 @@ class AudioApe extends Ape {
loger.warn(GlobalConfig.getCurrentStatus());
return {"code": ApeConsts.RETURN_FAILED, "data": "已经断开连接"};;
}
//监课比较特殊,不占用课堂内的音视频路数,额外创建
if(GlobalConfig.userRole==ApeConsts.invisible){
let result=this.mediaModule.getMediaPublishPathForInVisible(_param);
this._emit( MessageTypes.AUDIO_GET_PUBLISH_PATH,result);
return result;
}
//非监课的身份,需要判断是否可以继续推流
//需要判断当前已经使用的流路数
let openChannel=0;
let allChannels= MediaModule.allMediaChannelsList;
... ...
... ... @@ -124,6 +124,45 @@ class MediaModule {
"publishUrl": publishUrl
};
}
//监课获取推流地址
getMediaPublishPathForInVisible(_param) {
let mediaLen=Object.keys(MediaModule.allMediaChannelsList={}).length;
let freeChannel=(this.MEDIA_OBJ_TABLE_ID-20-mediaLen)||GlobalConfig.nodeId;
loger.log('getMediaPublishPathForInVisible->'+freeChannel+" mediaLen:"+mediaLen);
//默认方式推流
let pubType="live";
//flash推流
if(_param&&_param.type=="flash"){
pubType ="flash";
}
//端口,有端口就显示 ":xxx",没有端口就是""
let port = (GlobalConfig.MS_PUBLISH_PORT == "" || GlobalConfig.MS_PUBLISH_PORT == null) ? "":":" + GlobalConfig.MS_PUBLISH_PORT;
//时间戳
let timestamp = EngineUtils.creatTimestamp();
let streamId=GlobalConfig.siteId+"_"
+ GlobalConfig.classId + "_"+GlobalConfig.userId
+"_" + freeChannel + "_" + timestamp;
//生成推流地址和推流数据(同步数据的时候用)
let publishUrl = "rtmp://" + GlobalConfig.MS_PUBLISH_IP
+ port + "/"+pubType+"/" +streamId;
publishUrl=publishUrl.replace("::",":");//如果ip和port之间有多的:需要去掉
this.needPublishMediaChannel[publishUrl]={
"channelId":freeChannel,
"publishUrl":publishUrl,
"streamId":streamId,
"timestamp":timestamp,
"nodeId":GlobalConfig.nodeId
};
return {"code": ApeConsts.RETURN_SUCCESS,
"data":"",
"mediaId":freeChannel,
"publishUrl": publishUrl
};
}
//获取当前空闲的channel,返回值为0代表没有空闲的,否则返回的就是空闲的channelId
getFreeMediaChannel() {
... ...
... ... @@ -53,6 +53,14 @@ class VideoApe extends Ape {
loger.warn(GlobalConfig.getCurrentStatus());
return {"code": ApeConsts.RETURN_FAILED, "data": "已经断开连接"};
}
//监课比较特殊,不占用课堂内的音视频路数,额外创建
if(GlobalConfig.userRole==ApeConsts.invisible){
let result=this.mediaModule.getMediaPublishPathForInVisible(_param);
this._emit( MessageTypes.VIDEO_GET_PUBLISH_PATH,result);
return result;
}
//非监课的身份,需要判断是否可以继续推流
//需要判断当前已经使用的流路数
let openChannel=0;
let allChannels= MediaModule.allMediaChannelsList;
... ...