標籤:
最近在做一個移動端與移動端、網頁端文字、視頻、語音交談的功能。文字交談使用websocket,在網上很多資料,也沒什麼難度。但是在視頻、語音交談上遇到了小小的痛點。之前一直在找一些SDK想快速開發,例如opentok、雲通訊等,但是項目的使用環境是內網,這些SDK必須要在外網情況下才能使用,需要在他們的伺服器上擷取信令。後來就想辦法自己用webrtc做一個視頻語音交談,因為已經用了websocket了。在webrtc的官網,看源碼安卓有3G多,編譯後差不多9G,直接嚇尿了。就算寫了外掛程式給cordova,這個APP也會很大。然後就想直接通過web來實現整個過程,下面記錄下問題解決的過程。
1.閱讀GoogleWebRTC官方英文文檔,瞭解WebRT總體架構以及工作流程。閱讀部分官方託管在githu的源碼,確定前端與後台實現方案。
2.編寫視頻、語音交談後台,使用Nodejs作為服務端,完成了頻道登入、信令交換、通道建立等功能的代碼編寫。並完成了用戶端登入請求、信令發送、信令儲存、通道建立、網路攝影機及麥克風調用代碼的編寫。通過web端測試通過,但安卓4.0-4.4全部無法使用。
3.通過VPN訪問被封的google瀏覽器開發人員網站,查詢chrome的WebRTC開發文檔,發現只有26版本的WebView才支援WebRTC。通過安卓5.0成功在系統內建瀏覽器中調用了網路攝影機與麥克風,並與Web端進行了通訊。但在Cordova項目中無法彈出授權視窗,導致視頻顯示一片漆黑。
4.通過寫入安卓許可權,成功在5.0的系統中通過Cordova調用系統WebRTC核心實現視頻語音交談。但對系統版本要求較高,相容性差,但是5.0系統剛出幾個月,普及面小且佔用記憶體更大,因此繼續尋找更好的方案。
5.在外國網站上查閱了大量資料,最後開始嘗試提取安卓5.0的WebView核心,並成功移植到項目中,使得cordova項目脫離安卓系統本身的WebView,直接使用移植來的WebView,成功在安卓4.0-5.0所有平台上成功完成視頻、語音交談,並測試通過。至此,移動端與web端的視頻、語音交談功能Demo完成。
cordova使用webrtc與網頁端及移動端視頻、語音交談