本文来自 webrtc-developers 博客,作者 Olivier Anguenot 关于 WebRTC API 情况的海报更新。
作者用浏览器中最新的 API 更新了海报,还尝试将结果与之前的版本进行比较,看看有哪些变化。以下为正文内容。
相关阅读:2023 年 WebRTC API 格局
自 2023 年 1 月以来发生了什么变化?
我注意到的第一件事是,我跟踪的接口数量从 2023 年的 87 个增加到了 2024 年的 110 个。一年内增长了 26% 以上。
比较应用程序接口的数量,增长也是一样的:+26%。
注:所统计的 API 总数并不包括 HTML5 传统 API,如 HTMLVideoElement
或 HTMLAudioElement
,它们拥有许多 API。
这个数字让我很吃惊。我没想到会有如此大的增长。其结果是,即使您已经使用 WebRTC 多年,WebRTC 生态系统的学习曲线仍然很高。
因此,要跟上时代并不容易;[WebRTC 课程] (https://webrtccourse.com/) 是了解 WebRTC 最新发展的好地方。
幸运的是,这些更改并不会影响 WebRTC 的整个表面。正如您将在下一节看到的,大部分更改都与流和传输 API 有关。RTCPeerConnection
或 RTCDataChannel
等基本 API 仍保持不变(从 API 的角度来看)。
我注意到的第二件事是,尽管几年前(如果我没记错的话是 2021 年)就启动了Interop project,但各浏览器的 API 和接口仍然存在很大差异。
Chrome 浏览器仍然是实现接口和 API 最多的浏览器。其次是 Safari,最后是 Firefox(如果仅限于主要浏览器系列)。
这不仅影响新的应用程序接口或新界面。即使是最常见的 API,其表面 API 也存在差异。
细节决定成败,作为开发人员,我们在开发 WebRTC 应用程序时仍需谨慎。浏览器之间仍有差距,到 2024 年,肯定会出现互操作问题或行为适应问题,就像 2023 年一样……
您的认证团队(或您自己)仍有大量工作要做,以确保您的应用程序能在所有浏览器上运行。
详细信息
我是如何收集信息的?
为了收集信息,我使用了与去年相同的工具: 一个小型 JavaScript 应用程序可以从浏览器中收集接口和 API,并将其保存到文件中。
然后,我就可以进行两种类型的比较:
同一浏览器的两个版本之间: 例如,在 Chrome 稳定版和最新的 Chrome Canary 之间进行比较。了解 Chrome 浏览器未来版本的可用功能。
两个浏览器之间的比较: 查看它们之间的差异。
该工具的代码可以在GitHub中找到:WebRTC API Graph
我的测试目标是 Chrome M123、Firefox 124 和最新的 Safari 技术预览版 187(已激活所有 “可测试 “API)。
海报
我更新了海报,加入了新的 API 和接口。我还添加了一些新信息:
- 用橙色边框突出显示了自去年以来新增的 API。
- 在 API 名称前添加了一个小字符 “*”,以表示我在 Canary 或 Nightly 浏览器版本中发现了这些 API。
- 为 WebRTC 非捆绑接口创建了一个新类别,其中包含 WebCodecs 和 WebTransport 接口。
海报可在此处WebRTC-API Landscape获取
新界面
自上一版本以来,浏览器中出现了一些新界面:
- 其中大部分都与数据流、音轨和操作它们的方法有关。例如,带有 RTCEncodedAudioFrame 和 RTCEncodedVideoFrame 接口的新编码流 API,带有 CompressionStream 和 DecompressionStream 接口的新压缩流 API。还有一些能力和元数据 API。
- 其他 API 与新的 WebTransport API 有关,所有浏览器均可使用(在 Webkit 中需激活标记)。
注意:我发现这个链接对于Webkit 关于标准的立场很有趣。
新的 API:
除了错误,只有少数接口在 2023 年没有任何变化。它们是 RTCPeerConnection、RTCDataChannel 和所有传输(ICE)接口,如 RTCIceTransport、RTCDtlsTransport 和 RTCIceCandidate。
至于所有其他接口,则在接口中添加了新的 API。
在大多数情况下,Chrome 浏览器的接口都更加完整,这意味着它们比 Firefox 和 Safari 浏览器包含更多已实现的 API。但也有一些例外,我还发现 Safari 和 Firefox 中仍有一些前缀 API。
浏览器比较
更具体地说,以下是 Chrome 浏览器与其他浏览器的区别。
Chrome 123 与 Firefox 124
Chrome 123 +/-
- [+] Chrome 浏览器比火狐浏览器多实现 19 个接口
- [+] Chrome 浏览器比火狐浏览器多实现 87 个应用程序接口
火狐 124 +/-
- [+]火狐实现了 20 个 Chrome 浏览器没有实现的 API,如 WebTransport 和 RTCPeerConnection(但不是标准化的)接口
- [+] selectAudioOutput API
- [-] 无 WebCodecs API
- [-] 没有可插入流
- [-] 无 ICE 传输
Chrome 123 版本 Safari 187
Chrome 123 +/-
- [+] Chrome 浏览器比 Safari 多实现 11 个接口
- [+] Chrome 浏览器比 Safari 多实现 27 个应用程序接口
Safari 187 +/-
- [+] Safari 实现了 20 个 Chrome 浏览器未实现的 API,例如 MediaSessions` 中的 API
- [-] 无插入式数据流
- [-] 无编码流
结论
WebRTC 生态系统在不断发展,API 和接口的数量也在不断增加。
一方面,这是件好事,因为这意味着我们有越来越多的可能性在我们的应用程序中做事情,而且可以做我们想做的事情。另一方面,这也意味着我们必须不断学习。
我认为,不幸的是,WebRTC API 变得越来越复杂。这就好像我们多年来一直依赖浏览器,而现在浏览器却让开发人员选择自己做,并假定他们会做得更好……我不确定我们是否需要急于重做一切。
我的工作是开发能为客户带来价值的应用程序,帮助他们节省时间……WebRTC 只是一种技术,而不是目标。
让您的应用程序保持简单!
译自:https://www.webrtc-developers.com/webrtc-api-landscape-in-2024/
本文来自作者投稿,版权归原作者所有。如需转载,请注明出处:https://www.nxrte.com/jishu/webrtc/42558.html