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
ffee9ac274dc68f8ed2f79b209c6860965d521b2
ffee9ac2
1 parent
3c53d4c0
增加媒体共享模块的数据更新
隐藏空白字符变更
内嵌
并排对比
正在显示
5 个修改的文件
包含
90 行增加
和
115 行删除
dist/McuClient.js
src/EngineEntrance.js
src/apes/ConferApe.js
src/apes/MediaSharedApe.js
src/pdus/pro.js
dist/McuClient.js
查看文件 @
ffee9ac
此 diff 太大无法显示。
src/EngineEntrance.js
查看文件 @
ffee9ac
...
...
@@ -30,7 +30,7 @@ import MediaSharedApe from 'apes/MediaSharedApe';
import
UTF8
from
'utf-8'
;
let
loger
=
Loger
.
getLoger
(
'McuClient'
);
let
_sdkInfo
=
{
"version"
:
"v1.30.
3.20170602
"
,
"author"
:
"www.3mang.com"
};
let
_sdkInfo
=
{
"version"
:
"v1.30.
5.20170605
"
,
"author"
:
"www.3mang.com"
};
//APE
let
_sass
;
...
...
@@ -1540,7 +1540,7 @@ export default class MessageEntrance extends Emiter {
return
;
}
if
(
_mediaShareApe
)
{
_mediaShareApe
.
mediaShared
Delete
(
_param
);
_mediaShareApe
.
mediaShared
Play
(
_param
);
}
}
//停止
...
...
@@ -1579,26 +1579,24 @@ export default class MessageEntrance extends Emiter {
loger
.
log
(
"媒体共享模块加入频道成功->isHost="
,
GlobalConfig
.
isHost
,
"length="
,
GlobalConfig
.
sharedMediaList
.
length
);
console
.
log
(
"媒体共享模数据->"
,
GlobalConfig
.
sharedMediaList
);
//如果是主持人,那么需要判断一下文档模块同步的数据和从sass获取的文档数据是否相同,如果mcu服务器不存在的,需要上传
/*
if (GlobalConfig.isHost && GlobalConfig.sharedMediaList.length > 0) {
if
(
GlobalConfig
.
isHost
&&
GlobalConfig
.
sharedMediaList
.
length
>
0
)
{
for
(
let
i
=
0
;
i
<
GlobalConfig
.
sharedMediaList
.
length
;
i
++
)
{
let
value
=
GlobalConfig
.
sharedMediaList
[
i
];
if
(
value
)
{
//loger.log("判断是否需要把提前上传的文档上传到mcu", value);
let
paramInfo
=
{
"pageNum": value.pdfSize,
"fileName": value.name,
"status"
:
0
,
"creatUserId"
:
value
.
creatUserId
,
"creatUserName"
:
value
.
createUserName
,
"url"
:
value
.
url
,
"fileType"
:
value
.
type
,
"relativeUrl": value.relativeLocation,
"url": value.absoluteLocation,
"creatUserId": value.createUserID,
"docId": value.id,
"md5": value.MD5,
"visible": false
"fileId"
:
""
+
value
.
id
,
"fileName"
:
value
.
name
,
"seek"
:
0
};
this._send
Document
Upload(paramInfo);
this
.
_send
MediaShared
Upload
(
paramInfo
);
}
}
}
*/
}
}
//录制回放相关的处理------------------------------------------------
...
...
src/apes/ConferApe.js
查看文件 @
ffee9ac
...
...
@@ -567,8 +567,7 @@ class ConferApe extends Ape {
tableUpdateHandler
(
owner
,
itemIdx
,
itemData
)
{
try
{
let
model
=
this
.
unPackPdu
(
owner
,
itemIdx
,
itemData
);
loger
.
log
(
'课堂数据更新'
);
loger
.
log
(
model
);
loger
.
log
(
'课堂数据更新->'
,
model
);
//处理课堂更新的信息
if
(
model
&&
model
.
classStatusInfo
)
{
...
...
@@ -579,8 +578,11 @@ class ConferApe extends Ape {
this
.
_emit
(
MessageTypes
.
STOP_ALL_MEDIA_PUBLISH
);
}
}
//通知应用层更新课堂状态
this
.
_emit
(
MessageTypes
.
CLASS_UPTATE_STATUS
,
GlobalConfig
.
classStatusInfo
);
let
classInfo
=
GlobalConfig
.
classStatusInfo
;
loger
.
log
(
'通知应用层更新课堂状态->CLASS_UPTATE_STATUS'
)
this
.
_emit
(
MessageTypes
.
CLASS_UPTATE_STATUS
,
classInfo
);
//如果MCU已经断开连接,停止计时器
if
(
!
this
.
mcu
.
connected
)
{
...
...
@@ -596,8 +598,8 @@ class ConferApe extends Ape {
//停止计时
this
.
stopTimerCounter
();
}
}
catch
(
e
)
{
loger
.
warn
(
'ConferApe table update got exception. itemIdx'
,
itemIdx
);
}
catch
(
err
)
{
loger
.
warn
(
'ConferApe table update got exception->err'
,
err
.
message
);
}
}
...
...
src/apes/MediaSharedApe.js
查看文件 @
ffee9ac
...
...
@@ -145,98 +145,14 @@ class MediaSharedApe extends Ape {
loger
.
log
(
"发送更新媒体文件.itemIdx="
+
tableItemPdu
.
itemIdx
);
this
.
sendUniform
(
adapterPdu
,
true
);
}
//获取媒体文件的完整地址和所有图片
getMediaSharedAddress
(
_param
){
if
(
_param
==
null
||
_param
.
url
==
null
||
_param
.
itemIdx
==
null
)
{
loger
.
warn
(
'获取媒体文件完整地址->传递的参数不正确->'
,
_param
);
return
{
"code"
:
ApeConsts
.
RETURN_FAILED
,
"data"
:
"获取媒体文件时传递的参数不对"
};
}
let
fullPath
=
''
;
//媒体文件路径地址
let
pageNum
=
1
;
//总页数
let
docType
=
""
;
//媒体文件地址的后缀类型
let
fileType
=
""
;
//媒体文件的原始类型
let
docItem
=
this
.
mediaSharedList
[
_param
.
itemIdx
];
if
(
docItem
){
fullPath
=
docItem
.
url
||
""
;
pageNum
=
docItem
.
pageNum
||
1
;
fileType
=
docItem
.
fileType
||
""
}
else
{
fullPath
=
_param
.
url
;
}
//获取当前媒体文件的后缀名
docType
=
this
.
_getMediaType
(
fullPath
);
let
substrFullPath
=
this
.
_getMediaPath
(
fullPath
);
//获取去掉后缀和文件名的地址,需要获取同目录下其他文件
let
imagesArr
=
[];
let
htmlPath
=
""
;
let
pdfPath
=
""
;
//根据文件后缀名,生成对应的访问地址
if
(
docType
==
"jpg"
||
docType
==
"png"
||
docType
==
"swf"
||
docType
==
"pdf"
||
docType
==
"doc"
||
docType
==
"pptx"
){
//页数从1开始
for
(
let
i
=
1
;
i
<=
pageNum
;
i
++
)
{
imagesArr
.
push
(
substrFullPath
+
"/"
+
i
+
".jpg"
);
}
}
if
(
docType
==
"swf"
||
docType
==
"pdf"
||
docType
==
"doc"
||
docType
==
"pptx"
){
pdfPath
=
fullPath
.
replace
(
/
\.
swf/g
,
".pdf"
)
||
""
;
}
//动态PPT
if
(
docType
==
"html"
){
htmlPath
=
fullPath
;
}
//返回媒体文件第所有地址
return
{
'code'
:
ApeConsts
.
RETURN_SUCCESS
,
'data'
:
''
,
'docFullAddress'
:{
'images'
:
imagesArr
,
'pdf'
:
pdfPath
,
'html'
:
htmlPath
}};
}
_getMediaType
(
_fullPath
){
if
(
!
_fullPath
){
return
""
;
}
if
(
_fullPath
.
lastIndexOf
(
".jpg"
)
>=
0
){
return
"jpg"
;
}
if
(
_fullPath
.
lastIndexOf
(
".png"
)
>=
0
){
return
"png"
;
}
if
(
_fullPath
.
lastIndexOf
(
".swf"
)
>=
0
){
return
"swf"
;
}
if
(
_fullPath
.
lastIndexOf
(
".pdf"
)
>=
0
){
return
"pdf"
;
}
if
(
_fullPath
.
lastIndexOf
(
".doc"
)
>=
0
){
return
"doc"
;
}
if
(
_fullPath
.
lastIndexOf
(
".html"
)
>=
0
){
return
"html"
;
}
if
(
_fullPath
.
lastIndexOf
(
".pptx"
)
>=
0
){
return
"pptx"
;
}
return
""
;
}
//获取去掉文件名和后缀名的地址 http://www.xxx.xxx/image/aa.jpg -->http://www.xxx.xxx/image/
_getMediaPath
(
_fullPath
){
if
(
!
_fullPath
){
return
""
;
}
var
lastIndex
=
_fullPath
.
lastIndexOf
(
"/"
);
if
(
lastIndex
>
0
)
{
return
_fullPath
.
substr
(
0
,
lastIndex
);
}
return
_fullPath
;
}
//组织完整的媒体文件信息,包含上传时的信息和转换后的完整地址信息
_mediaSharedPackFullInfo
(
_itemDataInfo
){
let
itemDataInfo
=
_itemDataInfo
;
let
getDocAddress
=
this
.
getMediaSharedAddress
(
_itemDataInfo
);
if
(
itemDataInfo
.
seek
==
null
){
itemDataInfo
.
seek
=
1
;
}
/*let getDocAddress=this.getMediaSharedAddress(_itemDataInfo);
if(getDocAddress.code==ApeConsts.RETURN_SUCCESS){
itemDataInfo.images=getDocAddress.docFullAddress.images||[];
itemDataInfo.pdf=getDocAddress.docFullAddress.pdf||"";
...
...
@@ -245,8 +161,8 @@ class MediaSharedApe extends Ape {
itemDataInfo.images=[];
itemDataInfo.pdf='';
itemDataInfo.html='';
}
loger
.
log
(
'docPackFullInfo->'
,
itemDataInfo
);
}*/
loger
.
log
(
'mediaPackFullInfo->'
,
itemDataInfo
);
return
itemDataInfo
;
}
//更新媒体文件模块的录制信息,每次开启录制的时候需要把当前媒体文件的信息更新一次
...
...
@@ -281,17 +197,17 @@ class MediaSharedApe extends Ape {
return
;
}
if
(
paramInfo
.
itemIdx
==
GlobalConfig
.
activeMediaId
&&
GlobalConfig
.
activeMediaId
!=
0
)
{
/*
if (paramInfo.itemIdx == GlobalConfig.activeMediaId && GlobalConfig.activeMediaId != 0) {
loger.warn('媒体文件已经显示', paramInfo.itemIdx, GlobalConfig.activeMediaId);
return;
}
}
*/
//更新切换之前的媒体文件的数据,要显示当前切换的媒体文件,上一个媒体文件需要隐藏
let
oldPduDataModel
;
if
(
GlobalConfig
.
activeMediaId
!=
0
)
{
oldPduDataModel
=
this
.
mediaSharedList
[
GlobalConfig
.
activeMediaId
];
if
(
oldPduDataModel
)
{
oldPduDataModel
.
status
=
1
;
//设置为不可见
oldPduDataModel
.
status
=
0
;
//设置为不可见
}
}
...
...
@@ -312,18 +228,64 @@ class MediaSharedApe extends Ape {
this
.
updaterMediaShared
(
pduDataModel
,
pduDataModel
.
itemIdx
);
//更新上一个媒体文件 隐藏
if
(
oldPduDataModel
)
{
if
(
oldPduDataModel
&&
oldPduDataModel
.
itemIdx
!=
pduDataModel
.
itemIdx
)
{
this
.
updaterMediaShared
(
oldPduDataModel
,
oldPduDataModel
.
itemIdx
);
}
}
//停止媒体文件
mediaSharedStop
(
paramInfo
)
{
loger
.
log
(
'停止媒体文件->'
,
paramInfo
);
if
(
GlobalConfig
.
isRecordPlayBack
)
{
loger
.
warn
(
'录制回放状态不允许停止媒体文件'
);
return
;
}
if
(
paramInfo
==
null
||
paramInfo
.
itemIdx
==
null
)
{
loger
.
warn
(
'停止媒体文件,参数错误'
,
paramInfo
);
this
.
_emit
(
MessageTypes
.
MCU_ERROR
,
MessageTypes
.
ERR_APE_INTERFACE_PARAM_WRONG
);
return
;
}
//获取已经存在的数据
let
pduDataModel
=
this
.
mediaSharedList
[
paramInfo
.
itemIdx
];
if
(
pduDataModel
==
null
)
{
loger
.
warn
(
'停止媒体文件,媒体文件不存在'
,
paramInfo
);
this
.
_emit
(
MessageTypes
.
MCU_ERROR
,
MessageTypes
.
ERR_APE_INTERFACE_PARAM_WRONG
);
return
;
}
//更新当前选择的媒体文件数据的字段
pduDataModel
.
status
=
0
;
//默认是0
//更新当前选择的媒体文件
this
.
updaterMediaShared
(
pduDataModel
,
pduDataModel
.
itemIdx
);
}
//暂停媒体文件
mediaSharedPause
(
paramInfo
)
{
loger
.
log
(
'暂停媒体文件->'
,
paramInfo
);
if
(
GlobalConfig
.
isRecordPlayBack
)
{
loger
.
warn
(
'录制回放-》暂停媒体文件'
);
return
;
}
if
(
paramInfo
==
null
||
paramInfo
.
itemIdx
==
null
)
{
loger
.
warn
(
'暂停媒体文件,参数错误'
,
paramInfo
);
this
.
_emit
(
MessageTypes
.
MCU_ERROR
,
MessageTypes
.
ERR_APE_INTERFACE_PARAM_WRONG
);
return
;
}
//获取已经存在的数据
let
pduDataModel
=
this
.
mediaSharedList
[
paramInfo
.
itemIdx
];
if
(
pduDataModel
==
null
)
{
loger
.
warn
(
'暂停媒体文件,媒体文件不存在'
,
paramInfo
);
this
.
_emit
(
MessageTypes
.
MCU_ERROR
,
MessageTypes
.
ERR_APE_INTERFACE_PARAM_WRONG
);
return
;
}
//更新当前选择的媒体文件数据的字段
pduDataModel
.
status
=
2
;
//默认是0
//更新当前选择的媒体文件
this
.
updaterMediaShared
(
pduDataModel
,
pduDataModel
.
itemIdx
);
}
//媒体文件SEEK
mediaSharedSeek
(
paramInfo
)
{
...
...
@@ -425,7 +387,7 @@ class MediaSharedApe extends Ape {
if
(
GlobalConfig
.
isRecordPlayBack
||
!
GlobalConfig
.
isHost
||
GlobalConfig
.
activeMediaId
>
0
)
{
return
;
}
/*
let tempDocItemIdx;//临时记录媒体文件数据,用于显示默认媒体文件
for (let key in this.mediaSharedList) {
tempDocItemIdx= this.mediaSharedList[key];
...
...
@@ -439,7 +401,7 @@ class MediaSharedApe extends Ape {
//选择完成就跳出循环
return;
}
}
}
*/
}
onJoinChannelHandlerSuccess
()
{
...
...
@@ -482,6 +444,17 @@ class MediaSharedApe extends Ape {
this
.
_emit
(
MessageTypes
.
MCU_ERROR
,
MessageTypes
.
ERR_APE_INTERFACE_PARAM_WRONG
);
return
null
;
}
/* optional uint32 item_idx=1;//唯一标识
optional uint32 owner=2;
optional uint32 from=3;
optional string file_type=4;
optional string creat_user_id=5;//创建文件userid
optional string url =6;//文件地址
optional uint32 status=7;//状态0停止 1播放 2暂停
optional string fileId=8;//文件在服务器数据库中的唯一id
optional string file_name=9;//文件的名字
optional uint32 seek=10;//seek*/
//判断type类型,根据type设置不同的参数
let
pduDataModel
=
new
pdu
[
'RCMediaSharedSendDataModelPdu'
];
pduDataModel
.
itemIdx
=
_itemIdx
;
...
...
@@ -493,6 +466,7 @@ class MediaSharedApe extends Ape {
pduDataModel
.
status
=
_param
.
status
||
0
;
pduDataModel
.
fileId
=
_param
.
fileId
||
""
;
//媒体文件在服务器数据库中的唯一id,必须有
pduDataModel
.
fileName
=
_param
.
fileName
||
"media_"
+
_itemIdx
;
//媒体文件的名字
pduDataModel
.
seek
=
parseInt
(
_param
.
seek
)
||
1
;
return
pduDataModel
;
}
...
...
src/pdus/pro.js
查看文件 @
ffee9ac
...
...
@@ -754,6 +754,7 @@ message RCMediaSharedSendDataModelPdu {
optional
uint32
status
=
7
;
//状态0停止 1播放 2暂停
optional
string
fileId
=
8
;
//文件在服务器数据库中的唯一id
optional
string
file_name
=
9
;
//文件的名字
optional
uint32
seek
=
10
;
//seek
}
message
RCDocBroadcastDataRequestPdu
{
...
...
请
注册
或
登录
后发表评论