1. 程式人生 > >WebRTC原生開發和混合開發優缺點分析對比

WebRTC原生開發和混合開發優缺點分析對比

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之外的其它視訊編碼,哪隻能
   採用原生開發了。