|
我现在是这么解决的,但不知道如果多用户在线并请求该本地视频时是否会发生什么样的后果或者发生内存泄漏的问题
我在用户进入房间并取得与本地用户的网络连接监听回调事件中,加上了本地主动与远程连接视音频
// 本地用户与其它用户的P2P网络连接状态发生变化,dwUserId表示其它用户ID号,State表示本地用户与其它用户的当前P2P网络连接状态(0:没有连接,1:仅TCP连接,2:仅UDP连接,3:TCP与UDP连接)
function OnAnyChatP2PConnectState(dwUserId, State) {
//判断当其他远程用户与本地用户建立tcp和udp连接后,本地设置跟该远程用户的视频和音频连接
if(dwUserId!=-1 && State ==3){
BRAC_UserCameraControl(dwUserId, 1); // 请求对方视频
BRAC_UserSpeakControl(dwUserId, 1); // 请求对方语音
BRAC_SetVideoPos(dwUserId, GetID("AnyChatRemoteVideoDiv"), "ANYCHAT_VIDEO_REMOTE");
}}
在用户进出房间监听的回调事件中,本地主动跟离开的用户断开视音频
// 用户进入(离开)房间,dwUserId表示用户ID号,bEnterRoom表示该用户是进入(1)或离开(0)房间
function OnAnyChatUserAtRoom(dwUserId, bEnterRoom) {
AddLog("OnAnyChatUserAtRoom(userid=" + dwUserId + ", benter=" + bEnterRoom + ")", LOG_TYPE_EVENT);
RoomUserListControl(dwUserId, bEnterRoom ? true : false);
if (bEnterRoom == 1) {
ShowNotifyMessage(BRAC_GetUserName(dwUserId) +" enter room!", NOTIFY_TYPE_NORMAL);
}
else {
ShowNotifyMessage(BRAC_GetUserName(dwUserId) +" leave room!", NOTIFY_TYPE_NORMAL);
//当用户离开房间,关闭跟该用户的视频、音频连接
BRAC_UserCameraControl(dwUserId, 0);
BRAC_UserSpeakControl(dwUserId, 0); if (dwUserId == mTargetUserId) {
mTargetUserId = -1;
BRAC_SetVideoPos(0, GetID("AnyChatRemoteVideoDiv"), "ANYCHAT_VIDEO_REMOTE");
}
}
DisplayScroll("room_div_userlist");
} |
|