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
AlexWang
2017-06-26 16:27:07 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
4d9a04ec18080640abbe47a7648da5f86becd012
4d9a04ec
1 parent
72f01359
音乐接口
显示空白字符变更
内嵌
并排对比
正在显示
6 个修改的文件
包含
634 行增加
和
2 行删除
src/EngineEntrance.js
src/GlobalConfig.js
src/apes/ApeConsts.js
src/apes/ConferApe.js
src/apes/MusicSharedApe.js
src/pdus/pro.js
src/EngineEntrance.js
查看文件 @
4d9a04e
...
...
@@ -28,6 +28,7 @@ import ArrayBufferUtil from 'libs/ArrayBufferUtil';
import
Server
from
"config/Server"
;
import
MediaModule
from
'apes/MediaModule'
;
import
MediaSharedApe
from
'apes/MediaSharedApe'
;
import
MusicSharedApe
from
'apes/MusicSharedApe'
;
import
QuestionApe
from
'apes/QuestionApe'
;
import
UTF8
from
'utf-8'
;
...
...
@@ -48,6 +49,7 @@ let _whiteboard_ape;
let
_cursor_ape
;
let
_recordPlayback
;
let
_mediaShareApe
;
let
_musicShareApe
;
let
_questionApe
;
//MCUClient 外部实例化主类
...
...
@@ -125,6 +127,10 @@ export default class MessageEntrance extends Emiter {
_mediaShareApe
.
on
(
'*'
,
(
type
,
data
)
=>
this
.
_emit
(
type
,
data
));
_mediaShareApe
.
on
(
MediaSharedApe
.
MEDIASHARED_JOIN_CHANNEL_SUCCESS
,
this
.
mediaShareApeJoinChannelSuccess
.
bind
(
this
));
_musicShareApe
=
new
MusicSharedApe
();
_musicShareApe
.
on
(
'*'
,
(
type
,
data
)
=>
this
.
_emit
(
type
,
data
));
_musicShareApe
.
on
(
MusicSharedApe
.
MUSICSHARED_JOIN_CHANNEL_SUCCESS
,
this
.
musicShareApeJoinChannelSuccess
.
bind
(
this
));
_whiteboard_ape
=
new
WhiteBoardApe
();
_whiteboard_ape
.
on
(
'*'
,
(
type
,
data
)
=>
this
.
_emit
(
type
,
data
));
...
...
@@ -221,6 +227,10 @@ export default class MessageEntrance extends Emiter {
this
.
mediaSharedStop
=
this
.
_sendMediaSharedStop
.
bind
(
this
);
//停止
this
.
mediaSharedUpdate
=
this
.
_sendMediaSharedUpdate
.
bind
(
this
);
//更新媒体的状态
this
.
musicSharedPlay
=
this
.
_sendMusicSharedPlay
.
bind
(
this
);
//Music播放
this
.
musicSharedStop
=
this
.
_sendMusicSharedStop
.
bind
(
this
);
//Music停止
this
.
musicSharedUpdate
=
this
.
_sendMusicSharedUpdate
.
bind
(
this
);
//Music更新媒体的状态
//答题卡
this
.
creatQuestion
=
this
.
_creatQuestion
.
bind
(
this
);
this
.
getQuestion
=
this
.
_getQuestion
.
bind
(
this
);
...
...
@@ -1233,7 +1243,6 @@ export default class MessageEntrance extends Emiter {
}
}
//获取课堂所有参数 api/meeting/detail.do? flash中的接口文件是 getClassParam.do
_sassGetClassParamSuccessHandler
(
_data
)
{
loger
.
log
(
'获取课堂课堂信息完成.'
);
...
...
@@ -1773,6 +1782,19 @@ export default class MessageEntrance extends Emiter {
_mediaShareApe
.
mediaSharedUpload
(
_param
);
}
}
//音乐共享模块的接口
//上传
_sendMusicSharedUpload
(
_param
)
{
if
(
!
_mcu
.
connected
)
{
loger
.
warn
(
GlobalConfig
.
getCurrentStatus
());
return
;
}
if
(
_musicShareApe
)
{
_musicShareApe
.
musicSharedUpload
(
_param
);
}
}
//Sass删除媒体文件数据
_sassDeletMediaShare
(
_param
)
{
if
(
!
_mcu
.
connected
)
{
...
...
@@ -1798,6 +1820,7 @@ export default class MessageEntrance extends Emiter {
_sass
.
sassDeletMediaShare
(
_param
);
}
}
//删除
_sendMediaSharedDelete
(
_param
)
{
if
(
!
_mcu
.
connected
)
{
...
...
@@ -1808,6 +1831,39 @@ export default class MessageEntrance extends Emiter {
_mediaShareApe
.
mediaSharedDelete
(
_param
);
}
}
//音乐更新
_sendMusicSharedUpdate
(
_param
)
{
if
(
!
_mcu
.
connected
)
{
loger
.
warn
(
GlobalConfig
.
getCurrentStatus
());
return
;
}
if
(
_musicShareApe
)
{
_musicShareApe
.
musicSharedUpdate
(
_param
);
}
}
//音乐播放
_sendMusicSharedPlay
(
_param
)
{
if
(
!
_mcu
.
connected
)
{
loger
.
warn
(
GlobalConfig
.
getCurrentStatus
());
return
;
}
if
(
_musicShareApe
)
{
_musicShareApe
.
musicSharedPlay
(
_param
);
}
}
//音乐停止
_sendMusicSharedStop
(
_param
)
{
if
(
!
_mcu
.
connected
)
{
loger
.
warn
(
GlobalConfig
.
getCurrentStatus
());
return
;
}
if
(
_musicShareApe
)
{
_musicShareApe
.
musicSharedStop
(
_param
);
}
}
//更新媒体文件的状态信息
_sendMediaSharedUpdate
(
_param
)
{
if
(
!
_mcu
.
connected
)
{
...
...
@@ -1818,6 +1874,7 @@ export default class MessageEntrance extends Emiter {
_mediaShareApe
.
mediaSharedUpdate
(
_param
);
}
}
//播放
_sendMediaSharedPlay
(
_param
)
{
if
(
!
_mcu
.
connected
)
{
...
...
@@ -1829,6 +1886,7 @@ export default class MessageEntrance extends Emiter {
}
}
//停止
_sendMediaSharedStop
(
_param
)
{
if
(
!
_mcu
.
connected
)
{
loger
.
warn
(
GlobalConfig
.
getCurrentStatus
());
...
...
@@ -1839,6 +1897,31 @@ export default class MessageEntrance extends Emiter {
}
}
//音乐共享模块加入频道成功,同步到MCU服务器上的数据
musicShareApeJoinChannelSuccess
()
{
loger
.
log
(
"媒体共享模块加入频道成功->isHost="
,
GlobalConfig
.
isHost
,
"length="
,
GlobalConfig
.
sharedMusicList
.
length
);
console
.
log
(
"媒体共享模数据->"
,
GlobalConfig
.
sharedMusicList
);
//如果是主持人,那么需要判断一下文档模块同步的数据和从sass获取的文档数据是否相同,如果mcu服务器不存在的,需要上传
if
(
GlobalConfig
.
isHost
&&
GlobalConfig
.
sharedMusicList
.
length
>
0
)
{
for
(
let
i
=
0
;
i
<
GlobalConfig
.
sharedMusicList
.
length
;
i
++
)
{
let
value
=
GlobalConfig
.
sharedMusicList
[
i
];
if
(
value
)
{
let
paramInfo
=
{
"status"
:
0
,
"creatUserId"
:
value
.
creatUserId
,
"creatUserName"
:
value
.
createUserName
,
"url"
:
value
.
url
,
"fileType"
:
value
.
type
,
"fileId"
:
""
+
value
.
id
,
"fileName"
:
value
.
name
,
"seek"
:
0
};
this
.
_sendMusicSharedUpload
(
paramInfo
);
}
}
}
}
//媒体共享模块加入频道成功,同步到MCU服务器上的数据
mediaShareApeJoinChannelSuccess
()
{
loger
.
log
(
"媒体共享模块加入频道成功->isHost="
,
GlobalConfig
.
isHost
,
"length="
,
GlobalConfig
.
sharedMediaList
.
length
);
...
...
@@ -2049,5 +2132,5 @@ export default class MessageEntrance extends Emiter {
}
}
}
}
...
...
src/GlobalConfig.js
查看文件 @
4d9a04e
...
...
@@ -202,6 +202,15 @@ class GlobalConfig {
return
this
.
sharedMediaList
;
}
//储存已经提前上传的媒体共享文件列表
static
setMusicShareList
(
_data
)
{
if
(
_data
==
null
)
return
;
this
.
sharedMusicList
=
_data
;
}
static
getMusicShareList
()
{
return
this
.
sharedMusicList
;
}
//储存录制列表
static
setRecordList
(
_data
)
{
if
(
_data
==
null
)
return
;
...
...
@@ -429,6 +438,7 @@ GlobalConfig.classDetail = {}; //Sass直接返回的当前课堂基本信息
//从Sass获取的
GlobalConfig
.
sharedMediaList
=
[];
// 已经提前上传的媒体文件列表,进入课堂后需要自动加载
GlobalConfig
.
sharedMusicList
=
[];
// 已经提前上传的音乐文件列表,进入课堂后需要自动加载
GlobalConfig
.
docListPrepare
=
[];
// 已经提前上传的文档,进入课堂后需要自动加载
GlobalConfig
.
recordList
=
[];
//录制服务器地址集合
GlobalConfig
.
docList
=
[];
//文档服务器地址集合
...
...
src/apes/ApeConsts.js
查看文件 @
4d9a04e
...
...
@@ -141,6 +141,7 @@ ApeConsts.SCREENSHARING_SESSION_ID = 20;
ApeConsts
.
POLL_SESSION_ID
=
21
;
ApeConsts
.
QUESTION_SESSION_ID
=
22
;
ApeConsts
.
CURSOR_SESSION_ID
=
23
;
ApeConsts
.
MUSIC_SESSION_ID
=
24
;
// defs for common channel id
ApeConsts
.
BROADCAST_CHANNEL_ID
=
0
;
...
...
@@ -152,6 +153,7 @@ ApeConsts.DOCSHARING_CHANNEL_ID = ApeConsts.DOCSHARING_SESSION_ID;
ApeConsts
.
WHITEBOARD_CHANNEL_ID
=
ApeConsts
.
WHITEBOARD_SESSION_ID
;
ApeConsts
.
CURSOR_CHANNEL_ID
=
ApeConsts
.
CURSOR_SESSION_ID
;
ApeConsts
.
MEDIA_CHANNEL_ID
=
ApeConsts
.
MEDIA_SESSION_ID
;
ApeConsts
.
MUSIC_CHANNEL_ID
=
ApeConsts
.
MUSIC_SESSION_ID
;
ApeConsts
.
SCREENSHARING_CHANNEL_ID
=
ApeConsts
.
SCREENSHARING_SESSION_ID
;
ApeConsts
.
QUESTION_CHANNEL_ID
=
ApeConsts
.
QUESTION_SESSION_ID
;
...
...
@@ -167,6 +169,7 @@ ApeConsts.DOCSHARING_SESSION_NAME = "doc sharing app";
ApeConsts
.
WHITEBOARD_SESSION_NAME
=
"whiteboard app"
;
ApeConsts
.
CURSOR_SESSION_NAME
=
"cursor app"
;
ApeConsts
.
MEDIA_SESSION_NAME
=
"media sharing app"
;
ApeConsts
.
MUSIC_SESSION_NAME
=
"music sharing app"
;
ApeConsts
.
SCREENSHARING_SESSION_NAME
=
"screen sharing app"
;
ApeConsts
.
QUESTION_SESSION_NAME
=
"question app"
;
...
...
@@ -181,6 +184,7 @@ ApeConsts.DOCSHARING_SESSION_TAG = "doc-tag";
ApeConsts
.
WHITEBOARD_SESSION_TAG
=
"wbd-tag"
;
ApeConsts
.
CURSOR_SESSION_TAG
=
"cursor-tag"
;
ApeConsts
.
MEDIA_SESSION_TAG
=
"med-tag"
;
ApeConsts
.
MUSIC_SESSION_TAG
=
"mis-tag"
;
ApeConsts
.
SCREENSHARING_SESSION_TAG
=
"scr-tag"
;
ApeConsts
.
QUESTION_SESSION_TAG
=
"qst-tag"
;
...
...
@@ -237,6 +241,11 @@ ApeConsts.MEDIA_OBJ_TABLE_ID = ((ApeConsts.MEDIA_SESSION_ID << 16) + 1);
ApeConsts
.
MEDIA_OBJ_TABLE_NAME
=
"med list"
;
ApeConsts
.
MEDIA_OBJ_TABLE_TAG
=
"med list tag"
;
// music sharing objects
ApeConsts
.
MUSIC_OBJ_TABLE_ID
=
((
ApeConsts
.
MUSIC_SESSION_ID
<<
16
)
+
1
);
ApeConsts
.
MUSIC_OBJ_TABLE_NAME
=
"mis list"
;
ApeConsts
.
MUSIC_OBJ_TABLE_TAG
=
"mis list tag"
;
// chat sharing objects
ApeConsts
.
CHAT_OBJ_TABLE_ID
=
((
ApeConsts
.
CHAT_SESSION_ID
<<
16
)
+
1
);
ApeConsts
.
CHAT_OBJ_TABLE_NAME
=
"chat list"
;
...
...
src/apes/ConferApe.js
查看文件 @
4d9a04e
...
...
@@ -470,6 +470,7 @@ class ConferApe extends Ape {
}
}
//更新课堂信息
sendUpdaterClassStatusInfo
(
_param
)
{
//{"actionType": 1,isStopAllPublishMedia:false} //actionType课堂状态 isStopAllPublishMedia是否停止当前的所有推流
...
...
src/apes/MusicSharedApe.js
0 → 100644
查看文件 @
4d9a04e
// //////////////////////////////////////////////////////////////////////////////
//
// 媒体共享模块
// //////////////////////////////////////////////////////////////////////////////
import
Ape
from
'./Ape'
;
import
ApeConsts
from
'./ApeConsts'
;
import
pdu
from
'pdus'
;
import
Loger
from
'Loger'
;
import
MessageTypes
from
'MessageTypes'
;
import
GlobalConfig
from
'GlobalConfig'
;
import
EngineUtils
from
'EngineUtils'
;
let
loger
=
Loger
.
getLoger
(
'MusicSharedApe'
);
class
MusicSharedApe
extends
Ape
{
constructor
()
{
super
(
ApeConsts
.
MUSIC_SESSION_ID
,
ApeConsts
.
MUSIC_SESSION_NAME
,
ApeConsts
.
MUSIC_SESSION_TAG
);
this
.
musicSharedList
=
{};
//记录媒体数据
// Ape Models
this
.
registerKey
(
this
.
_session_id
,
this
.
_session_name
,
this
.
_session_tag
,
new
ArrayBuffer
);
this
.
registerObj
(
pdu
.
RCPDU_REG_REGISTER_TABLE
,
ApeConsts
.
MUSIC_OBJ_TABLE_ID
,
ApeConsts
.
MUSIC_OBJ_TABLE_NAME
,
ApeConsts
.
MUSIC_OBJ_TABLE_TAG
,
0
,
new
ArrayBuffer
);
}
/////////////发送数据操作//////////////////////////////////////////////////////
//上传媒体文件
musicSharedUpload
(
paramInfo
)
{
if
(
paramInfo
==
null
||
EngineUtils
.
isEmptyObject
(
paramInfo
))
{
loger
.
warn
(
'上传媒体文件->失败->参数错误->'
,
paramInfo
);
this
.
_emit
(
MessageTypes
.
MCU_ERROR
,
MessageTypes
.
ERR_APE_INTERFACE_PARAM_WRONG
);
return
;
}
//判断媒体文件是否已经存在,每个媒体文件都有唯一的fileId,如果已经同步的媒体文件中存在相同的fileId就不需要再同步
if
(
this
.
checkMusicSharedId
(
paramInfo
.
fileId
))
{
//媒体文件已经存在相同的fileId,不需要同步上传
loger
.
warn
(
'上传媒体文件->失败->媒体文件档的fileId无效或已经存在相同的fileId不需要上传'
);
return
;
}
let
itemIdx
=
EngineUtils
.
creatSoleNumberFromTimestamp
();
//
let
pduDataModel
=
this
.
packPdu
(
paramInfo
,
itemIdx
);
if
(
pduDataModel
==
null
)
{
loger
.
log
(
'上传媒体文件->失败->数据无效'
);
this
.
_emit
(
MessageTypes
.
MCU_ERROR
,
MessageTypes
.
ERR_APE_INTERFACE_PARAM_WRONG
);
return
;
}
let
tableItemPdu
=
new
pdu
[
'RCRegistryTableItemPdu'
];
tableItemPdu
.
itemIdx
=
itemIdx
;
//直接用时间戳作为id
tableItemPdu
.
registerObjId
=
ApeConsts
.
MUSIC_OBJ_TABLE_ID
;
tableItemPdu
.
owner
=
0
;
//收到flash的是这个值,不清楚先写固定
tableItemPdu
.
itemData
=
pduDataModel
.
toArrayBuffer
();
//insert
let
tableInsertItemPdu
=
new
pdu
[
'RCRegistryTableInsertItemPdu'
];
//optional RCPduType_E type = 1 [default = RCPDU_REG_TABLE_UPDATE_PDU];
//repeated RCRegistryTableItemPdu items = 2;
tableInsertItemPdu
.
type
=
pdu
.
RCPDU_REG_TABLE_INSERT_PDU
;
//
tableInsertItemPdu
.
items
.
push
(
tableItemPdu
);
let
updateObjPdu
=
new
pdu
[
'RCRegistryUpdateObjPdu'
];
updateObjPdu
.
objId
=
ApeConsts
.
MUSIC_OBJ_TABLE_ID
;
updateObjPdu
.
subType
=
tableInsertItemPdu
.
type
;
updateObjPdu
.
userData
=
tableInsertItemPdu
.
toArrayBuffer
();
//同步
let
adapterItemPdu
=
new
pdu
[
'RCAdapterItemPdu'
];
adapterItemPdu
.
type
=
pdu
.
RCPDU_REG_UPDATE_OBJ
;
adapterItemPdu
.
itemData
=
updateObjPdu
.
toArrayBuffer
();
let
adapterPdu
=
new
pdu
[
'RCAdapterPdu'
];
adapterPdu
.
type
=
pdu
.
RCPDU_REG_ADAPTER
;
adapterPdu
.
item
.
push
(
adapterItemPdu
);
loger
.
log
(
"上传媒体文件->发送->itemIdx="
+
tableItemPdu
.
itemIdx
);
this
.
sendUniform
(
adapterPdu
,
true
);
}
//删除媒体文件
musicSharedDelete
(
paramInfo
)
{
let
tableDeleteItemPdu
=
new
pdu
[
'RCRegistryTableDeleteItemPdu'
];
tableDeleteItemPdu
.
type
=
pdu
.
RCPDU_REG_TABLE_DELETE_PDU
;
//
tableDeleteItemPdu
.
itemIdx
=
parseInt
(
paramInfo
.
itemIdx
);
//这里需要设置要删除的数据的itemIdx,每条数据的这个id都不一样
let
updateObjPdu
=
new
pdu
[
'RCRegistryUpdateObjPdu'
];
updateObjPdu
.
objId
=
ApeConsts
.
MUSIC_OBJ_TABLE_ID
;
updateObjPdu
.
subType
=
tableDeleteItemPdu
.
type
;
updateObjPdu
.
userData
=
tableDeleteItemPdu
.
toArrayBuffer
();
//同步
let
adapterItemPdu
=
new
pdu
[
'RCAdapterItemPdu'
];
adapterItemPdu
.
type
=
pdu
.
RCPDU_REG_UPDATE_OBJ
;
adapterItemPdu
.
itemData
=
updateObjPdu
.
toArrayBuffer
();
let
adapterPdu
=
new
pdu
[
'RCAdapterPdu'
];
adapterPdu
.
type
=
pdu
.
RCPDU_REG_ADAPTER
;
adapterPdu
.
item
.
push
(
adapterItemPdu
);
loger
.
log
(
"媒体文件发送删除数据=============>"
+
tableDeleteItemPdu
.
itemIdx
);
this
.
sendUniform
(
adapterPdu
,
true
);
}
//更新
updaterMusicShared
(
_pduDataModel
,
_itemIdx
)
{
//验证坐标点集合数组是否合法
if
(
_pduDataModel
==
null
||
_itemIdx
==
null
)
{
this
.
_emit
(
MessageTypes
.
MCU_ERROR
,
MessageTypes
.
ERR_APE_INTERFACE_PARAM_WRONG
);
return
null
;
}
loger
.
log
(
"媒体文件->更新 "
,
_pduDataModel
);
let
pduDataModel
=
this
.
packPdu
(
_pduDataModel
,
_itemIdx
);
let
tableItemPdu
=
new
pdu
[
'RCRegistryTableItemPdu'
];
tableItemPdu
.
itemIdx
=
_itemIdx
;
//直接用时间戳作为id
tableItemPdu
.
owner
=
0
;
//收到flash的是这个值,不清楚先写固定
tableItemPdu
.
itemData
=
pduDataModel
.
toArrayBuffer
();
//insert
let
tableInsertItemPdu
=
new
pdu
[
'RCRegistryTableUpdateItemPdu'
];
//optional RCPduType_E type = 1 [default = RCPDU_REG_TABLE_UPDATE_PDU];
//repeated RCRegistryTableItemPdu items = 2;
tableInsertItemPdu
.
type
=
pdu
.
RCPDU_REG_TABLE_UPDATE_PDU
;
//
tableInsertItemPdu
.
items
.
push
(
tableItemPdu
);
let
updateObjPdu
=
new
pdu
[
'RCRegistryUpdateObjPdu'
];
updateObjPdu
.
objId
=
ApeConsts
.
MUSIC_OBJ_TABLE_ID
;
updateObjPdu
.
subType
=
tableInsertItemPdu
.
type
;
updateObjPdu
.
userData
=
tableInsertItemPdu
.
toArrayBuffer
();
//同步
let
adapterItemPdu
=
new
pdu
[
'RCAdapterItemPdu'
];
adapterItemPdu
.
type
=
pdu
.
RCPDU_REG_UPDATE_OBJ
;
adapterItemPdu
.
itemData
=
updateObjPdu
.
toArrayBuffer
();
let
adapterPdu
=
new
pdu
[
'RCAdapterPdu'
];
adapterPdu
.
type
=
pdu
.
RCPDU_REG_ADAPTER
;
adapterPdu
.
item
.
push
(
adapterItemPdu
);
loger
.
log
(
"发送更新媒体文件.itemIdx="
+
tableItemPdu
.
itemIdx
);
this
.
sendUniform
(
adapterPdu
,
true
);
}
//组织完整的媒体文件信息,包含上传时的信息和转换后的完整地址信息
_musicSharedPackFullInfo
(
_itemDataInfo
)
{
let
itemDataInfo
=
_itemDataInfo
;
if
(
!
itemDataInfo
.
seek
)
{
itemDataInfo
.
seek
=
1
;
}
loger
.
log
(
'musicPackFullInfo->'
,
itemDataInfo
);
return
itemDataInfo
;
}
//更新媒体文件模块的录制信息,每次开启录制的时候需要把当前媒体文件的信息更新一次
updaterRecordApeStatus
(
_param
)
{
loger
.
warn
(
"录制状态发送改变->更新当前的媒体文件数据->fileId:"
,
GlobalConfig
.
activeMusicId
,
'page:'
,
GlobalConfig
.
activeMusicSeek
);
this
.
musicSharedSeek
({
"itemIdx"
:
GlobalConfig
.
activeMusicId
,
"seek"
:
GlobalConfig
.
activeMusicSeek
});
}
//清除当前媒体文件模块的数据
clearData
()
{
loger
.
log
(
"clearData->"
)
this
.
musicSharedList
=
{};
GlobalConfig
.
activeMusicId
=
0
;
GlobalConfig
.
activeMusicSeek
=
1
;
}
//更新媒体文件(播放,暂停,停止,seek)
musicSharedUpdate
(
_param
)
{
if
(
_param
==
null
||
_param
.
itemIdx
==
null
)
{
loger
.
warn
(
'媒体文件更新失败->参数错误'
,
_param
);
this
.
_emit
(
MessageTypes
.
MCU_ERROR
,
MessageTypes
.
ERR_APE_INTERFACE_PARAM_WRONG
);
return
;
}
//获取已经存在的数据
let
pduDataModel
=
this
.
musicSharedList
[
_param
.
itemIdx
];
if
(
pduDataModel
==
null
)
{
loger
.
warn
(
'更新媒体文件->媒体文件不存在'
,
_param
);
this
.
_emit
(
MessageTypes
.
MCU_ERROR
,
MessageTypes
.
ERR_APE_INTERFACE_PARAM_WRONG
);
return
;
}
//更新当前选择的媒体文件数据的字段
pduDataModel
.
status
=
parseInt
(
_param
.
status
)
||
0
;
//默认是0
pduDataModel
.
seek
=
parseInt
(
_param
.
seek
)
||
1
;
pduDataModel
.
musicVolume
=
parseInt
(
_param
.
musicVolume
)
||
0
;
//更新当前选择的媒体文件
this
.
updaterMusicShared
(
pduDataModel
,
pduDataModel
.
itemIdx
);
}
//播放媒体文件
musicSharedPlay
(
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
;
}
/* if (paramInfo.itemIdx == GlobalConfig.activeMusicId && GlobalConfig.activeMusicId != 0) {
loger.warn('媒体文件已经显示', paramInfo.itemIdx, GlobalConfig.activeMusicId);
return;
}*/
//更新切换之前的媒体文件的数据,要显示当前切换的媒体文件,上一个媒体文件需要隐藏
let
oldPduDataModel
;
if
(
GlobalConfig
.
activeMusicId
!=
0
)
{
oldPduDataModel
=
this
.
musicSharedList
[
GlobalConfig
.
activeMusicId
];
if
(
oldPduDataModel
)
{
oldPduDataModel
.
status
=
0
;
//停止状态
//oldPduDataModel.seek=0;
}
}
//获取已经存在的数据
let
pduDataModel
=
this
.
musicSharedList
[
paramInfo
.
itemIdx
];
if
(
pduDataModel
==
null
)
{
loger
.
warn
(
'切换媒体文件失败,媒体文件不存在'
,
paramInfo
);
this
.
_emit
(
MessageTypes
.
MCU_ERROR
,
MessageTypes
.
ERR_APE_INTERFACE_PARAM_WRONG
);
return
;
}
//更新当前选择的媒体文件数据的字段
pduDataModel
.
status
=
paramInfo
.
status
||
0
;
//默认是0
pduDataModel
.
seek
=
paramInfo
.
seek
||
1
;
pduDataModel
.
musicVolume
=
parseInt
(
paramInfo
.
musicVolume
)
||
0
;
//loger.log('切换媒体文件,当前媒体文件和上一个显示的媒体文件都需要更新状态');
loger
.
log
({
"oldDoc"
:
oldPduDataModel
,
"nowDoc"
:
pduDataModel
});
//更新当前选择的媒体文件
this
.
updaterMusicShared
(
pduDataModel
,
pduDataModel
.
itemIdx
);
//更新上一个媒体文件 隐藏
if
(
oldPduDataModel
&&
oldPduDataModel
.
itemIdx
!=
pduDataModel
.
itemIdx
)
{
this
.
updaterMusicShared
(
oldPduDataModel
,
oldPduDataModel
.
itemIdx
);
}
}
//停止媒体文件
musicSharedStop
(
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
.
musicSharedList
[
paramInfo
.
itemIdx
];
if
(
pduDataModel
==
null
)
{
loger
.
warn
(
'停止媒体文件,媒体文件不存在'
,
paramInfo
);
this
.
_emit
(
MessageTypes
.
MCU_ERROR
,
MessageTypes
.
ERR_APE_INTERFACE_PARAM_WRONG
);
return
;
}
//更新当前选择的媒体文件数据的字段
pduDataModel
.
status
=
0
;
//默认是0
pduDataModel
.
seek
=
0
;
pduDataModel
.
musicVolume
=
60
;
//更新当前选择的媒体文件
this
.
updaterMusicShared
(
pduDataModel
,
pduDataModel
.
itemIdx
);
}
//暂停媒体文件
musicSharedPause
(
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
.
musicSharedList
[
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
.
updaterMusicShared
(
pduDataModel
,
pduDataModel
.
itemIdx
);
}
//媒体文件SEEK
musicSharedSeek
(
paramInfo
)
{
loger
.
log
(
'媒体文件SEEK->'
,
paramInfo
);
//获取已经存在的数据
let
pduDataModel
=
this
.
musicSharedList
[
paramInfo
.
itemIdx
];
if
(
pduDataModel
==
null
)
{
loger
.
log
(
'媒体文件SEEK->媒体文件不存在'
,
paramInfo
);
this
.
_emit
(
MessageTypes
.
MCU_ERROR
,
MessageTypes
.
ERR_APE_INTERFACE_PARAM_WRONG
);
return
;
}
//更新数据的字段
pduDataModel
.
seek
=
parseInt
(
paramInfo
.
seek
)
||
1
;
if
(
pduDataModel
.
seek
<
1
)
{
pduDataModel
.
seek
=
1
;
//默认值最小是1
}
this
.
updaterMusicShared
(
pduDataModel
,
pduDataModel
.
itemIdx
);
}
/////收到消息处理/////////////////////////////////////////////////////////////////////////////////
tableInsertHandler
(
owner
,
itemIdx
,
itemData
)
{
}
//添加媒体文件
tableInsertApeHandler
(
_tableUpdateItems
,
_seekTime
)
{
let
tableInsertItems
=
_tableUpdateItems
;
let
tableInsertItemsLen
=
tableInsertItems
.
length
;
loger
.
log
(
'添加媒体文件->_seekTime:'
+
_seekTime
,
"activeMusicId->"
,
GlobalConfig
.
activeMusicId
,
"tableUpdateItemsLen->"
,
tableInsertItemsLen
);
for
(
let
i
=
0
;
i
<
tableInsertItemsLen
;
++
i
)
{
let
insertItem
=
tableInsertItems
[
i
];
//this.tableInsertHandler(insertItem.owner, insertItem.itemIdx, insertItem.itemData);
let
itemDataInfo
=
this
.
unPackPdu
(
insertItem
.
owner
,
insertItem
.
itemIdx
,
insertItem
.
itemData
);
if
(
itemDataInfo
)
{
itemDataInfo
.
seek
=
itemDataInfo
.
seek
+
parseInt
(
_seekTime
);
//seek是媒体文件自己的,_seekTime是录制回放时进度条换算的
this
.
musicSharedList
[
insertItem
.
itemIdx
]
=
itemDataInfo
;
if
(
itemDataInfo
.
status
==
1
)
{
GlobalConfig
.
activeMusicId
=
itemDataInfo
.
itemIdx
;
//当前激活的媒体文件ID
GlobalConfig
.
activeMusicSeek
=
itemDataInfo
.
seek
;
loger
.
log
(
'添加媒体文件->设置当前激活的媒体文件id'
);
}
let
getMusicPackFullInfo
=
this
.
_musicSharedPackFullInfo
(
itemDataInfo
);
this
.
_emit
(
MessageTypes
.
MEDIA_SHARED_UPDATE
,
getMusicPackFullInfo
);
}
}
//媒体文件数据更新完毕,如果当前没有显示的媒体文件,默认选择一个显示
this
.
_showDefaultMeida
();
}
tableDeleteHandler
(
object_id
,
tableDeleteData
)
{
loger
.
log
(
'删除媒体文件数据->'
,
object_id
,
tableDeleteData
);
//["tableDeleteHandler",1179649,{"type":231,"itemIdx":[1486301768]}]
if
(
tableDeleteData
&&
tableDeleteData
.
itemIdx
)
{
let
len
=
tableDeleteData
.
itemIdx
.
length
;
let
itemIdxs
=
tableDeleteData
.
itemIdx
;
for
(
let
i
=
0
;
i
<
len
;
i
++
)
{
if
(
this
.
musicSharedList
[
itemIdxs
[
i
]])
{
loger
.
log
(
"删除媒体文件数据:"
,
itemIdxs
[
i
]);
let
itemDataInfo
=
this
.
musicSharedList
[
itemIdxs
[
i
]];
if
(
itemDataInfo
&&
itemDataInfo
.
status
==
1
)
{
GlobalConfig
.
activeMusicId
=
0
;
//当前激活的媒体文件ID
GlobalConfig
.
activeMusicSeek
=
1
;
//当前激活的媒体文件的当前页
loger
.
log
(
'删除媒体文件数据->清除当前显示的媒体文件'
);
}
this
.
_emit
(
MessageTypes
.
MEDIA_SHARED_DELETE
,
{
"itemIdx"
:
itemIdxs
[
i
]
});
delete
this
.
musicSharedList
[
itemIdxs
[
i
]];
}
}
}
}
tableUpdateHandler
(
owner
,
itemIdx
,
itemData
)
{
}
tableUpdateApeHandler
(
_tableUpdateItems
,
_seekTime
)
{
let
tableUpdateItemsLen
=
_tableUpdateItems
.
length
;
loger
.
log
(
'更新媒体文件->_seekTime:'
+
_seekTime
,
"activeDocId->"
,
GlobalConfig
.
activeMusicId
,
"更新的数量->"
,
tableUpdateItemsLen
);
for
(
let
i
=
0
;
i
<
tableUpdateItemsLen
;
++
i
)
{
let
tableItem
=
_tableUpdateItems
[
i
];
let
itemDataInfo
=
this
.
unPackPdu
(
tableItem
.
owner
,
tableItem
.
itemIdx
,
tableItem
.
itemData
);
if
(
itemDataInfo
!=
null
)
{
itemDataInfo
.
seek
=
itemDataInfo
.
seek
+
parseInt
(
_seekTime
);
this
.
musicSharedList
[
tableItem
.
itemIdx
]
=
itemDataInfo
;
if
(
itemDataInfo
&&
itemDataInfo
.
status
==
1
)
{
GlobalConfig
.
activeMusicId
=
itemDataInfo
.
itemIdx
;
//当前激活的媒体文件ID
GlobalConfig
.
activeMusicSeek
=
itemDataInfo
.
seek
;
loger
.
log
(
'更新媒体文件->设置当前激活的媒体文件id->'
,
GlobalConfig
.
activeMusicId
,
"curPageNum->"
,
GlobalConfig
.
activeMusicSeek
);
}
let
getMusicPackFullInfo
=
this
.
_musicSharedPackFullInfo
(
itemDataInfo
);
this
.
_emit
(
MessageTypes
.
MEDIA_SHARED_UPDATE
,
getMusicPackFullInfo
);
}
else
{
loger
.
log
(
'更新媒体文件-> 数据无效--> itemIdx'
,
itemIdx
);
}
}
this
.
_showDefaultMeida
();
}
//果当前没有显示的媒体文件,默认选择一个显示媒体文件
_showDefaultMeida
()
{
//显示默认媒体文件条件->1.非录制回放状态下 2.只有host有权限操作 3.当前激活的媒体文件id不为0
if
(
GlobalConfig
.
isRecordPlayBack
||
!
GlobalConfig
.
isHost
||
GlobalConfig
.
activeMusicId
>
0
)
{
return
;
}
/*
let tempDocItemIdx;//临时记录媒体文件数据,用于显示默认媒体文件
for (let key in this.musicSharedList) {
tempDocItemIdx= this.musicSharedList[key];
if (tempDocItemIdx) {
loger.log("选择一个媒体文件作为默认媒体文件显示->", tempDocItemIdx);
let paramInfo = {
"itemIdx": tempDocItemIdx.itemIdx,
"status": 1
};
this.musicSharedPlay(paramInfo);
//选择完成就跳出循环
return;
}
}*/
}
onJoinChannelHandlerSuccess
()
{
loger
.
log
(
this
.
_session_name
+
' 媒体共享加入频道成功'
);
if
(
this
.
_apeDelayed
)
{
setTimeout
(()
=>
{
this
.
_emit
(
MusicSharedApe
.
MEDIASHARED_JOIN_CHANNEL_SUCCESS
);
},
(
GlobalConfig
.
mcuDelay
+
GlobalConfig
.
docDelay
)
||
12000
+
GlobalConfig
.
docDelay
);
}
else
{
setTimeout
(()
=>
{
this
.
_emit
(
MusicSharedApe
.
MEDIASHARED_JOIN_CHANNEL_SUCCESS
);
},
GlobalConfig
.
docDelay
);
}
}
//检查媒体文件是否已经存在,如果存在 返回true,否则返回false
checkMusicSharedId
(
_fileId
)
{
if
(
_fileId
==
null
)
{
loger
.
warn
(
'查找媒体文件->失败->参数为null'
);
return
true
;
}
//遍历查找
for
(
let
key
in
this
.
musicSharedList
)
{
let
item
=
this
.
musicSharedList
[
key
];
if
(
item
&&
item
.
fileId
==
_fileId
)
{
loger
.
log
(
'查找媒体文件->已经存在->'
,
_fileId
);
return
true
;
}
}
loger
.
log
(
'查找媒体文件->没有查找到媒体文件->'
,
_fileId
);
//储存的数据中没有查找到
return
false
;
}
///////数据的封包和解包/////////////////////////////////////////
packPdu
(
_param
,
_itemIdx
)
{
loger
.
log
(
"媒体文件->packPdu"
);
//验证坐标点集合数组是否合法
if
(
_param
==
null
||
_itemIdx
==
null
)
{
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
[
'RCMusicSharedSendDataModelPdu'
];
pduDataModel
.
itemIdx
=
_itemIdx
;
pduDataModel
.
owner
=
GlobalConfig
.
nodeId
;
pduDataModel
.
from
=
GlobalConfig
.
nodeId
;
pduDataModel
.
fileType
=
_param
.
fileType
||
""
;
pduDataModel
.
creatUserId
=
_param
.
creatUserId
||
"0"
;
pduDataModel
.
url
=
_param
.
url
||
""
;
//这个地址没用到,数据太长占用资源 暂停使用//"http://101.200.150.192/DocSharing/data/h5test/20170206-171100025/7e9c4178cac1133e0dd9d5b583439122.jpg";
pduDataModel
.
status
=
_param
.
status
||
0
;
pduDataModel
.
fileId
=
_param
.
fileId
||
""
;
//媒体文件在服务器数据库中的唯一id,必须有
pduDataModel
.
fileName
=
_param
.
fileName
||
"music_"
+
_itemIdx
;
//媒体文件的名字
pduDataModel
.
seek
=
parseInt
(
_param
.
seek
)
||
1
;
pduDataModel
.
musicVolume
=
parseInt
(
_param
.
musicVolume
);
if
(
!
pduDataModel
.
musicVolume
)
{
pduDataModel
.
musicVolume
=
60
;
}
return
pduDataModel
;
}
unPackPdu
(
owner
,
itemIdx
,
itemData
)
{
if
(
owner
==
null
||
itemIdx
==
null
||
itemData
==
null
)
{
this
.
_emit
(
MessageTypes
.
MCU_ERROR
,
MessageTypes
.
ERR_APE_INTERFACE_PARAM_WRONG
);
return
null
;
}
try
{
let
pduDataModel
=
pdu
[
'RCMusicSharedSendDataModelPdu'
].
decode
(
itemData
);
loger
.
log
(
"媒体文件===>unPackPdu"
);
return
pduDataModel
;
}
catch
(
err
)
{
loger
.
log
(
"媒体文件===>unPackPdu->Pdu解析错误->itemIdx="
+
itemIdx
+
"->err:"
+
err
.
message
);
}
return
null
;
}
}
MusicSharedApe
.
prototype
.
MEDIASHARED_JOIN_CHANNEL_SUCCESS
=
MusicSharedApe
.
MEDIASHARED_JOIN_CHANNEL_SUCCESS
=
'musicShared_join_channel_success'
;
export
default
MusicSharedApe
;
...
...
src/pdus/pro.js
查看文件 @
4d9a04e
...
...
@@ -758,6 +758,20 @@ message RCMediaSharedSendDataModelPdu {
optional
uint32
mediaVolume
=
11
;
//音量
}
message
RCMusicSharedSendDataModelPdu
{
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
optional
uint32
mediaVolume
=
11
;
//音量
}
message
RCDocBroadcastDataRequestPdu
{
optional
uint32
from_node_id
=
1
;
//发起人
optional
uint32
to_node_id
=
2
;
//接收人,如果是0就是所有人都接收
...
...
请
注册
或
登录
后发表评论