P2P傳輸的開源庫:Libjingle庫 綜述

來源:互聯網
上載者:User
國內現在很多語音交談工具都是基於TURN方式實現的,包括YY、AK等等,這種方式對於伺服器的效能要求很高,而且在使用者量增大的時候,伺服器壓力也會越來越大,使用者的語音品質也會受到很大影響。而基於P2P方式實現的語聊伺服器,就可以極大的避免這種情況的發生,而且使用者的語音體驗也會非常好。
   通過上文( P2P的原理和常見的實現方式(為libjingle開路))我們知道,因為NAT裝置沒有固定標準的原因,導致並不能100%的實現P2P,但是根據現在通用的ICE&STUN的方式,P2P的成功率可以達到90%多。前段時間在找使用這種方法實現的成熟庫,最後猛然發現libjingle就在那裡。
   通過一個多星期的研究,在此記錄一下libjingle庫的大致情況,如有不妥,希望朋友們可以留言或者郵件(peakflys@gmail.com)指正。
Libjingle綜述   
   Libjingle是一個方便實現P2P傳輸的開源庫,由google公司開發,並與2005年12月15日發布第一個版本,可以粗略的看成是Jingle協議的C++實現庫(peakflys註:只是和Jingle協議非常相似,並不完全相容,區別以後介紹),Google Talk即是基於這個庫開發的。通過libjingle我們可以建立一個直通的網路連接(無視中間的NAT、防火牆、轉送伺服器和代理等),無需特別關心Session建立的細節(加解密、格式等),直接進行資料的交換。它也實現了一些輔助的功能,例如XML的解析和網路代理程式的處理。我們通過它可以實現如下的應用:

·一個多使用者的語音交談應用

·一個多使用者的視頻會議應用

·一個多使用者的現場音樂、流媒體應用

·一個點到點的檔案傳輸和共用的應用

目前庫的版本是0.7.1(2012年10月2日發布),支援Windows和UNIX/Linux,開源許可用的是Berkeley-style,這也就意味著,可以任意的修改和擴充它來更好的滿足自己產品的需要。

庫的SVN路徑:http://libjingle.googlecode.com/svn/trunk/talk

       值得注意的是:

①    Libjingle庫本身的實現依賴於一些第三方庫,例如: 語音交談依賴於Linphone或者GIPS,這取決於使用者的平台

②    Libjingle只是一個用戶端的實現, relay Server協議和STUN協議(如果需要),還需要自己實現 實現relay Server後的網路結構(STUN使用 網路上現有的,例如Google等公司提供的公有STUN伺服器):

實現relay Server和STUN Server後的網路結構:


STUN協議的實現不難,網上也有很多開源的代碼實現,關鍵是需要一些資源的部署(需要兩個公網IP)

  P2P的關鍵實現在用戶端,通過使用libjingle我們可以快速的構造一個健壯高效的P2P Client,如果僅僅是實作類別似於Skype或者QQ那樣的兩人或者幾人聊天,伺服器方面實現就非常容易。但是如果要實現大使用者參與的語音室,那麼我們就得專註於伺服器廣播包的最佳化了。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.