上周我参加了ClueCon,一个聚焦于FreeSwitch和开源手机社区的展会。我很高兴地看到WebRTC成为了这届展会的主要话题,但是很惊讶地发现人们在将WebRTC实际应用到他们的产品之前会十分的犹豫,到底要不要用WebRTC。我决定在我的发言中着重关注一下我所听到不要使用WebRTC的理由。
下面就是了:
理由1:“因为ORTC马上就要取代WebRTC了,我不想在一个过时的标准上面浪费时间。”
实际上:错的。
并没有ORTC与WebRTC相互排斥的说法。在WebRTC 1.0中已经有了很多ORTC的对象。那么在1.0的下一版本WebRTC NV中,WebRTC还会在保持向后兼容能力的同时继续加强与ORTC对象的结合。
理由2:“Codecs将不能与现存的系统所互通。”
实际上:错的。
在音频方面,所有的浏览器都支持更新的Opus编解码器和传统的G.711电信编解码器。在这方面从来没有发生过大问题。
在视频方面,VP8和H.264之前确实存在过相互竞争,但是已经通过委托浏览器提供商同时支持两种视频编解码器的方式解决了。Firefox会一直支持H.264,最新版本的(52)的Chrome浏览器也是。微软甚至在其自家的Edge浏览器内部支持H.264AVC。
理由3:“微软不支持WebRTC。”
实际上:基本上是错的。
微软在其最初版本的Edge浏览器中只支持ORTC,但是现在已经加入了对WebRTC 1.0的支持。但是现今绝大部分的微软用户使用IE浏览器浏览网页,所以我们就必须等Win10 完全替代了之前老版本的Windows系统后,微软才会大量的将其用户转到支持WebRTC的Edge浏览器上。
需要着重注意的一点是,除了浏览器以外,微软还将WebRTC添加到了Skype中,并且很多原生Windows应用也都支持WebRTC 1.0。
理由4:“苹果不支持WebRTC。”
实际上:这是对的。
很不幸的是这种说法是正确的。苹果支持一个叫做WebKit的开源软件并且加入了它的Safari浏览器中。他们还要求可以在第三方浏览器中使用WebKit,比如Chrome和Firefox。WebKit不支持WebRTC。因为苹果“必须使用WebKit”的政策,意味着WebRTC不会出现在Safari浏览器和移动端浏览器中。WebRTC现在正在积极开发WebKit,但是不幸的是我们在其完成开发并且能够在Safari和iOS上使用之前只能等待。作为临时选择,你可以在你的Mac电脑上使用Chrome,Firefox或者Opera浏览器来从iOS App Store上来下载原生的WebRTC应用(它们不用基于WebKit的WebView)。
理由5:“我可以继续使用Flash。”
实际上:错的。
在WebRTC出现之前,Flash RTMP是在网页端进行RTC的主要选择。但是,老旧平台的使用情况已经出现了衰退,并且安全问题也愈发严重。随着HTML5的发展,Flash RTMP已经系统地从浏览器中慢慢移出出去。Chrome和Firefox已经要求你提供额外的使用Flash的确认。在九月,Chrome会在后台中阻止Flash的加载。而Firefox也快要做出这种决定了。如果你想忽略关于VoIP通话质量的投诉,运行Flash驱动的VoIP应用绝对会越来越困难。
理由6:“WebRTC标准还不稳定。”
实际上:部分是对的。
给了浏览器或者应用程序权限去调用摄像头和麦克风的“媒体捕捉和数据流规范”已经出台。但是WebRTC 1.0的规范并没有给WebRTC的全部内容作出限定。但是,应该问的是,这会影响谷歌已经公布20亿的WebRTC浏览器的部署量,以及多于每周10亿分钟的WebRTC通话时长吗。浏览器供应商已经将最广泛应用的一些功能应用到实际中去了。
那么浏览器供应商会改变他们的实现以适配更新的标准呢?答案是肯定的。那么这是否意味着你需要完全重写你应用的代码呢?不需要,有类似于adapter.js这样的工具来控制重头改代码的事情发生以及限制浏览器间差异。
理由7:“WebRTC的bug特别多。”
实际上:部分是对的。
Philipp Hancke,我webrtcHacks的共同作者,Appear.in的WebRTC工程师做了一个很棒的演讲就是关于WebRTC的bug和处理方法的。他提到了很多类似于浏览器实现问题并且迫使浏览器更新新东西。
是的,就像其他所有复杂的技术存在着很多bug一样,WebRTC也不例外。但是,不像很多其他的技术,WebRTC向开发者们提供了一大堆好处,而这些好处可以让你的生活变得更便捷,典型的:
数十亿的用户—Facebook和它的Messenger平台,Google和其自家的Hangouts和Duo,以及其他很多很多有竞争力的使用者都很想尽早地解决这些问题。
一个有着众多活跃用户的可参与社区可以帮助你,以及像Philipp这样的高手也会经常分享一些数据和最好的实例。
像adapter.js这样的项目可以让开发者在与主要浏览器进行交互的时候只写一些特定的代码。
WebRTC确实存在着种种的问题,但是这项年轻的技术只有5岁,并且正在迅速的成长。我不能想像出有任何其他RTC有关的技术能像WebRTC这样迅猛的壮大。
结论
如果你非要找到不想使用WebRTC的理由,总可以鸡蛋里挑骨头地找到那么一两个。但是,有那么多那么多成功的实际例子摆在哪里,也不会有什么理由不想去使WebRTC了吧。