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

新版本AnyChat已經內置視頻呼叫(VideoCall)業務邏輯,簡化應用層開發工作量,下面詳細講解視頻呼叫業務邏輯:
一、視頻呼叫業務邏輯概述
視頻呼叫業務邏輯主要實現兩個終端(PC、手機、Pad等)之間的通話請求流程控制,包括請求(Request)、回覆(Reply)、開始(Start)以及結束(Finish)等過程,可以形象理解爲打電話的流程:撥號、等待、通話、掛斷。

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

151809bb2k2rgr2sbi2rer.jpg



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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章