[翻译] WebRTC 2019 年中观察「What’s the status of WebRTC in 2019?」

1,462 阅读5分钟

原文链接:bloggeek.me/whats-the-s…

中文翻译稿

来到 2019 年的 WebRTC 技术虽然已经全线就绪。但是,还有不少工作需要推进和开展。

Image of Yaktocat

6 个月前当我写下 WebRTC is ready 此文时,不少人感觉到沮丧。 这里有个事实 - WebRTC 在技术行业领域已经认为就绪可用,不少公司也正在使用与 WebRTC 相关的产品。 这一切基于 WebRTC 的技术有哪些挑战呢?当然有的。 这件事有难度吗?也是有的。 如果你要打造构造基于 WebRTC 技术上的产品和应用或者升级一下你的音视频通话服务。那么从今以后除了 WebRTC 没有其它选择。

WebRTC 1.0 - the specification WebRTC 1.0 标准

Image of Yaktocat
我记得有人告诉我,2015年底 WebRTC 1.0 标准将年底前发布。 并且在 2016年和 2017年底也听到过同样的说法。 来到 2018 年,我选择了忽略这些说法。

那 2019 年呢?有一点儿小小的变化在我们谈论 WebRTC 是否已经可用这件事上。为什么呢?关键原因是标准已经完成。 但是,谁关心这个呢? 大家都已经在使用 WebRTC 了,就像做一个生意一样,就这样了。

在 WebRTC 技术上我们已经达成一致。 也接受这个技术带来巨大愿景和场景(例如浏览器中实现的 Peer 2 Peer 通信)。已经在使用 WebRTC 的开发人员在浏览器中可以统一而已简单的使用这项技术,这也是我们为之努力实现的目标。当我们面对用户时也一样,期望这项技术可以完美的正常工作。

Chrome 与 WebRTC

Image of Yaktocat
Chrome 已经是 WebRTC 的事实标准规范,虽然它并没有完全的符合 1.0 标准。从数据分析来看,69% 的互联网应用是基于 Chrome 的。Web 站点的访问数据来看这个数据更是惊人的 74%。
Image of Yaktocat
Chrome 所面对的问题正在慢慢得到解决,渐渐地的完全符合 WebRTC 1.0 规范,虽然不同版本之间会遇到一些问题。这个方面主要原因是因为 Google 在还技术债(Technical debt)和代码重构(Refactoring)这个方面的工作比较激进,发现需要优化提升就会开动起来。(例如,WebRTC 中的第三代回声消除器 echo canceller 都得到了重写)。

所以,如果你正在开发基于浏览器的 WerRTC 应用时,那么 Chrome 浏览器首当其冲都是应该被优先考虑和关注的。

Firefox 与 WebRTC

Image of Yaktocat
Firefox 已经完成了兼容 WebRTC 1.0 标准规范。 最近一些变为是 Unified Plan 代替了 Plan B 成为了标准,Firefox 需要为此做一些小小的修改。 Firefox 最大的问题在于浏览器市场占有率远远落后于 Chrome。某些时候开发人员主动选择不支持 Firefox 浏览器,感觉支持 Firefox 是在浪费时间。 对于有些用户来说,直接让他们使用基于 Electron 打包的 Chrome 也是一个很好的选择。

Safari 与 WebRTC

Image of Yaktocat
Safari 已经支持 WebRTC 标准了。包括 simulcast、VP8、H.264。虽然不是全部,但是可以简单说的 WebRTC 所有特性都可以顺利在 Safari 浏览器上正常工作。

你也会发现 VP9 并没有实现并且也不那么常用,虽然 VP9 各方面都令人期待和满意。但是,在一些复杂的场景下例如多方通话(multiparty sessions)会遭遇到一些功能性和互操作性的问题,特别是与 Chrome 和 Firefox 之间。 对于开发者来说这个是交大的挑战,毕竟这是 iOS 设备上唯一的可用的浏览器,macOS 也是系统默认浏览器。并且使用 macOS 也在程序员中是一种流行文化。

Edge 与 WebRTC

Image of Yaktocat
Edge 浏览器之前是使用的自己的浏览器内核,但是现在情况变了。微软宣告 Edge 切换到了 Chromium 内核,这也为 Edge 浏览器全面跨平台做好了准备。 Edge 基于 Chromium。 Chrome 也基于 Chromium。 Chrome 不完全兼容 WebRTC 1.0 规范,因为 Chromium 也没有完全兼容规范。 以至于 Edge 也同样不兼容,因为都是基于 Chromium 内核的。 只有静候佳音关注后续 Edge 的新版发布了。

Microsoft IE 与 WebRTC

Image of Yaktocat
IE 一直在做白日梦呢。 停下来吧。 IE 不支持 WebRTC,不管是现在还是将来。 使用插件方式或者使用 Electron 打包吧,或者更好的方式升级一个更好的浏览器。

Opera/Brave/whoever 与 WebRTC

Image of Yaktocat
其它浏览器在这里统一说明一下。例如 Opera、Brave 或者其它。总体来说都是 Chromium 基于内核的打造的浏览器换个外壳而已。 因此,它们总体来说都是和 Chrome 一样的,至少大部分情况下都没有对 WebRTC 做修改。

Android 与 WebRTC

Image of Yaktocat
Android 支持 WebRTC。 Chrome 浏览器有提供 Android 版本并且提供 WebRTC 支持,其它一些浏览器的 Android 版本也提供 WebRTC 支持(例如 Firefox)。 有些时候手机制造商会在 ROM 中内置它们自己的浏览器(例如三星),此时 WebRTC 的可用性和兼容性就要值得注意了。

好消息就是 Android 内置的 WebView 组件也是支持 WebRTC 的,所以内置浏览器的 App 也最终获得了 WebRTC 的支持。例如:Facebook 和 Slack 使用的场景。 所以,在你编写自己的 Android App 时,都可以使用内置的 WebView 组件,也同时可以自己编译打包 WebRTC。

iOS 与 WebRTC

Image of Yaktocat
在 iOS 设备上这个事儿就略显诡异和麻烦了。 Safari for iOS 是支持 WebRTC 的并且不少公司的商业应用也在使用。 其它一些浏览器的确不支持 WebRTC,因为 iOS 系统提供的内置 WebView 组件并没有提供 WebRTC 支持。 所以,在你编写 iOS App 时只有自己编译 WebRTC for iOS 包或者使用已编译好的包。总之 WebView 组件不支持 WebRTC。