简单地说,我正在尝试更改VideoTrack MediaStream 对象的.。
(文件:API接口)
我有一个MediaStream对象__o_jsep_stream_audiovideo,它由sipml库创建。
__o_jsep_stream_audiovideo看起来是这样的:

所以它有一个AudioTrack和一个VideoTrack。最初,VideoTrack来自用户照相机(例如label: "FaceTime Camera")。
根据文献资料
MediaStream由零或多个MediaStreamTrack对象组成,表示各种音频或视频轨道。
所以我们应该可以在这个流中添加更多的曲目。
我正在尝试转换/交换来自另一个流的VideoTrack。其他流(streamB)起源于Chromes ScreenCapture api (label: "Screen")

我试过:
__o_jsep_stream_audiovideo.addTrack(streamB.getVideoTracks()[0])
似乎没有任何效果。
我还尝试直接分配videoTracks (我知道这是绝望的)。
我一定漏掉了什么明显的东西,你能给我指明正确的方向吗?
我在跑
发布于 2014-05-06 14:57:45
在MediaStream对象不要发出重新谈判的信号上添加和删除轨道,并且MediaStream有两个同类型铬轨道也存在问题。
您可能应该将单独的纵隔添加到对等连接中,以便它能够触发重新协商并处理流。铬中的添加/删除功能非常天真,不太细粒度,您应该尽可能地远离它。
发布于 2018-05-03 23:59:02
当你谈到改变视频轨道时,我们指的是两个方面:
WebRTC获得了新的版本,因为它不推荐addStream/removeStream。然而,更重要的是他们引入了新的接口replaceTrack
stream.getTracks().forEach(function(track) {
// remote
qcClient.calls.values().forEach(function(call) {
var sender = call.pc.getSenders().find(function(s) {
return s.track.kind == track.kind;
});
sender.replaceTrack(track);
});
});最好只是添加一个新的视频元素(或者使用现有的视频元素),但是将srcObject分配给新捕获的流。
https://stackoverflow.com/questions/23497037
复制相似问题