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

如何在通话期间更改动态视频分辨率(在WebRTC中),webrtc,resolution,Webrtc,Resolution,我一直在为我的项目使用SimpleWebRTC库 如何在通话中更改动态远程视频分辨率(如调整浏览器大小时的google hangout) 调整悬挂浏览器大小将更改远程视频分辨率大小(.videoWidth.videoHeight) 这与什么有关 我想知道它是如何为许多对等连接实现的。告诉发送端(比如通过数据通道)将分辨率更改为NxM。在发送端,在新API可用于动态更改getUserMedia/MediaStream捕获大小之前,您可以请求第二个摄像头/麦克风流,并用它们替换现有流。(注意:这将导

我一直在为我的项目使用SimpleWebRTC库

  • 如何在通话中更改动态远程视频分辨率(如调整浏览器大小时的google hangout)
  • 调整悬挂浏览器大小将更改远程视频分辨率大小(.videoWidth.videoHeight)
  • 这与什么有关
  • 我想知道它是如何为许多对等连接实现的。

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

    更平滑的方法是(但目前只有在Firefox中——在标准化过程中)使用RTPSender.replaceTrack()来更改视频轨迹,而无需触摸音频或重新协商

    另一个存在的选项(尽管两种浏览器中都没有)是在编码之前使用RTPSender.width/height(或任何商定的语法)来缩放输出视频


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

    你真的想更改视频帧的分辨率还是仅更改视频绘制画布的大小?而不是元素渲染大小,我想更改视频的实际分辨率。我想根据ngnstack中的网络速度更改视频帧的分辨率。可能吗。你能给我一些提示吗。我尝试重新邀请reciever@dodortus嗨,你们找到办法了吗?只是有一些疑问,用户会再次被提示输入新的流吗?firefox是否也遵守我们设置的getUserMedia约束?bec据我所知,firefox(与chrome不同)不受我们设置的限制,解决OP问题的另一个办法是,正如你所说,在使用同一个流时与修改后的sdp重新协商,假设目的是减少使用的带宽。如果你已经获得用户的永久许可(始终允许)Firefox确实遵守getUserMedia约束,事实上,您遇到的问题很可能是我们使用的约束更接近规范;Chrome目前基于一个更老的设计方案,而不是最终达成一致意见。我们还希望很快能够改变牙龈流的特征,并使用RTPSender参数强制缩放(我们已经有了RTPSender,所以这很容易),期待着:)