设为首页收藏本站

AnyChat技术支持论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
打印 上一主题 下一主题

AnyChat视频呼叫业务逻辑详解

[复制链接]

7

主题

332

帖子

1539

积分

金牌会员

Rank: 6Rank: 6

积分
1539
跳转到指定楼层
楼主
发表于 2013-9-6 15:12:16 | 显示全部楼层 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 佰锐技术-卓剑锐 于 2014-10-11 11:31 编辑

新版本AnyChat已经内置视频呼叫(VideoCall)业务逻辑,简化应用层开发工作量,下面详细讲解视频呼叫业务逻辑:
一、视频呼叫业务逻辑概述
视频呼叫业务逻辑主要实现两个终端(PC、手机、Pad等)之间的通话请求流程控制,包括请求(Request)、回复(Reply)、开始(Start)以及结束(Finish)等过程,可以形象理解为打电话的流程:拨号、等待、通话、挂断。

二、视频呼叫业务逻辑流程图


三、视频呼叫业务逻辑API接口
客户端新增回调函数:

  1. // 视频通话消息通知回调函数定义
  2. typedef void (CALLBACK * BRAC_VideoCallEvent_CallBack)(DWORD dwEventType, DWORD dwUserId, DWORD dwErrorCode, DWORD dwFlags, DWORD dwParam, LPCTSTR lpUserStr, LPVOID lpUserValue);
  3. // 设置视频通话消息通知回调函数
  4. BRAC_API DWORD BRAC_SetVideoCallEventCallBack(BRAC_VideoCallEvent_CallBack lpFunction, LPVOID lpUserValue);
复制代码
客户端新增API接口:

  1. // 视频呼叫事件控制(请求、回复、挂断等)
  2. BRAC_API DWORD BRAC_VideoCallControl(DWORD dwEventType, DWORD dwUserId, DWORD dwErrorCode, DWORD dwFlags, DWORD dwParam, LPCTSTR lpUserStr);
复制代码
服务器新增回调函数

  1. // 视频通话消息通知回调函数定义
  2. typedef DWORD (CALLBACK * BRAS_OnVideoCallEvent_CallBack)(DWORD dwEventType, DWORD dwSrcUserId, DWORD dwTarUserId, DWORD dwErrorCode, DWORD dwFlags, DWORD dwParam, LPCTSTR lpUserStr, LPVOID lpUserValue);
  3. // 设置视频通话消息通知回调函数
  4. BRAS_API DWORD BRAS_SetOnVideoCallEventCallBack(BRAS_OnVideoCallEvent_CallBack lpFunction, LPVOID lpUserValue=NULL);
复制代码
服务器新增API接口:

  1. // 视频呼叫事件控制(请求、回复、挂断等)
  2. BRAS_API DWORD BRAS_VideoCallControl(DWORD dwEventType, DWORD dwUserId, DWORD dwErrorCode, DWORD dwFlags, DWORD dwParam, LPCTSTR lpUserStr);

复制代码
常量定义

  1. // 视频呼叫事件类型定义(API:BRAC_VideoCallControl 传入参数、VideoCallEvent回调参数)
  2. #define BRAC_VIDEOCALL_EVENT_REQUEST              1        ///< 呼叫请求
  3. #define BRAC_VIDEOCALL_EVENT_REPLY                2        ///< 呼叫请求回复
  4. #define BRAC_VIDEOCALL_EVENT_START                3        ///< 视频呼叫会话开始事件
  5. #define BRAC_VIDEOCALL_EVENT_FINISH               4        ///< 挂断(结束)呼叫会话

  6. // 视频呼叫标志定义(API:BRAC_VideoCallControl 传入参数)
  7. #define BRAC_VIDEOCALL_FLAGS_AUDIO             0x01        ///< 语音通话
  8. #define BRAC_VIDEOCALL_FLAGS_VIDEO             0x02        ///< 视频通话
  9. #define BRAC_VIDEOCALL_FLAGS_FBSRCAUDIO        0x10        ///< 禁止源(呼叫端)音频
  10. #define BRAC_VIDEOCALL_FLAGS_FBSRCVIDEO        0x20        ///< 禁止源(呼叫端)视频
  11. #define BRAC_VIDEOCALL_FLAGS_FBTARAUDIO        0x40        ///< 禁止目标(被呼叫端)音频
  12. #define BRAC_VIDEOCALL_FLAGS_FBTARVIDEO        0x80        ///< 禁止目标(被呼叫端)视频

  13. // 视频呼叫
  14. #define AC_ERROR_VIDEOCALL_CANCEL             100101       ///< 源用户主动放弃会话
  15. #define AC_ERROR_VIDEOCALL_OFFLINE            100102       ///< 目标用户不在线
  16. #define AC_ERROR_VIDEOCALL_BUSY               100103       ///< 目标用户忙
  17. #define AC_ERROR_VIDEOCALL_REJECT             100104       ///< 目标用户拒绝会话
  18. #define AC_ERROR_VIDEOCALL_TIMEOUT            100105       ///< 会话请求超时
  19. #define AC_ERROR_VIDEOCALL_DISCONNECT         100106       ///< 网络断线
复制代码
四、其它
1、客户端API(BRAC_VideoCallControl)和回调函数(BRAC_VideoCallEvent_CallBack)中的dwUserId均为对方的用户ID;2、被呼叫方拒绝通话时,发送回复(Reply)指令,dwErrorCode=100104;
3、被呼叫方同意通话时,发送回复(Reply)指令,dwErrorCode=0,然后服务器会向双方发送通话开始(Start)指令,dwParam=RoomId,房间号由核心服务器自动分配;
4、结束通话时,任何一方(包括业务服务器)均可以发送结束(Finish)指令,然后服务器会向双方发送通话结束(Finish)指令;
5、业务服务器可干预呼叫流程:在BRAS_OnVideoCallEvent_CallBack收到呼叫请求指令后,返回0表示允许呼叫,否则为出错代码,不允许呼叫;在会话过程中可以发送结束(Finish)指令,强制挂断指定用户的通话;
6、API接口中的dwParam(整型)、lpUserStr(字符串)均为用户自定义用途;
7、一个用户同时只能发起一路呼叫请求,也同时只能被一个用户呼叫;
8、视频呼叫业务流程可以脱离业务服务器,由核心服务器独立支撑,可以不需要在服务器端进行二次开发。







分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1
回复

使用道具 举报

沙发
 楼主| 发表于 2014-8-8 13:43:24 | 显示全部楼层
hbcs2000 发表于 2014-8-8 13:39
在视频呼叫之前必须先调用
// 连接服务器
+ (int) Connect: (NSString*) lpServerAddr : (int) dwPort;

程序初始化之后就调用连接、登录接口了。
回复 支持 反对

使用道具 举报

板凳
 楼主| 发表于 2015-4-27 18:06:45 | 显示全部楼层
一瓶爱因斯坦 发表于 2015-4-27 16:00
您好, 我今天在测试自带的demo AnyChatFeature时候 在服务器端的代码中修改如下:
/**
     * 视频呼叫 ...

您好,如果客户端之前P2P建立成功时,流媒体数据是两端之间传输的。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-5-7 02:31 , Processed in 0.118693 second(s), 24 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

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