2011年Google将WebRTC项目开源,让许多开发者眼前一亮,忍不住的加入了研究WebRTC的队伍中。作为Google开源的技术,WebRTC并不是一个可以拿来就用,并且性能很好的产品。本文主要来谈一谈WebRTC的优缺点。
一、发展及现状
WebRTC在被Google开源之前,其价值就已经得到了充分的认可。比如QQ就使用了WebRTC的部分技术。WebRTC的发展情况可以从标准规范和浏览器支持这两个方面看。WebRTC标准是由W3C和IETF所联合制定的,在2016年1月28日,W3C公布了最新的WebRTC标准,标准中定义了WebIDL中一系列的ECMA Script API来允许使用合适的RTP的浏览器或设备来接收/发送媒体,详细内容可以访问https://www.w3.org/TR/webrtc/。关于浏览器的实现现状,目前市面上主流浏览器中支持WebRTC的有Chrome、Firefox和Opera,但是IE及Safar还未支持。
二、优点
1.方便。对于用户来说,在WebRTC出现之前想要进行实时通信就需要安装插件和客户端,这是一个复杂的过程。现在,WebRTC技术内置于浏览器中,用户不需要使用任何插件或者软件就能通过浏览器来实现实时通信。对于开发者来说,在Google将WebRTC开源之前,浏览器之间实现通信的技术是掌握在大企业手中,这项技术的开发是一个很困难的任务,现在开发者使用简单的HTML标签和JavaScriptAPI就能够实现Web音/视频通信的功能。
2.免费。虽然WebRTC技术已经较为成熟,其集成了最佳的音/视频引擎,十分先进的codec,但是Google对于这些技术不收取任何费用。
3.强大的打洞能力。WebRTC技术包含了使用STUN、ICE、TURN、RTP-over-TCP的关键NAT和防火墙穿透技术,并支持代理。
三、缺点
1.编译WebRTC的源码就是一个比较大的挑战,搭建其复杂的编译环境往往会遇到很多意想不到的问题,导致当初计划用几个星期的时间来搞定项目,却发现这几个星期连编译都没搞定。
2.WebRTC中很多的参数都是由GIPS公司的工程师们依靠经验所设定的值,这就会出现卡顿、延时、回声、丢包、多人视频不稳定等问题。
3.WebRTC缺乏服务器方案的设计和部署。
4.传输质量难以保证。WebRTC的传输设计基于P2P,难以保障传输质量,优化手段也有限,只能做一些端到端的优化,难以应对复杂的互联网环境。比如对跨地区、跨运营商、低带宽、高丢包等场景下的传输质量基本是靠天吃饭,而这恰恰是国内互联网应用的典型场景。
5.WebRTC比较适合一对一的单聊,虽然功能上可以扩展实现群聊,但是没有针对群聊,特别是超大群聊进行任何优化。
6.设备端适配,如回声、录音失败等问题层出不穷。这一点在安卓设备上尤为突出。由于安卓设备厂商众多,每个厂商都会在标准的安卓框架上进行定制化,导致很多可用性问题(访问麦克风失败)和质量问题(如回声、啸叫)。
7.对Native开发支持不够。WebRTC顾名思义,主要面向Web应用,虽然也可以用于Native开发,但是由于涉及到的领域知识(音视频采集、处理、编解码、实时传输等)较多,整个框架设计比较复杂,API粒度也比较细,导致连工程项目的编译都不是一件容易的事。
总而言之,WebRTC虽然提供了一套音视频实时通讯的解决方案,但是在实际应用中,由于网络传输、设备适配以及多方通话上都存在很多问题,效果并不理想。