Android IOS WebRTC 音視頻開發總結(二四)-- p2p調用堆棧


本文主要分析webrtc音視頻點對點部分的代碼結構,文章來自博客園RTC.Blacker,轉載請說明出處.

前段時間在查一個偶爾斷線的問題(這種問題最蛋疼,不好重現,只能憑經驗去搞),所以理了下webrtc的P2P代碼結構,總結如下:

先來張圖顯示實際會話過程中的兩種通訊路徑:P2P或轉發,92%的情況下是通過P2P實現.

注意:實際通訊過程中每個客戶端都會不停地發送和接收Stun包,這樣做是為了維護響應的連接和端口.

實際通訊過程中的核心組件為P2PTransportChannel,他代表着本地和遠程計算機的連接通道,

管理着許多本地和遠程計算機上許多不同的連接類型的連接對象,如TCP,udp,

連接對象上包含了本地端口和遠程地址信息,當一個連接失敗時他會無縫地切換到另一個連接上,下圖是P2P數據通道的內部結構圖

下面是代碼結構中堆棧調用過程:

1,接收和發送數據的AsyncUDPSocket創建過程如下:

2,呼叫方根據remotecandidate創建連接並執行Ping過程如下:

3、接收方根據remotecandidate創建連接並執行Ping過程如下:

4、收到Stun響應更改連接狀態調用過程如下:

 

5、連接成功建立開始數據收發調用過程如下:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM