音視訊開發的P2P技術
首要壓縮包能夠從這兒取得:http://anychat.oss.aliyuncs.com/AnyChatCoreSDK_Win32_V5.1.zip
也可進去網站下載其他版別(www.anychat.cn)
下載後,首要將其解壓到一個臨時資料夾中,然後開端後續作業。
編譯後取得的是.lib檔案。
AnyChat SDK向上層運用敞開了核心的P2P連線戰略,能夠讓運用程式來干涉核心的P2P連線,以滿意各種場合下的運用需求。
設定P2P連線戰略的典型程式碼如下:
1.DWORD dwP2PPolitic = 3;
2.BRAC_SetSDKOption(BRAC_SO_NETWORK_P2PPOLITIC,(constchar*)&dwP2PPolitic,sizeof(DWORD));
當時敞開的P2P連線戰略包含如下值:
0 制止P2P連線,不自動與其它使用者樹立P2P連線,也不接受其它使用者主張的P2P連線懇求;
1 伺服器操控P2P[默許],自動與當時房間內的一切使用者樹立P2P;
2 上層運用操控P2P連線,不自動與其它使用者樹立P2P連線,但可接受其它使用者主張的P2P連線懇求,但運用程式能夠下達與指定使用者樹立P2P連線的指令,收到上層運用的指令後,再測驗與該使用者樹立P2P連線;
3 按需樹立P2P連線,在需求樹立P2P連線時(如懇求對方的音訊、視訊資料),便自動測驗與該使用者樹立P2P連線,也自動接受其它使用者的P2P連線懇求;
P2P連線樹立成功,或是斷時,會經過P2P狀況改變音訊告訴上層運用。
由於每個客戶端的P2P連線資本是有限的(每個客戶端最多可與30個使用者樹立P2P連線),所以不一樣的運用環境,需求設定不一樣的P2P連線戰略。
咱們主張一個運用平臺上,均選用一樣的P2P連線戰略,不然也許出現特別狀況,例如:A使用者選用“上層運用操控P2P連線”戰略,B使用者選用“伺服器操控P2P”戰略,兩個使用者進入房間後,雖然上層運用沒有向A使用者下達與B使用者樹立P2P連線的懇求,但實際上A、B兩使用者之間仍然會樹立P2P連線,由於B使用者會自動與A使用者樹立連線。
AnyChat SDK默許是“伺服器操控P2P”戰略,使用者進入房間後,將自動與房間內的一切使用者樹立P2P,該形式適用於同一個房間不超過50個使用者(考慮到與部分客戶端的P2P連線也許樹立不成功)的運用,假如同一個房間的使用者數較多,主張上層運用運用“上層運用操控P2P連線”或是“按需樹立P2P連線”形式,使得客戶端能夠與需求的使用者樹立P2P,而不至於出現P2P連線資本被無關的使用者佔用的狀況。
P2P連線戰略能夠初始化成功以後動態調整,但只要“制止P2P連線”形式被設定後,會斷開與其它使用者的P2P連線,設定其它的形式,均不會斷開現有P2P連線。當客戶端設定為“制止P2P連線”戰略後,一切的音訊、視訊資料(包含自個傳給其它使用者,其它使用者傳給自個)都將經過伺服器中轉,可適用於某些特別的運用場合。
在一切P2P連線戰略中,最優的戰略是“按需樹立P2P連線”,但沒有將其作為SDK的默許P2P連線戰略,主要是該戰略是新增,而為了相容老版別的SDK,便將“伺服器操控P2P”戰略設定為默許連線戰略。
當設定為“上層運用操控P2P連線”以後,便能夠經過SDK供給的介面自動與指定的使用者樹立P2P連線,典型程式碼如下:
1.DWORD dwTargetUserId =100;
2.BRAC_SetSDKOption(BRAC_SO_NETWORK_P2PCONNECT,(constchar*)&dwTargetUserId,sizeof(DWORD));
注:上述一切“樹立P2P連線”並不代表P2P連線一定能樹立成功,這與實際的網路狀況有關,僅僅表明“測驗與對方樹立P2P連線”。
更多技術性問答可進入http://bbs.anychat.cn