WebRTC - 在通信过程中改变视频分辨率

Lim*_*nte 6 video-streaming webrtc

我知道我可以在初始化状态下定义视频流分辨率:

var video_constraints = {
  mandatory: {
    maxHeight: 480,
    maxWidth: 640 
  },
  optional: []
};

navigator.getUserMedia({
  audio: false,
  video: video_constraints
}, onsuccess);
Run Code Online (Sandbox Code Playgroud)

我想知道有什么方法可以在通信过程中改变视频流分辨率,即在初始化之后?

Rob*_*ert 5

规范中有MediaStreamTrack.applyConstraints(),但到目前为止浏览器似乎不支持它,或者它可能已被删除?对我来说,目前看来这是不可能的。另请参阅SO 上的这个问题

唯一的办法就是根据上面的问题来改变流。一种可能性是创建一个具有更高分辨率的新流,添加该流并替换另一侧的流。之后您可以停止/分离流。

  • Chrome 和 Firefox 38 支持重新协商。但是,Firefox (37) 版本中[支持](http://jsfiddle.net/8nem95k7)“replaceTrack”,这是一项实验性的非标准功能。`MediaStreamTrack.applyConstraints()` 支持即将推出。 (3认同)