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

8
我一直在使用SimpleWebRTC库来开发我的项目。
  1. 如何在通话过程中更改动态远程视频分辨率(例如Google Hangouts调整浏览器大小时)
  2. Hangout浏览器调整大小将更改远程视频分辨率大小(.videoWidth .videoHeight)
  3. 这是否与webrtc计划B有关?
我想知道如何为多个对等连接实现它。

你是想改变视频帧的分辨率还是只是画布的大小? - Benjamin Trent
不是元素渲染大小,我想要改变视频的实际分辨率。 - dodortus
我想根据NGNStack的网络速度更改视频帧的分辨率。这可能吗?你能给我一些提示吗?我尝试重新邀请接收方。 - Mansuu....
@dodortus 你好,你找到解决方法了吗? - Tirth
1个回答

5
告诉发送端(例如通过DataChannels)将分辨率更改为NxM。在发送端,在新的API可用于实时更改getUserMedia / MediaStream捕获大小之前,您可以请求第二个摄像头/麦克风流并用它们替换现有流。(注意:这将导致onnegotiationneeded即重新协商,远端将看到一个新的输出流。)
更顺畅的方法(但目前仅适用于Firefox - 在标准化过程中)是使用RTPSender.replaceTrack()更改视频轨道而不影响音频或重新协商。
另一个选项是使用RTPSender.width / height(或达成协议的其他语法)在编码之前缩放输出视频,该选项尚不存在(但在任何浏览器中都没有)。
Plan B用于多流/BUNDLE(Chrome实现),但未被采纳; Firefox现在已经实现了Unified Plan(在F x38中发布,将在几天内发布);预计很快会有人发表博客文章介绍如何强制使两者合作(直到Chrome开始实施统一计划)。

只有几个疑问,用户会被提示再次获取新的流吗?同时,火狐浏览器是否遵守我们设置的getUserMedia限制?因为据我所知,火狐浏览器(不像Chrome)并不关心我们设置的限制。另外,解决OP问题的一个方法是像您说的那样,在使用相同流的同时使用修改后的SDP进行重新协商,假设目的是为了减少使用的带宽。 - mido
如果您已经获得用户的永久权限(始终允许),则无需重新提示。 - jesup
3
Firefox确实会遵循getUserMedia的约束条件,实际上你面临的问题很可能是我们使用的约束条件更接近规范;Chrome的基于更早期的提议设计,而不是最终商定的设计。我们还希望很快就能修改gUM流的特性以及RTPSender参数来强制缩放(我们已经有了RTPSender,所以这很容易实现)。 - jesup
期待那个 :) - mido

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接