天天看點

流媒體資料代理----Anychat

“使用者流媒體資料代理功能”,使用該功能可以實作指定使用者将其它使用者的流媒體資料(音頻、視訊)做為自己的資料,轉發給請求指定使用者相關資料的使用者。

應用場景:将指定使用者(P)設定為其它使用者(A)資料(音頻、視訊資料)的代理,當第三方使用者(C)向指定使用者(P)請求資料時,第三方使用者(C)将會收到其它使用者(A)的資料(音頻、視訊)。

使用該功能,可以實作某些特殊的應用,如在會議直播的應用中,可以設定多個代理使用者(P),來代理主會場(A)的流媒體資料,當其它使用者(C)向代理使用者請求流媒體資料時,将會擷取到主會場(A)的流媒體資料,這樣便可以将資料進行分流,避免主會場(A)使用者由于有太多的使用者請求而導緻網絡擁塞。

當會議規模比較大時,比較理想的部署方案是:部署多個代理使用者,主會場的資料隻發送給代理使用者(隻有代理使用者請求),普通使用者隻請求代理使用者的資料,這樣便實作了多級資料傳遞功能,節約了主會場所在網絡的帶寬壓力。

典型的流媒體資料代理功能示例代碼如下:

01.// 代理使用者編号為11的使用者的視訊、語音資料

02.DWORD dwUserId = 11;

03.BRAC_SetSDKOption(BRAC_SO_PROXY_VIDEOCTRL,(const char*)&dwUserId,sizeof(DWORD));

04.BRAC_SetSDKOption(BRAC_SO_PROXY_AUDIOCTRL,(const char*)&dwUserId,sizeof(DWORD));

05.// 啟動代理模式

06.BOOL bStartProxy = TRUE;

07.BRAC_SetSDKOption(BRAC_SO_PROXY_FUNCTIONCTRL,(const char*)&bStartProxy,sizeof(DWORD));

08.// 請求使用者編号為11的使用者的語音、視訊資料

09.BRAC_UserCameraControl(dwUserId,TRUE);

10.BRAC_UserSpeakControl(dwUserId,TRUE);

注:代理使用者(P)必須主動請求被代理使用者(A)的相關資料,其它使用者(C)才能從代理使用者(P)處獲得被代理使用者(A)的相關資料;其它使用者(C)是直接請求代理使用者(P)的資料,而不需要請求被代理使用者(A)的資料。

本文轉自 fanxiaojun 51CTO部落格,原文連結:http://blog.51cto.com/2343338/1026411,如需轉載請自行聯系原作者

繼續閱讀