|
一共有两个页面any.html 和 any_video.html
any.html 含 登录层 和 视频邀请层 any_video.html 只含视频通话层
any.html
<!-- 登录层 -->
<div style="display:none" id="login_div">
用户名:<input type="text" name="username" id="username" value="1" />
<br />
房间号:<input type="text" name="customroomid" id="customroomid" value="1" />
<input type="submit" name="" value="登录" />
</div>
<!-- 被呼叫:视频邀请层 -->
<div id=" BeCalls_Div">
<div class="BeCalls_Div_Content" id="BeCalls_Div_Content"></div>
<button onclick="AcceptRequestBtnClick()">接听</button>
<button onclick="RejectRequestBtnClick()">拒绝</button>
</div>
主要的javascript部分:
//收到视频呼叫请求
function onVideoCallControlRequest(dwUserId, dwErrorCode, dwFlags, dwParam, szUserStr)
{ var Tusername = BRAC_GetUserName(dwUserId); // 用户姓名
$("#BeCalls_Div").show();
$("#BeCalls_Div_Content").html(Tusername + "视频邀请");
mTargetUserId = dwUserId;
}
//同意会话
function AcceptRequestBtnClick()
{ $("#BeCalls_Div").hide();
//点击接听按钮后,弹出子页面any_video.html (即视频通话页面)
window.open("any_video.html?mSelfUserId="+mSelfUserId+"&mTargetUserId="+mTargetUserId,"_blank","height=800,width=800,top=500,left=500,toolbar=no,menubar=no,scrollbars=no,location=no,resizable=no");
}
any_video.html 只含 视频显示层
<!-- 视频显示层 -->
<div id="VideoShowDiv" style="display:block">
<div style="display:block" id="AnyChatRemoteVideoDiv"></div>
<div style="display:block" id="AnyChatLocalVideoDiv"></div>
</div>
主要的javascript部分:
mTargetUserId = parseInt( GetQueryString("mTargetUserId") );
mSelfUserId = parseInt( GetQueryString("mSelfUserId") );
BRAC_VideoCallControl(BRAC_VIDEOCALL_EVENT_REPLY,mTargetUserId,0,0,0,"");
//通话开始
function onVideoCallControlStart(dwUserId, dwErrorCode, dwFlags, dwParam, szUserStr)
{ StartVideo(dwUserId);
}
/* **A呼叫B,B点击接听按钮,
弹出any_video.html后,应该执行BRAC_VideoCallControl(),
即调用anychatsdk.js中的BRAC_VideoCallControl(), 然后执行anychatevent.js中的回调函数OnAnyChatVideoCallEvent(){
onVideoCallControlStart();
}
****但实际上并没有执行anychatevent.js中的回调函数OnAnyChatVideoCallEvent();经分析B点击按钮接听,给A回复同意通话,但是A并有收到回复(因为此时A并没有打开视频),所以服务器没向A、B同时发送(Start)指令,会话无法开始,双方视频都无法打开。
****如果登录层 、 视频邀请层 、视频通话层都在一个页面,一切的通话都是正常的。但是将视频邀请层 、视频通话层分开呈现就会出现以上的问题,是anychat目前不支持分开实现,还是我的问题?如果可以分开实现,那应该怎样实现才能保证any_video.html中的视频通话正常实现。*/
//自定义函数 请求远程视频用户
function StartVideo(userid){
BRAC_UserCameraControl(mSelfUserId, 1); // 打开本地视频
BRAC_UserSpeakControl(mSelfUserId, 1); // 打开本地语音
BRAC_SetVideoPos(mSelfUserId,document.getElementById("AnyChatLocalVideoDiv"), "ANYCHAT_VIDEO_LOCAL");
BRAC_UserCameraControl(userid, 1); //请求对方视频
BRAC_UserSpeakControl(userid, 1); //请求对方语音
}
|
|