如何在WebRTC中自动传输远程摄像头?

时间:2018-04-19 00:32:36

标签: javascript node.js webrtc getusermedia

到目前为止,我已成功建立(运行node.js服务器)两个具有数据通道的对等体之间的RTC连接。我可以来回发送数据。

我也成功地将网络摄像头从一个对等体传输到另一个对等体,反之亦然。 我到底是怎么做的?

两个同行都这样做:

function handleRemoteStreamAdded(event) {
  console.log('Remote stream added.');
  remoteStream = event.stream;
  remoteVideo.srcObject = remoteStream;
}

function gotStream(stream){
 ...
 pc.addStream(stream);
 ...
}

navigator.mediaDevices.getUserMedia(constraints).then(gotStream).catch(err);
 ...
pc = new RTCPeerConnection();
 ...
pc.onaddstream = handleRemoteStreamAdded;

所以我基本上说每当我添加自己的流(pc.addStream)时,请转到handleRemoteStreamAdded。一切正常。

但我真正想要做的是下一步是为每个客户添加一个按钮,并为每个客户提供选项,无论他们是否想要将他们的摄像头传输到另一端。如果他们想要,那么流应该在另一端自动启动。不幸的是,我无法弄清楚如何。

从理论上讲,我认为将Eventlistener添加到按钮然后触发事件:

navigator.mediaDevices.getUserMedia(constraints).then(gotStream).catch(err);

通过这样做,我基本上也通过pc.addStream(stream);做了function gotStream。然后我向另一端发送消息,如“显示我的摄像头”,并在另一端接收此消息,其他同伴应以某种方式触发handleRemoteStreamAdded。但是在这个函数中,有一个预定义的event我只能通过pc.onaddstream = handleRemoteStreamAdded;

在本地“访问”

如果我收到“显示我的相机”或某些事件的消息,我怎么能自动开始流式传输另一侧的相机?

1 个答案:

答案 0 :(得分:2)

你是在创建另一个提议并在调用pc.addStream后进行新的信令交换吗? (fwiw已被弃用;更喜欢addTrack和ontrack)

请参阅https://webrtc.github.io/samples/src/content/peerconnection/upgrade/,了解将视频添加到纯音频呼叫的类似内容。