WebRTC原生开发和混合开发优缺点分析对比
2017-08-07 07:54 rtc8_com 阅读(3510) 评论(1) 编辑 收藏 举报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之外的其它视频编码,哪只能
采用原生开发了。