天天看點

視訊對講業務邏輯詳解(視訊開發技術)

新版本AnyChat已經内置視訊呼叫(VideoCall)業務邏輯,簡化應用層開發工作量,下面詳細講解視訊呼叫業務邏輯:

一、視訊呼叫業務邏輯概述

視訊呼叫業務邏輯主要實作兩個終端(PC、手機、Pad等)之間的通話請求流程控制,包括請求(Request)、回複(Reply)、開始(Start)以及結束(Finish)等過程,可以形象了解為打電話的流程:撥号、等待、通話、挂斷。

二、視訊呼叫業務邏輯流程圖

三、視訊呼叫業務邏輯API接口

用戶端新增回調函數:

// 視訊通話消息通知回調函數定義

typedef void (CALLBACK * BRAC_VideoCallEvent_CallBack)(DWORD dwEventType, DWORD dwUserId, DWORD dwErrorCode, DWORD dwFlags, DWORD dwParam, LPCTSTR lpUserStr, LPVOID lpUserValue);

// 設定視訊通話消息通知回調函數

BRAC_API DWORD BRAC_SetVideoCallEventCallBack(BRAC_VideoCallEvent_CallBack lpFunction, LPVOID lpUserValue);

複制代碼

用戶端新增API接口:

// 視訊呼叫事件控制(請求、回複、挂斷等)

BRAC_API DWORD BRAC_VideoCallControl(DWORD dwEventType, DWORD dwUserId, DWORD dwErrorCode, DWORD dwFlags, DWORD dwParam, LPCTSTR lpUserStr);

伺服器新增回調函數

typedef DWORD (CALLBACK * BRAS_OnVideoCallEvent_CallBack)(DWORD dwEventType, DWORD dwSrcUserId, DWORD dwTarUserId, DWORD dwErrorCode, DWORD dwFlags, DWORD dwParam, LPCTSTR lpUserStr, LPVOID lpUserValue);

BRAS_API DWORD BRAS_SetOnVideoCallEventCallBack(BRAS_OnVideoCallEvent_CallBack lpFunction, LPVOID lpUserValue=NULL);

伺服器新增API接口:

BRAS_API DWORD BRAS_VideoCallControl(DWORD dwEventType, DWORD dwUserId, DWORD dwErrorCode, DWORD dwFlags, DWORD dwParam, LPCTSTR lpUserStr);

常量定義

// 視訊呼叫事件類型定義(API:BRAC_VideoCallControl 傳入參數、VideoCallEvent回調參數)

#define BRAC_VIDEOCALL_EVENT_REQUEST              1        ///< 呼叫請求

#define BRAC_VIDEOCALL_EVENT_REPLY                2        ///< 呼叫請求回複

#define BRAC_VIDEOCALL_EVENT_START                3        ///< 視訊呼叫會話開始事件

#define BRAC_VIDEOCALL_EVENT_FINISH               4        ///< 挂斷(結束)呼叫會話

// 視訊呼叫标志定義(API:BRAC_VideoCallControl 傳入參數)

#define BRAC_VIDEOCALL_FLAGS_AUDIO             0x01        ///< 語音通話

#define BRAC_VIDEOCALL_FLAGS_VIDEO             0x02        ///< 視訊通話

#define BRAC_VIDEOCALL_FLAGS_FBSRCAUDIO        0x10        ///< 禁止源(呼叫端)音頻

#define BRAC_VIDEOCALL_FLAGS_FBSRCVIDEO        0x20        ///< 禁止源(呼叫端)視訊

#define BRAC_VIDEOCALL_FLAGS_FBTARAUDIO        0x40        ///< 禁止目标(被呼叫端)音頻

#define BRAC_VIDEOCALL_FLAGS_FBTARVIDEO        0x80        ///< 禁止目标(被呼叫端)視訊

// 視訊呼叫

#define AC_ERROR_VIDEOCALL_CANCEL             100101       ///< 源使用者主動放棄會話

#define AC_ERROR_VIDEOCALL_OFFLINE            100102       ///< 目标使用者不線上

#define AC_ERROR_VIDEOCALL_BUSY               100103       ///< 目标使用者忙

#define AC_ERROR_VIDEOCALL_REJECT             100104       ///< 目标使用者拒絕會話

#define AC_ERROR_VIDEOCALL_TIMEOUT            100105       ///< 會話請求逾時

#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、視訊呼叫業務流程可以脫離業務伺服器,由核心伺服器獨立支撐,可以不需要在伺服器端進行二次開發。

繼續閱讀