Android WebRTC 音視頻開發總結(一)


 

本系列文章主要總結和分享WebRTC開發過程中的一些經驗,轉載請說明出處(博客園RTC.Blacker),更多交流與合作請看頁面上方的子標題!

 

一、WebRTC是什么?

    可能您還不知道WebRTC是什么,但您一定用過他里面的東西,因為QQ就用到了他的核心技術,不過那時候這些東西還不叫WebRTC,他也還掌握在GIPS手里(他們家的語音技術可謂獨步天下),而且當年小馬哥也給人家交了不少USD,扯遠了。

 

    WebRTC是Google於2011年6月3日開源的即時通訊項目,旨在使其成為客戶端視頻通話的標准。其實在Google將WebRTC開源之前,微軟和蘋果各自的通訊產品已占用很大市場份額(如Skype),Google也是為了快速擴大市場,所以將他給開源。經常接觸開源的人應該很容易理解Google這種策略,只不過在國內大家都喜歡弄成SDK,然后按年按月按用戶數給你收費,總讓你覺得不爽,呵呵。

 

    剛接觸WebRTC的時候你會被里面的一堆概念搞暈,特別是對沒接觸過音視頻的人來說,如WebRTC, ICE, STUN, TURN, P2P, NAT, Jingle, TALK, VOIP, FFMPEG, H264, VP8, NACK, RTP, RTCP, RTSP, RTMP, SIP, XMPP, ISAC, ILBC, OPUS, G711, G722.   暈了吧,凡事都要有個過程的,一步步來吧!不懂了就問問度娘或GOOGLE,再不懂就發個郵件給我(左邊有聯系方式:RTC.Blacker@gmail.com),咱們一起交流,不過問之前請先將問題描述清楚,節省大家時間也便於交流。

 

   如果想簡單測試效果,可以試試我自己搞的東東:

   1.  http://www.cnblogs.com/lingyunhu/p/rtc23.html

   2.  http://www.cnblogs.com/lingyunhu/p/3722029.html

 

   如果想快速了解開發過程,可以看看我整理和翻譯的東東:

   1.  http://www.cnblogs.com/lingyunhu/p/4129425.html

   2.  http://www.cnblogs.com/lingyunhu/p/4058182.html

 

   更多相關原創文章詳見:http://www.cnblogs.com/lingyunhu/tag/webrtc%20android%20ios/

 

二、WEBRTC代碼如何獲取和編譯。

1、下載編譯:做這個動作前您最好先確認您是否需要做這個動作,如果僅僅做基於瀏覽器的開發您可以略過這個步驟,因為您要的東西瀏覽器都幫您做好了。

2、環境准備:對剛入門的人來說編譯WEBRTC很頭疼,特別是對沒接觸過linux的人來說,雖然網上有很多資料,但是實際編譯過程中總會出現這樣或那樣的錯誤,很多錯誤都不知所措。其實編譯不過的主要原因就是有些文件下載不下來(因為國家防火牆限制),所以這里給出一個編譯WebRTC的最簡單的解決方案:

2.1、買一個付費的VPN賬號,其實買VPS是最好的,不過成本比較高。

2.2、參考:http://www.webrtc.org/reference/getting-started,很詳細,看仔細。

這個方案屢試不爽,我已經成功編譯過好幾次了,如果還有問題可以聯系我(andorid開發者來說最好使用ubuntu 64位環境,不要在windows下面搞。

2.3、最近這個代碼越來越難下了,所以我也不會去輕易更新,或者我就直接去香港下載,強吧!

2.4、網上很多這方面的資料,建議您參考喔上面的做法,不然后面會走很多彎路,因為有些資料都過時了,作者也沒有去更新。

 

三、運行WebRTCDemo

1、安裝WebRTC/Trunk/out/WebRTCDemo-debug.apk,他支持點對點視頻,在其SETTINGS頁簽中設置好對方IP,點擊MAIN頁簽中的StartCall即可與對方開始視頻通話,以前這個demo是有視頻功能,現在只有音頻功能,因為google將一些api拿掉了,為了標准化嘛,所以以后下載代碼時找不到這個demo也不要驚訝,其實ios上根本就沒有這個demo

 

 

四、AppRTCDemo如何使用?

    WebRTCDemo可以直接做成P2P的效果,AppRTCDemo則需要另外一個服務端(也可直接連接:https://apprtc.appspot.com/,當然你也可以自己部署這個服務端,他是利用libjingle和XMPP來處理信令交互的,而且基於ICE協議實現P2P,至於什么是ICE,什么是STUN,TURN我在后面的文章中都有陸續講到。

 

    AppRTCDemo的最大問題就是google為了推廣自己的東東,將他搞得很復雜,服務端部署起來也很復雜,所以我后來直接做了一個移植,信令服務全部自己實現,現在已經實現了安卓,ios,pc之間視頻通話的效果,而且也陸陸續續也做了不少手機適配方面的優化,很適合用在社交,智能家居,安防監控,在線教育等行業,接下來要做的工作也就是不斷加入新功能,更新,優化。

 

五、WebRTC的工程文件在不同項目如何管理?

    因為WebRTC是跨平台的,支持mac,windows,linux,但不同平台下用的工程文件格式不一樣,如VisualStudio下是.vcproj,是每個開發平台下手動創建自己的工程文件嗎?答案是否定的,他是通過.gyp文件來管理的,說白了.gyp文件相當於是他的工程描述文件,類似JSON格式,不同平台下編譯的時候根據.gyp文件產生對應格式的工程文件,如.vcproj。

 

    說到這里就得談談它的編譯方式ninja,搞chrome的那些程序員估計是受不了make的編譯速度,所以開發了ninja。所以如果運行gclient runhooks的時候會生成很多*.ninja文件(這些文件在out目錄下),ninja就是根據這些文件進行編譯的,這些文件語法都比較簡單,基本上都是rule和build,這樣就產生了ninja的優勢----快速編譯,他很多條件都是預先決定的,比make快好多好多!

 


免責聲明!

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



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