標籤:通用 模組 二次開發 開發 windows 目標 音視頻 重複 模組開發
WebRTC的出現,讓企業快速開發出一個支援全平台的音視頻程式成為可能。在WebRTC之前,企業想要開發出一個全平台的音視頻程式,難度,工作量非常大。使用WebRTC後,音視頻程式中一些通用的模組比如音視頻採集,播放模組,rtp,rtcp協議模組,都可以直接複用WebRTC現成的,不用自己再重複造輪子。這些模組開發難度不是很大,但是工作量非常大。使用WebRTC後,企業可以專註於最佳化流程,解決bug,實現業務需求。
目前,開發WebRTC程式有兩種途徑
- 原生開發,自己下載WebRTC代碼,每個平台自己編譯。在WebRTC API基礎上自己再做封裝和二次開發。
- 調用WebRTC javascript介面,WebRTC程式必須運行在支援WebRTC的瀏覽器中,用到的技術有javascript,html,css。windows,android,ios,linux可以共用一套代碼。
在下面的文章中,我們將詳細闡述WebRTC原生開發和混合開發之間的主要區別。
WebRTC 原生開發
WebRTC代碼是用C++開發的,如果採用原生開發,團隊中必須要有人對C++精通。而且如果要想能看懂和修改WebRTC代碼,只是會C++是遠遠不夠的,還要對流媒體技術很熟悉。WebRTC涉及的rfc文檔有20多個,如果沒有理論知識做支撐,WebRTC代碼真的不是哪麼容易可以看懂的。開發windows端,android端,ios端WebRTC程式,需要用到的技術和人員配置大概如下:
- windows端,介面採用Qt或者DirectUI,直接使用C++介面調用WebRTC的功能,人員至少需要一個Windows用戶端開發人員和WebRTC SDK開發人員。
- android端,介面採用android原生介面,使用jni技術調用WebRTC功能,人員配置方面至少需要一個安卓開發人員和WebRTC 安卓SDK開發人員。
- Ios端,介面採用ios原生技術,使用oc調用WebRTC功能,人員配置方面至少需要一個ios開發人員和一個WebRTC SDK開發人員
綜上所述,可以發現如果採用原生技術開發,需要的開發人員還是比較多的,涉及的技術點也多,相應的測試人員的工作量也大,想要把三個端的用戶端全部做好,難度還是挺大的。
目前,WebRTC案頭版本穩定性和相容性做的還比較好。移動版本由於移動版本的chrome使用的人比較少,Google在這方面投入還不夠多,相容性和穩定性還有很多要提高的地方。如果你的應用程式手機型號比較複雜,哪只能使用原生開發了,你可以在WebRTC官方版本之上把相容性和穩定性做的更好。
安卓版本只有在安卓4.4以後的WebView才支援WebRTC功能,Ios版本的的chrome根本不支援WebRTC功能,據說Ios11版本的safari會支援WebRTC,但是在相容性方面和chrome的WebRTC會有些相容性問題。所有你的使用者還有比較老的手機的話,哪你也只能採用原生開發了。
原生開發時,編譯出來的WebRTC開發包大小在3M左右,而採用混合開發的話,App最後打包出來的大小都是在30M以上,所以如果你的應用程度如果對程式安裝包大小有要求的話,也只能採用原生開發。
最後,如果你的應該程式還要加上H265之類的視頻編碼,或者對視頻,音頻輸入源有特殊要求的話,都只能採用原生開發。
WebRTC混合應用開發
採用混合應用工發WebRTC程式,就是用javascript調用WebRTC介面,使用html,css來做顯示介面。目前使用Html5來開發App和傳統型程式也慢慢流行起來,比如React native技術。混合應用開發的好處就是一套代碼可以相容
windows,mac,ipad,ios,android,瀏覽器,一個全棧前端開發人員就可以全部搞定,開發工期比較短,難度也相對低一點。使用混合應用開發的缺點就是不能定製WebRTC底層,你只能使用WebRTC標準功能,如果WebRTC底層有bug,你也沒有辦法修改,還有一個缺點就是安裝包比較大。
採用html5來開發WebRTC還有一個優勢就是你可以在手機QQ,安卓版本中直接跳轉,這意味使用者不用安裝任何程式,直接可以從或者手機QQ轉你你的程式,這對於推廣還是比較有利的。
結論
採用原生開發還是混合開發,沒有決對的好壞之分。這要根據你團隊研發人員的情況和勘探情況靈活對待。
1.如果團隊前端實力比較強,哪你就使用混合開發模式。
2.如果App面向的是的使用者量非常大,手機型號還不好固定,哪只能採用原生開發。
3.如果勘探是企業客戶,對安裝包大小不在意,手機型號也好固定。哪可以採用混合開發。
4.如果要對接監控網路攝影機之類的非標準音視頻裝置,或者要採用VP8,VP9之外的其它視頻編碼,哪只能
採用原生開發了。
WebRTC原生開發和混合開發優缺點分析對比