如何在通话期间更改动态视频分辨率(在 WebRTC 中)

dod*_*tus 7 resolution webrtc

我一直在为我的项目使用 SimpleWebRTC lib。

  1. 如何在通话期间更改动态远程视频分辨率(如调整浏览器大小时的 google 环聊)
  2. 调整环聊浏览器大小将更改远程视频分辨率大小 (.videoWidth .videoHeight)
  3. 这与webrtc 计划 b 相关吗?

我想知道它是如何为许多对等连接实现的。

jes*_*sup 5

告诉发送端(例如通过 DataChannels)将分辨率更改为 NxM。在发送端,在新 API 可用于动态更改 getUserMedia/MediaStream 捕获大小之前,您可以请求第二个摄像头/麦克风流并用它们替换现有流。(注意:这将导致需要进行协商,即重新协商,并且远端会看到一个新的输出流。)

更流畅(但目前仅在 Firefox 中——在标准化过程中)将使用 RTPSender.replaceTrack() 来更改视频轨道,而无需接触音频或重新协商。

将存在的另一个选项(尽管尚未在任一浏览器中)是使用 RTPSender.width/height(或任何已商定的语法)在编码之前缩放传出视频。

未采用多流/捆绑(Chrome 实现)的 B 计划;Firefox 现在(在几天后推出的 Fx38 中)实施了统一计划;预计很快就会看到有人发表关于如何强制两者协同工作的博客文章(直到 Chrome 开始实施统一计划)

  • Firefox 确实尊重 getUserMedia 约束,实际上您遇到的问题很可能是我们使用了更接近规范的约束;Chrome 的当前基于一个更旧的提议设计,而不是最终达成一致的设计。我们也希望尽快改变 gUM 流的特性,以及 RTPSender 参数来强制缩放(我们已经有了 RTPSender,所以这很容易) (3认同)