cordova使用webrtc與網頁端及移動端視頻、語音聊天


最近在做一個移動端與移動端、網頁端文字、視頻、語音聊天的功能。文字聊天使用websocket,在網上很多資料,也沒什么難度。但是在視頻、語音聊天上遇到了小小的難點。之前一直在找一些SDK想快速開發,例如opentok、雲通訊等,但是項目的使用環境是內網,這些SDK必須要在外網情況下才能使用,需要在他們的服務器上獲取信令。后來就想辦法自己用webrtc做一個視頻語音聊天,因為已經用了websocket了。在webrtc的官網,看源碼安卓有3G多,編譯后差不多9G,直接嚇尿了。就算寫了插件給cordova,這個APP也會很大。然后就想直接通過web來實現整個過程,下面記錄下問題解決的過程。

 

1.閱讀谷歌WebRTC官方英文文檔,了解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完成。

 

此博客不再維護,已經轉CSDN。最后內核問題,很多人問,這個都是的幾年前寫的了,現在應該不存在了,如果還需要在4版本上做,可以使用crosswork插件,直接替換cordova安卓內核即可,比我當年方便多了。


免責聲明!

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



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