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,再不懂就發個郵件給我(左邊有聯絡方式),我們們一起交流,不過問之前請先將問題描述清楚,節省大家時間也便於交流。
如果想簡單測試效果,可以試試我自己搞的東東:
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
二、WEBRTC程式碼如何獲取和編譯。
1、下載編譯:做這個動作前您最好先確認您是否需要做這個動作,如果僅僅做基於瀏覽器的開發您可以略過這個步驟,因為您要的東西瀏覽器都幫您做好了。
2、環境準備:對剛入門的人來說編譯WEBRTC很頭疼,特別是對沒接觸過linux的人來說,雖然網上有很多資料,但是實際編譯過程中總會出現這樣或那樣的錯誤,很多錯誤都不知所措。其實編譯不過的主要原因就是有些檔案下載不下來(因為國家防火牆限制),所以這裡給出一個編譯WebRTC的最簡單的解決方案:
A、買一個付費的VPN賬號。
B、參考:http://www.webrtc.org/reference/getting-started,很詳細,看仔細。
這個方案屢試不爽,我已經成功編譯過好幾次了,如果還有問題可以聯絡我(對andorid開發者來說最好使用ubuntu
64位環境,不要在windows下面搞。)
C、最近這個程式碼越來越難下了,所以我也不會去輕易更新,或者我就直接去香港下載,強吧!
三、執行WebRTCDemo。
A、安裝WebRTC/Trunk/out/WebRTCDemo-debug.apk,他支援點對點視訊,在其SETTINGS頁籤中設定好對方IP,點選MAIN頁籤中的StartCall即可與對方開始視訊通話。
四、AppRTCDemo如何使用?
WebRTCDemo可以直接做成P2P的效果,AppRTCDemo則需要另外一個服務端(也可直接連線:https://apprtc.appspot.com/),當然你也可以自己部署這個服務端,他是利用libjingle和XMPP來處理信令互動的,而且基於ICE協議實現P2P,至於什麼是ICE,什麼是STUN,TURN我在後面的文章中都有陸續講到。
AppRTCDemo的最大問題就是很多人不知道服務端怎麼部署,而且他也沒有實現手機對手機的效果,這個應用是很廣泛的,最起碼有智慧家居,安防監控等行業的使用者就請我幫他們做過這方面的技術支援,所以後面我打算將它做成一個通用的產品,供別人學習和使用。目前android和服務端已經完成了,IOS正在抽時間處理。
五、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快好多好多!
相關文章
- Android WebRTC 音視訊開發總結(三)AndroidWeb
- Android WebRTC 音視訊開發總結(五)- 產品演示AndroidWeb
- 音視訊通訊加餐 —— WebRTC一肝到底Web
- iOS下WebRTC音視訊通話(一)iOSWeb
- Android 音視訊開發 視訊編碼,音訊編碼格式Android音訊
- 【音視訊安卓開發 (十一)】Android初級開發(一)安卓Android
- 音視訊開發-全網最全常用音視訊編碼和格式彙總
- WebRTC 音視訊同步原理與實現Web
- 音視訊開發著作《Android音視訊開發》終於發售了,先來一波簽名送書福利!Android
- FFmpeg iOS 音訊開發的小總結iOS音訊
- 前端音視訊WebRTC實時通訊的核心前端Web
- Android 音視訊開發 - 使用AudioTrack播放音訊Android音訊
- WebRTC音訊通話升級為視訊通話Web音訊
- 基於webRTC技術 音訊和視訊,IM解Web音訊
- WebRTC與音訊音量Web音訊
- Android音視訊之MediaPlayer音視訊播放Android
- iOS開發:音訊播放、錄音、視訊播放、拍照、視訊錄製iOS音訊
- webRTC——瀏覽器裡的音視訊通話Web瀏覽器
- 鵝廠優文|打通小程式音視訊和webRTCWeb
- 《音視訊開發進階指南》讀書筆記(一) —— 音視訊基礎概念筆記
- 基於Linphone開發Android音視訊通話Android
- Android音視訊之MediaRecorder音視訊錄製Android
- [Android多媒體技術] 播放Raw/Assets音視訊方法總結Android
- 【秒懂音視訊開發】08_音訊錄製音訊
- Android 音視訊 - MediaCodec 編解碼音視訊Android
- iOS開發系列--音訊播放、錄音、視訊播放、拍照、視訊錄製(轉)iOS音訊
- android音視訊指南-管理音訊焦點Android音訊
- 音訊處理開源庫webrtc(1)簡介音訊Web
- 【秒懂音視訊開發】13_音訊重取樣音訊
- Android音訊開發之MediaRecorder/MediaPlayerAndroid音訊
- iOS語音提醒開發總結iOS
- 【VB.NET視訊總結(一)】
- 如何用 Electron + WebRTC 開發一個跨平臺的視訊會議應用Web
- More-iOS開發中的音訊相關內容總結iOS音訊
- WebRTC – Agora (聲網)簡介與實現音視訊通話WebGo
- WebRTC學習總結Web
- WebRTC:一個視訊聊天的簡單例子Web單例
- 大廠h5開源視訊系列-網易雲音樂年度總結H5