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
李勇
8 years ago
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
67a24c8e8c40e0ffb28da4d7ecc0acd737648e00
67a24c8e
1 parent
69a3b37b
视频模块在录制回放的时候增加对广播消息type 40做处理,webRtc的推流和停止推流消息目前是使用广播消息处理的
隐藏空白字符变更
内嵌
并排对比
正在显示
2 个修改的文件
包含
90 行增加
和
10 行删除
src/EngineEntrance.js
src/apes/VideoApe.js
src/EngineEntrance.js
查看文件 @
67a24c8
...
...
@@ -62,7 +62,7 @@ export default class MessageEntrance extends Emiter {
constructor
()
{
super
();
//sdk 信息
GlobalConfig
.
sdkVersion
=
"v2.12.
6.20170925
"
;
GlobalConfig
.
sdkVersion
=
"v2.12.
8.20170926
"
;
loger
.
warn
(
"sdkVersion:"
+
GlobalConfig
.
sdkVersion
);
//设置
...
...
src/apes/VideoApe.js
查看文件 @
67a24c8
...
...
@@ -389,7 +389,6 @@ class VideoApe extends Ape {
}
// to, message
loger
.
log
(
'视频模块广播消息.'
,
_param
);
//如果是控制开启摄像头推流,需要判断是否还有空闲频道
if
(
_param
.
actionType
!=
null
&&
_param
.
actionType
==
ApeConsts
.
MEDIA_ACTION_OPEN_CAMERA
)
{
//判断当前开启的视频数量是否已经是最大值,如果已经是最大值,不能再开启
...
...
@@ -466,9 +465,8 @@ class VideoApe extends Ape {
}
/////收到消息处理//////////////////////////////////////////////////
// 视频消息处理,内部处理,不需要告诉应用层
receiveVideoCommandHandler
(
_data
)
{
receiveVideoCommandHandler
(
_data
,
seek
)
{
let
videoReceivePdu
=
pdu
[
'RCVideoSendDataRequestPdu'
].
decode
(
_data
);
if
(
videoReceivePdu
==
null
)
{
loger
.
warn
(
"视频控制消息处理,收到的消息为null,不做处理"
);
...
...
@@ -484,13 +482,56 @@ class VideoApe extends Ape {
dataObj
=
videoReceivePdu
.
data
;
}
videoReceivePdu
.
data
=
dataObj
;
//判断接收者的id,如果不是0,并且也不是自己的nodeId,那么消息不做处理
if
(
videoReceivePdu
.
toNodeId
!=
0
&&
videoReceivePdu
.
toNodeId
!=
GlobalConfig
.
nodeId
)
{
loger
.
log
(
'视频消息不处理 toNodeId='
,
videoReceivePdu
.
toNodeId
,
"my nodeId="
,
GlobalConfig
.
nodeId
);
}
else
{
loger
.
log
(
'视频控制消息处理 .'
,
videoReceivePdu
);
this
.
_emit
(
MessageTypes
.
VIDEO_BROADCAST
,
videoReceivePdu
);
if
(
GlobalConfig
.
isRecordPlayBack
){
//录制回放的处理
if
(
videoReceivePdu
.
toNodeId
!=
0
){
//只处理发送给所有人的消息,发给指定人的消息不处理
return
;
}
let
data
=
videoReceivePdu
.
data
;
if
(
!
data
)
return
;
/* "data": {
"appId": "eb253cc7b40c4a8b82f0a5b6f93c2ce0",
"channel": "markettest_1880101695",
"channelKey": "",
"uid": 886346081,
"status": 1,
"userId": "user_338621",
"userName": "user_338621",
"userRole": "normal",
"timestamp": 1505886364100,
"recordTimestamp": 27
}*/
switch
(
videoReceivePdu
.
actionType
){
case
ApeConsts
.
MEDIA_ACTION_PUBLISH_STATUS
:
//webRtc的推流和停止推流的消息
let
videoInfo
=
{};
let
videoData
=
data
;
videoData
.
streamId
=
data
.
channel
+
"_"
+
data
.
userId
+
"_"
+
data
.
uid
+
"_"
+
(
parseInt
(
parseInt
(
data
.
timestamp
)
/
1000
));
if
(
data
.
status
==
1
){
loger
.
log
(
"播放文件->"
,
"userName"
,
data
.
userName
,
"uid"
,
data
.
uid
,
"时间:"
+
new
Date
(
1505886364100
).
toString
());
videoInfo
=
this
.
packVideoInfoAndSendToClient
(
videoData
,
seek
);
this
.
_emit
(
MessageTypes
.
VIDEO_PLAY
,
videoInfo
);
}
else
if
(
data
.
status
==
0
){
loger
.
log
(
"停止播放文件->"
,
"userName"
,
data
.
userName
,
"uid"
,
data
.
uid
,
"时间:"
+
new
Date
(
1505886364100
).
toString
());
videoInfo
=
this
.
packVideoInfoAndSendToClient
(
videoData
,
seek
);
this
.
_emit
(
MessageTypes
.
VIDEO_STOP
,
videoInfo
);
}
break
;
default
:
break
}
}
else
{
//判断接收者的id,如果不是0,并且也不是自己的nodeId,那么消息不做处理
if
(
videoReceivePdu
.
toNodeId
!=
0
&&
videoReceivePdu
.
toNodeId
!=
GlobalConfig
.
nodeId
)
{
loger
.
log
(
'视频消息不处理 toNodeId='
,
videoReceivePdu
.
toNodeId
,
"my nodeId="
,
GlobalConfig
.
nodeId
);
}
else
{
loger
.
log
(
'视频控制消息处理 .'
,
videoReceivePdu
);
this
.
_emit
(
MessageTypes
.
VIDEO_BROADCAST
,
videoReceivePdu
);
}
}
}
//切换了MS,重新更新一下当前正在播放的流地址
changeMediaMs
(){
...
...
@@ -609,6 +650,45 @@ class VideoApe extends Ape {
}
/*
* 组织视频数据发送给客户端
* */
packVideoInfoAndSendToClient
(
_param
,
seek
){
let
mediaChannelInfo
=
{};
mediaChannelInfo
.
mediaId
=
_param
.
channelId
;
mediaChannelInfo
.
fromNodeId
=
_param
.
fromNodeId
;
mediaChannelInfo
.
userName
=
_param
.
userName
||
""
;
mediaChannelInfo
.
userRole
=
_param
.
userRole
||
ApeConsts
.
normal
;
mediaChannelInfo
.
mediaType
=
_param
.
mediaType
||
ApeConsts
.
MEDIA_TYPE_DEFAULT
;
mediaChannelInfo
.
screenWidth
=
_param
.
screenWidth
||
GlobalConfig
.
screenWidth
;
mediaChannelInfo
.
screenHeight
=
_param
.
screenHeight
||
GlobalConfig
.
screenHeight
;
mediaChannelInfo
.
deviceType
=
_param
.
deviceType
||
0
;
mediaChannelInfo
.
optionJsonData
=
_param
.
optionJsonData
||
""
;
mediaChannelInfo
.
m3u8Url
=
""
;
mediaChannelInfo
.
rtmpUrl
=
""
;
mediaChannelInfo
.
replay
=
""
;
mediaChannelInfo
.
seek
=
seek
||
0
;
//这个是录制回放时使用的seek
//消息不是自己同步的,需要处理
if
(
_param
.
status
==
ApeConsts
.
CHANNEL_STATUS_OPENING
)
{
let
m3u8Stream
=
this
.
mediaModule
.
getMediaPlayPath
({
"type"
:
"m3u8"
,
"streamId"
:
_param
.
streamId
});
let
rtmpStream
=
this
.
mediaModule
.
getMediaPlayPath
({
"type"
:
"rtmp"
,
"streamId"
:
_param
.
streamId
});
let
replay
=
this
.
mediaModule
.
getMediaRecordPlaybackPath
({
"type"
:
"m3u8"
,
"streamId"
:
_param
.
streamId
});
if
(
m3u8Stream
.
code
==
0
)
{
mediaChannelInfo
.
m3u8Url
=
m3u8Stream
.
playUrl
;
}
if
(
rtmpStream
.
code
==
0
)
{
mediaChannelInfo
.
rtmpUrl
=
rtmpStream
.
playUrl
;
}
if
(
replay
.
code
==
0
)
{
mediaChannelInfo
.
replay
=
replay
.
playUrl
;
}
}
return
mediaChannelInfo
;
}
//更新媒体文件模块的录制信息,每次开启录制的时候需要把当前媒体文件的信息更新一次
updaterRecordApeStatus
(
_param
)
{
loger
.
warn
(
"录制状态发送改变->更新当前的状态->"
,
this
.
mediaModule
.
mediaChannels
);
...
...
请
注册
或
登录
后发表评论