前言:本文作者 Olivier Anguenot,阿尔卡特朗讯技术主管。分享了他对 WebRTC 在 Firefox 中的一些研究和看法,以下为全文内容。
我已经很久没有仔细研究过 Firefox 提供的 WebRTC API 了。老实说,Firefox 并不是我用来开发和上网的浏览器。这两者并不相关,但由于我一直在开发,所以我使用一个浏览器来处理所有事情…
而对于 WebRTC,我主要使用 Chrome 浏览器来测试新的 API 或构建原型,当我需要做演示时,我会依赖 webrtc Adapter,或者我已经养成了在其他浏览器上少做演示的习惯,这其实并不酷!
因此,当我在制作第二版 WebRTC API 地图时(这应该是我下一篇文章的主题),我一直在使用我的 WebRTC API Gragh 工具来查看 WebRTC 领域发生了哪些变化。
我惊喜地发现变化如此之多。于是,我查看了 Firefox Release Notes for Developers(火狐浏览器开发人员发布说明)页面,以获取更多关于浏览器变化的信息。
希望火狐的发行说明能让我找到快乐。
Firefox 浏览器更新
Firefox 浏览器每 4 周更新一次。2023 年,第一个版本将于 1 月 17 日发布(Firefox 109),而最后一个版本将于 12 月 19 日发布(Firefox 121)。
如果我没算错的话,2023 年,Mozilla 将发布 13 个版本的 Firefox。
在撰写本文时,已经发布了 11 个版本,其中 9 个版本具有 WebRTC 增强功能。
2023 年 WebRTC 的主要演变
以下是 2023 年 Firefox 浏览器的主要工作主题:
- 支持“ORTC”API 中缺失的方法和属性,例如
RTCRtpSender
、 和RTCRtpReceiver
- 支持缺失的统计报告,如
RTCMediaSourceStats
、RTCPeerConnectionStats
- 支持 Compression Streams API
- 支持 WebTransport API
- RTCPeerConnection.connectionState
- 支持 Audio Output Devices API 并使用新的专用 API
- 支持 WebRTC 编码转换
注意:connectionState
和 setSinkId
: 很高兴终于看到 Firefox 支持这些 API!
注意:Safari 浏览器仍不支持 setSinkId
WebRTC 变化详情
我记下了所有发行说明并提取了有关 WebRTC 的内容。以下是显著的变化:
Firefox – 119(10 月 24 日)
现在可以通过在传递给WebTransport.createBidirectionalStream()
和 WebTransport.createUnidirectionalStream()
的选项参数中包含 sendOrder 属性来指定发送流的相对优先级。
Firefox – 118(9 月 26 日)
RTCRtpTransceiver.currentDirection
和RTCRtpTransceiver.direction
属性现在支持用于指示收发器是否已停止的 “stoped “值。现在应使用该值代替已废弃的RTCRtpTransceiver.stopped
属性
- 现在,
RTCPeerConnection.getTransceivers()
返回的数组将省略已停止的收发器。同样,RTCPeerConnection.getReceivers()
和RTCPeerConnection.getSenders()
也会省略与已停止收发器相关的接收器和发送器。
Firefox – 117 (Aug, 29th)
ReadableStream.from()
现在支持静态成员,允许开发人员从任何可迭代或异步可迭代对象构造可读流(Firefox bug 1772772 )
- 现在支持 WebRTC 编码转换,允许网络应用程序使用在 Worker 中运行的
TransformStream
来修改传入和传出的 WebRTC 编码视频和音频帧。支持的接口包括:RTCRtpScriptTransform
、RTCRtpScriptTransformer
、RTCRtpSender.transform
、RTCRtpReceiver.transform
、RTCEncodedVideoFrame
和RTCEncodedAudioFrame
,以及RTCTransformEvent
和rtctransform
事件
Firefox – 116 (Aug, 01st)
- 除 Android 外,音频输出设备 API 现已支持所有平台。该 API 允许网络应用程序将音频输出重定向到允许的蓝牙耳机、免提电话或其他设备,而不必使用浏览器或底层操作系统的默认设置。受影响的 API 包括
MediaDevices.selectAudioOutput()
、MediaDevices.enumerateDevices()
、HTMLMediaElement.setSinkId()
、HTMLMediaElement.sinkId
Firefox – 115(7 月 4 日)
- 无显着变化
Firefox – 114(6 月 6 日)
- 支持WebTransport API ,其中包括以下接口:
WebTransport
、WebTransportBidirectionalStream
、WebTransportDatagramDuplexStream
、WebTransportReceiveStream
和WebTransportDatagramDuplexStream
。
Firefox – 113(5 月 9 日)
- 支持
CanvasRenderingContext2D.reset()
和OffscreenCanvasRenderingContext2D.reset()
,并且可用于将关联的渲染上下文返回到其默认状态。(火狐错误1709347)。 - 现在支持压缩流 API 。此 API 提供的接口用于使用 gzip 和 deflate 格式压缩和解压缩数据(Firefox bug 1823619)。
- AV1 视频编解码器现已在 Android 上启用。如果设备支持,则使用硬件加速解码(Firefox bug 1672276)。
- 支持以下 WebRTC 方法、属性和字典:
RTCRtpSender.getCapabilities()
、RTCRtpReceiver.getCapabilities()
、RTCRtpSender.setStreams()
、RTCSctpTransport
&RTCPeerConnection.sctp
、RTCMediaSourceStats
、RTCPeerConnection.connectionState
和RTCPeerConnectionStats
。 - 已弃用的非标准属性
mozRTCPeerConnection
、mozRTCIceCandidate
和mozRTCSessionDescription
已被永久删除
Firefox – 112(4 月 11 日)
- 支持
navigator.getAutoplayPolicy()
,允许开发人员根据是否允许、禁止自动播放或仅在音频静音时允许自动播放来配置媒体元素和音频上下文的自动播放。
Firefox – 111(3 月 14 日)
- 已支持
RTCInboundRtpStreamStats.trackIdentifier
。允许开发人员在使用RTCPeerConnection.getStats()
时将inbound-rtp
统计数据与特定轨道相关联。
Firefox – 110(2 月 14 日)
- 支持Permission API的 midi 权限。这允许使用
navigator.permissions.query()
查询使用Web MIDI API的权限状态。 - 支持
ReadableStream
使用 for wait…of 语法对流中的块进行异步迭代(Firefox bug 1734244)。 - WebRTC 现在支持在将收发器添加到对等连接时发送可用编码集,并获取与发送方关联的活动编码。具体来说,
RTCPeerConnection.addTransceiver()
支持在 init 参数对象中使用sendEncodings
选项,RTCRtpEncodingParameters.active
可用于确定是否使用编码来发送数据。 - WebRTC 方法
RTCRtpSender.getParameters()
、RTCRtpSender.setParameters()
和RTCRtpReceiver.getParameters()
现在符合规范。
Firefox – 109(1 月 17 日)
- 无显着变化
结论
Firefox 浏览器似乎正在迎头赶上 WebRTC,这是一个非常好的消息:互操作性将更加容易,不同浏览器之间的用户体验也将更加相似。
2024 年应该会有一个好的开始!但由于 2023 年还没有结束,我希望在即将到来的 11 月和 12 月版本中看到更多 WebRTC 变化!
您使用 Firefox 的 WebRTC 体验如何?
译自:https://www.webrtc-developers.com/will-webrtc-rock-again-in-firefox-in-2024/
本文来自作者投稿,版权归原作者所有。如需转载,请注明出处:https://www.nxrte.com/jishu/webrtc/36903.html