Toggle navigation
Toggle navigation
此项目
正在载入...
Sign in
李勇
/
McuClient
转到一个项目
Toggle navigation
项目
群组
代码片段
帮助
Toggle navigation pinning
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Authored by
李勇
2017-04-21 16:32:16 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
713280986b18bb3033187101a1c59ecdc19c7c2b
71328098
1 parent
04077798
音视频模块增加对音视频断线重连之后重复发送音视频推流成功消息的处理;如果自己已经推送过流消息就不再推送
隐藏空白字符变更
内嵌
并排对比
正在显示
5 个修改的文件
包含
36 行增加
和
22 行删除
dist/McuClient.js
src/EngineEntrance.js
src/apes/AudioApe.js
src/apes/MediaModule.js
src/apes/VideoApe.js
dist/McuClient.js
查看文件 @
7132809
此 diff 太大无法显示。
src/EngineEntrance.js
查看文件 @
7132809
...
...
@@ -27,7 +27,7 @@ import Server from "config/Server";
import
UTF8
from
'utf-8'
;
let
loger
=
Loger
.
getLoger
(
'McuClient'
);
let
_sdkInfo
=
{
"version"
:
"v1.9.1
6.20170420
"
,
"author"
:
"www.3mang.com"
};
let
_sdkInfo
=
{
"version"
:
"v1.9.1
7.20170421
"
,
"author"
:
"www.3mang.com"
};
//APE
let
_sass
;
...
...
src/apes/AudioApe.js
查看文件 @
7132809
...
...
@@ -97,9 +97,17 @@ class AudioApe extends Ape {
//判断当前的频道是否已经占用
if
(
this
.
mediaModule
.
checkChannelIsOpening
(
needPublishChannelInfo
.
channelId
)){
loger
.
warn
(
needPublishChannelInfo
.
channelId
,
"频道已经被占用"
);
this
.
_emit
(
MessageTypes
.
AUDIO_PUBLISH_RESULT
,{
"code"
:
ApeConsts
.
RETURN_FAILED
,
"data"
:
"频道已经被占用!"
,
"mediaId"
:
0
});
return
{
"code"
:
ApeConsts
.
RETURN_FAILED
,
"data"
:
"频道已经被占用!"
};
if
(
needPublishChannelInfo
.
nodeId
==
GlobalConfig
.
nodeId
){
loger
.
warn
(
needPublishChannelInfo
.
channelId
,
"已经推送过消息,不需要再次推送!"
);
this
.
_emit
(
MessageTypes
.
AUDIO_PUBLISH_RESULT
,{
"code"
:
ApeConsts
.
RETURN_SUCCESS
,
"data"
:
"已经推送过消息,不需要再次推送!"
,
"mediaId"
:
needPublishChannelInfo
.
channelId
});
return
{
"code"
:
ApeConsts
.
RETURN_SUCCESS
,
"data"
:
"已经推送过消息,不需要再次推送!"
,
"mediaId"
:
needPublishChannelInfo
.
channelId
};
}
else
{
loger
.
warn
(
needPublishChannelInfo
.
channelId
,
"频道已经被占用"
);
this
.
_emit
(
MessageTypes
.
AUDIO_PUBLISH_RESULT
,{
"code"
:
ApeConsts
.
RETURN_FAILED
,
"data"
:
"频道已经被占用!"
,
"mediaId"
:
0
});
return
{
"code"
:
ApeConsts
.
RETURN_FAILED
,
"data"
:
"频道已经被占用!"
};
}
}
let
channelInfo
=
this
.
mediaModule
.
getDefaultChannelInfo
();
...
...
@@ -146,7 +154,7 @@ class AudioApe extends Ape {
//释放nodeId占用的指定的channelId频道
_releaseChannelForNodeId
(
nodeId
,
channelId
){
loger
.
log
(
nodeId
,
"
_releaseChannelForNodeId-->channelId
"
,
channelId
);
loger
.
log
(
nodeId
,
"
释放占用的频道-->
"
,
channelId
);
let
channelInfo
=
this
.
mediaModule
.
mediaChannels
[
channelId
];
if
(
channelInfo
&&
channelInfo
.
status
==
ApeConsts
.
CHANNEL_STATUS_OPENING
){
if
(
channelInfo
.
fromNodeId
==
nodeId
){
...
...
@@ -160,7 +168,7 @@ class AudioApe extends Ape {
loger
.
warn
(
channelId
,
"不属于nodeId"
,
nodeId
,
"不能释放"
,
channelInfo
);
}
}
else
{
loger
.
warn
(
nodeId
,
"要释放的
channel
不存在或者已经释放-->channelId"
,
channelInfo
);
loger
.
warn
(
nodeId
,
"要释放的
频道
不存在或者已经释放-->channelId"
,
channelInfo
);
}
}
//释放nodeId占用的所有频道
...
...
@@ -174,7 +182,7 @@ class AudioApe extends Ape {
let
openingChannel
=
this
.
mediaModule
.
getOpeningMediaChannel
(
nodeId
);
if
(
openingChannel
==
0
)
{
loger
.
warn
(
nodeId
,
"没有占用
channel
不需要处理"
);
loger
.
warn
(
nodeId
,
"没有占用
频道
不需要处理"
);
return
{
"code"
:
ApeConsts
.
RETURN_FAILED
,
"data"
:
"没有占用channel不需要处理"
};
}
...
...
@@ -190,13 +198,13 @@ class AudioApe extends Ape {
}.
bind
(
this
),
800
);
}
sendAudioBroadcastMsg
(
_param
)
{
loger
.
log
(
'sendAudioBroadcastMsg'
,
_param
);
if
(
!
this
.
mcu
.
connected
){
loger
.
warn
(
GlobalConfig
.
getCurrentStatus
());
return
{
"code"
:
ApeConsts
.
RETURN_FAILED
,
"data"
:
"已经断开连接"
};
}
if
(
this
.
_classInfo
===
null
||
EngineUtils
.
isEmptyObject
(
this
.
_classInfo
))
{
loger
.
log
(
'
sendAudioBroadcastMsg.McuClient
还未初始化数据!'
);
loger
.
log
(
'
音频模块广播->失败->
还未初始化数据!'
);
if
(
GlobalConfig
.
getCurrentStatus
().
code
==
0
||
GlobalConfig
.
getCurrentStatus
().
code
==
1
)
{
this
.
_emit
(
MessageTypes
.
MCU_ERROR
,
MessageTypes
.
ERR_APE_SEND_FAILED_NO_JOIN
);
return
{
"code"
:
ApeConsts
.
RETURN_FAILED
,
"data"
:
"sendAudioBroadcastMsg.McuClient还未初始化数据"
};
...
...
@@ -204,18 +212,17 @@ class AudioApe extends Ape {
return
{
"code"
:
ApeConsts
.
RETURN_FAILED
,
"data"
:
"sendAudioBroadcastMsg.McuClient还未初始化数据"
};
}
if
(
_param
==
null
)
{
loger
.
warn
(
'
sendAudioBroadcastMsg
,参数错误'
,
_param
);
loger
.
warn
(
'
音频模块广播->失败->
,参数错误'
,
_param
);
this
.
_emit
(
MessageTypes
.
MCU_ERROR
,
MessageTypes
.
ERR_APE_INTERFACE_PARAM_WRONG
);
return
{
"code"
:
ApeConsts
.
RETURN_FAILED
,
"data"
:
"sendAudioBroadcastMsg,参数错误"
};
}
// to, message
loger
.
log
(
'发送Audio消息.'
,
_param
);
loger
.
log
(
'音频模块广播->'
,
_param
);
if
(
_param
.
actionType
!=
null
&&
_param
.
actionType
==
ApeConsts
.
MEDIA_ACTION_OPEN_CAMERA
)
{
//判断当前开启的视频数量是否已经是最大值,如果已经是最大值,不能再开启
let
freeChannel
=
this
.
mediaModule
.
getFreeMediaChannel
();
if
(
freeChannel
==
0
)
{
loger
.
warn
(
'
sendAudioBroadcastMsg,
不能再打开更多的设备'
,
_param
);
loger
.
warn
(
'不能再打开更多的设备'
,
_param
);
return
{
"code"
:
ApeConsts
.
RETURN_FAILED
,
"data"
:
"不能再打开更多的设备"
,
"mediaChannels"
:
this
.
mediaModule
.
mediaChannels
};
}
}
...
...
@@ -233,21 +240,21 @@ class AudioApe extends Ape {
if
(
!
audioSendPdu
.
isPublic
&&
0
!=
audioSendPdu
.
toNodeId
)
{
//发送给制定的人
loger
.
log
(
'发送私聊消息.'
);
//
loger.log('发送私聊消息.');
this
.
send
(
audioSendPdu
);
}
else
{
//发送给所有人
loger
.
log
(
'发送公聊消息
.'
);
//loger.log('音频模块广播->
.');
this
.
sendChatUniform
(
audioSendPdu
);
}
return
{
"code"
:
ApeConsts
.
RETURN_SUCCESS
,
"data"
:
""
};
}
sendTableUpdateHandler
(
_channelInfo
)
{
loger
.
log
(
"audio,sendTableUpdateHandler "
);
//
loger.log("audio,sendTableUpdateHandler ");
let
updateModelPdu
=
this
.
packPdu
(
_channelInfo
,
_channelInfo
.
channelId
);
if
(
updateModelPdu
==
null
){
loger
.
warn
(
"
sendTableUpdateHandler error,updateModelPdu=null"
);
loger
.
warn
(
"
音频模块更新数据-> 失败->数据无效"
,
_channelInfo
);
return
;
}
...
...
@@ -275,7 +282,7 @@ class AudioApe extends Ape {
adapterPdu
.
type
=
pdu
.
RCPDU_REG_ADAPTER
;
adapterPdu
.
item
.
push
(
adapterItemPdu
);
loger
.
log
(
"
发送更新AUDIO.
itemIdx="
+
tableItemPdu
.
itemIdx
);
loger
.
log
(
"
音频模块更新数据->
itemIdx="
+
tableItemPdu
.
itemIdx
);
this
.
sendUniform
(
adapterPdu
,
true
);
}
...
...
src/apes/MediaModule.js
查看文件 @
7132809
...
...
@@ -101,7 +101,8 @@ class MediaModule {
"channelId"
:
freeChannel
,
"publishUrl"
:
publishUrl
,
"streamId"
:
streamId
,
"timestamp"
:
timestamp
"timestamp"
:
timestamp
,
"nodeId"
:
GlobalConfig
.
nodeId
};
return
{
"code"
:
ApeConsts
.
RETURN_SUCCESS
,
"data"
:
""
,
...
...
src/apes/VideoApe.js
查看文件 @
7132809
...
...
@@ -98,9 +98,15 @@ class VideoApe extends Ape {
//判断当前的频道是否已经占用
if
(
this
.
mediaModule
.
checkChannelIsOpening
(
needPublishChannelInfo
.
channelId
)){
loger
.
warn
(
needPublishChannelInfo
.
channelId
,
"频道已经被占用"
);
this
.
_emit
(
MessageTypes
.
VIDEO_PUBLISH_RESULT
,{
"code"
:
ApeConsts
.
RETURN_FAILED
,
"data"
:
"频道已经被占用!"
,
"mediaId"
:
0
});
return
{
"code"
:
ApeConsts
.
RETURN_FAILED
,
"data"
:
"频道已经被占用!"
,
"mediaChannels"
:
this
.
mediaModule
.
mediaChannels
};
if
(
needPublishChannelInfo
.
nodeId
==
GlobalConfig
.
nodeId
){
loger
.
warn
(
needPublishChannelInfo
.
channelId
,
"已经推送过消息,不需要再次推送"
);
this
.
_emit
(
MessageTypes
.
VIDEO_PUBLISH_RESULT
,{
"code"
:
ApeConsts
.
RETURN_SUCCESS
,
"data"
:
"已经推送过消息,不需要再次推送!"
,
"mediaId"
:
needPublishChannelInfo
.
channelId
});
return
{
"code"
:
ApeConsts
.
RETURN_SUCCESS
,
"data"
:
"已经推送过消息,不需要再次推送!"
,
"mediaId"
:
needPublishChannelInfo
.
channelId
};
}
else
{
loger
.
warn
(
needPublishChannelInfo
.
channelId
,
"频道已经被占用"
);
this
.
_emit
(
MessageTypes
.
VIDEO_PUBLISH_RESULT
,{
"code"
:
ApeConsts
.
RETURN_FAILED
,
"data"
:
"频道已经被占用!"
,
"mediaId"
:
0
});
return
{
"code"
:
ApeConsts
.
RETURN_FAILED
,
"data"
:
"频道已经被占用!"
,
"mediaChannels"
:
this
.
mediaModule
.
mediaChannels
};
}
}
let
channelInfo
=
this
.
mediaModule
.
getDefaultChannelInfo
();
...
...
请
注册
或
登录
后发表评论