我相信您在多连接中向双方(B 方和 C 方)发送相同的本地流,因为如果您尝试为不同的连接创建不同的本地流,它将引发错误,因为它会再次尝试访问麦克风和摄像头这是不可能的(我相信)。
您必须像这样创建本地流:
stream = sessionFactory.createLocalMediaStream(LOCAL_MEDIA_ID);
要将 Party-B 的流发送到 Party-C,您可以这样做:
代替 myStream(用于与 C 的对等连接),您可以添加 remoteStreamB(您从 B 获得的远程流)。这会将您从 B 获取的流添加为与 C 的第二个 peerconnection 中的 localstream。
用于从 Party-C 向 Party-B 发送远程流:
- 假设您与 Party-B 有 peerconnection1。要首先将来自 C 的远程流添加为本地流,您必须删除当前曲目,然后添加新曲目。
为此你可以做这样的事情
AudioTrack t1 = mystream.audioTracks.get(0);
VideoTrack v1 = myStream.videoTracks.get(0);
if(myStream.removeTrack(t1)){
if(myStream.removeTrack(v1)){
t1 = remoteStreamC.audioTracks.get(0);
v1 = remoteStreamC.videoTracks.get(0);
myStream.addTrack(t1);
myStream.addTrack(v1);
}
}
通过这种方式,您将更改要发送到 B 的本地流的内容。现在该流将包含来自 remotestreamC 的音频和视频轨道。
但是为了使这个过程没有错误,您将不得不使用错误处理,因为当有人断开连接(B 或 C)时,您将获得空轨道......在这种情况下,您必须立即将挂断请求发送到另一方也是。