设为首页收藏本站

AnyChat技术支持论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz

Demo的问题咨询

查看数: 8405 | 评论数: 15 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2014-1-9 10:43

正文摘要:

本帖最后由 aiyuaichou 于 2014-1-9 11:11 编辑 分别把Web的demo和android的demo嵌入到自己开发的软件中一个嵌入WEB主站系统,另一个嵌入android客户端系统,现发生以下问题 1、通过WEB网页,点击对方用户列表, ...

回复

admin 发表于 2014-1-10 14:26:54
您好,很可能您的修改破坏了标准的工作流程:http://www.anychat.cn/faq/index. ... =193&artlang=zh,建议您对比一下正常、不正常的log,看是否能发现一些疑点。
aiyuaichou 发表于 2014-1-10 14:23:32
admin 发表于 2014-1-10 11:29
您好,您在将demo程序溶入自己的代码中时,对哪些代码有删减?

基本无任何删减,只是通过一个按钮点击,进入到demo的登陆页面,但我把登陆页面的所有页面展示部分都删除了,就一空白页面,通过参数传递方式把用户名传递过去作为demo的登陆名,其他地方有删除的,就是屏蔽了登陆后第二页的功能列表展示部分,相当通过登录后,就直接进room了
admin 发表于 2014-1-10 11:29:11
您好,您在将demo程序溶入自己的代码中时,对哪些代码有删减?
aiyuaichou 发表于 2014-1-10 11:21:26
aiyuaichou 发表于 2014-1-10 11:16
感谢管理员给我的解决方案,确实有效,并且比我的方法安全
麻烦管理员帮看看我第二个问题,能否帮解决或 ...

而且还有个问题是,当把android端demo溶入项目其他代码中后,发生的问题还有:首次登陆anychat进去很通畅,但退出后,再次登录就会很慢,基本就停在登陆页面,很少能登陆进去了。。。
aiyuaichou 发表于 2014-1-10 11:16:00
admin 发表于 2014-1-9 16:09
修改anychatevent.js的两处就可以实现楼主的要求:
1、收到在线用户信息时请求一次:2、新用户进入房间时 ...

感谢管理员给我的解决方案,确实有效,并且比我的方法安全
麻烦管理员帮看看我第二个问题,能否帮解决或分析下。。。“关于把Android端Demo示例溶入其他代码中发生的平板之间视频,只能显示单方视频的原因,如果WEB端跟平板连是没有这个问题的
admin 发表于 2014-1-9 16:09:09
修改anychatevent.js的两处就可以实现楼主的要求:
1、收到在线用户信息时请求一次:
  1. // 收到当前房间的在线用户信息,进入房间后触发一次,dwUserCount表示在线用户数(包含自己),dwRoomId表示房间ID
  2. function OnAnyChatRoomOnlineUser(dwUserCount, dwRoomId) {
  3.         AddLog("OnAnyChatRoomOnlineUser(count=" + dwUserCount + ", roomid=" + dwRoomId + ")", LOG_TYPE_EVENT);
  4.         var useridlist = BRAC_GetOnlineUser();
  5.         for (var i = 0; i < useridlist.length; i++) {
  6.                 RoomUserListControl(useridlist[i], true);
  7.     }
  8.         // 请求其中一个用户的音视频
  9.         for (var k=0; k<useridlist.length; k++) {
  10.                 if(useridlist[k] == mSelfUserId)
  11.                         continue;
  12.                 RequestOtherUserVideo(useridlist[k]);
  13.                 break;
  14.         }
  15. }

复制代码
2、新用户进入房间时请求一次,如:

  1. // 用户进入(离开)房间,dwUserId表示用户ID号,bEnterRoom表示该用户是进入(1)或离开(0)房间
  2. function OnAnyChatUserAtRoom(dwUserId, bEnterRoom) {
  3.         AddLog("OnAnyChatUserAtRoom(userid=" + dwUserId + ", benter=" + bEnterRoom + ")", LOG_TYPE_EVENT);
  4.         RoomUserListControl(dwUserId, bEnterRoom ? true : false);
  5.     if (bEnterRoom == 1) {
  6.                 ShowNotifyMessage(BRAC_GetUserName(dwUserId) +"&nbspenter room!", NOTIFY_TYPE_NORMAL);
  7.                 if(mTargetUserId == -1)                                                // 默认打开一个用户的音视频
  8.                         RequestOtherUserVideo(dwUserId);
  9.     }
  10.     else {
  11.                 ShowNotifyMessage(BRAC_GetUserName(dwUserId) +"&nbspleave room!", NOTIFY_TYPE_NORMAL);
  12.         if (dwUserId == mTargetUserId) {
  13.                         mTargetUserId = -1;
  14.                         BRAC_SetVideoPos(0, GetID("AnyChatRemoteVideoDiv"), "ANYCHAT_VIDEO_REMOTE");
  15.                 }
  16.     }
  17.     DisplayScroll("room_div_userlist");
  18. }
复制代码
aiyuaichou 发表于 2014-1-9 14:39:52
廖斌 发表于 2014-1-9 14:26
我们sdk提供的视频呼叫接口可以实现一对一的呼叫,请参考帖子http://bbs.anychat.cn/forum.php?mod=viewt ...

我现在是这么解决的,但不知道如果多用户在线并请求该本地视频时是否会发生什么样的后果或者发生内存泄漏的问题

我在用户进入房间并取得与本地用户的网络连接监听回调事件中,加上了本地主动与远程连接视音频
// 本地用户与其它用户的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) +"&nbspenter room!", NOTIFY_TYPE_NORMAL);                                                               
    }
    else {
                ShowNotifyMessage(BRAC_GetUserName(dwUserId) +"&nbspleave 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");
}
廖斌 发表于 2014-1-9 14:26:22
aiyuaichou 发表于 2014-1-9 14:08
或者我可以得到某用户请求视频连接的通知,我也可以在页面做个提示,就跟QQ一样哦。否则对方跟WEB连接视频 ...

我们sdk提供的视频呼叫接口可以实现一对一的呼叫,请参考帖子http://bbs.anychat.cn/forum.php? ... &extra=page%3D1
廖斌 发表于 2014-1-9 14:24:29
aiyuaichou 发表于 2014-1-9 14:05
管理员,这种方式是不行的,不但问题无法解决,还造成程序中断
其实我想了解的是:  有没有提供像当某用 ...

您好,可能你调用的方法不对。只要获取到了对方的userid,并且对方已经打开了音视频,请求对方的音视频数据然后给定一个div显示就行了,demo中双击列表就是做的这个操作。

Archiver|手机版|AnyChat ( 粤ICP备13022410号-1 )  

GMT+8, 2024-9-29 23:26 , Processed in 0.132313 second(s), 26 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表