Javascript 如何在WebRTC中自动传输远程cam?
到目前为止,我已经成功地在具有数据通道的两个对等方之间建立了(运行node.js server)RTC连接。我可以来回发送数据 我还成功地将网络摄像头从一个对等点传输到另一个对等点,反之亦然。 我到底是怎么做到的 两个对等方都这样做:Javascript 如何在WebRTC中自动传输远程cam?,javascript,node.js,webrtc,getusermedia,Javascript,Node.js,Webrtc,Getusermedia,到目前为止,我已经成功地在具有数据通道的两个对等方之间建立了(运行node.js server)RTC连接。我可以来回发送数据 我还成功地将网络摄像头从一个对等点传输到另一个对等点,反之亦然。 我到底是怎么做到的 两个对等方都这样做: function handleRemoteStreamAdded(event) { console.log('Remote stream added.'); remoteStream = event.stream; remoteVideo.srcObj
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。一切都很好
但我下一步真正想做的是为每个客户机添加一个按钮,并让每个客户机选择是否将其cam流到另一端。如果他们愿意,那么流应该在另一端自动启动。不幸的是,我就是不知道该怎么做
理论上,我的想法是将Eventlistener添加到按钮,然后事件触发:
navigator.mediaDevices.getUserMedia(constraints).then(gotStream).catch(err);
通过这样做,我基本上也做了pc.addStream(stream)代码>通过函数gotStream
。然后我向另一端发送一条消息,如“显示我的cam”,通过在另一端接收该消息,另一端应以某种方式触发handleRemoteStreamAdded
。但是在这个函数中有一个预定义的事件
,我只能通过pc.onaddstream=handleRemoteStreamAdded在本地“访问”代码>
当我收到诸如“显示我的cam”之类的消息或通过某些事件时,如何自动开始传输另一方的cam?在呼叫pc.addStream后,您是否正在创建另一个报价并进行新的信令交换?(不推荐使用哪个fwiw;首选addTrack和ontrack)
有关向纯音频通话添加视频的类似内容,请参阅。在呼叫pc.addStream后,您是否正在创建另一个优惠并进行新的信令交换?(不推荐使用哪个fwiw;首选addTrack和ontrack)
请参阅,了解向纯音频通话中添加视频的类似内容。我不太喜欢RTC部分,但启动pc时是否可以解决您的问题?正如我想象的那样,您会从一开始就发送一个静默流,并且只有在用户接受它时才替换MediaStream,这样就不需要重新协商任何内容;pc.addStream=localstreampc.addStream(localstream)
yes,然后localstream.removeTrack(silentVideTrack)
,localstream.addTrack(gUMVideoTrack)
不知何故pc.addStream(…)
对dummystream没有任何作用myVidObj.srcObject=dummyStream
==>这是可行的。另一个没有:-/啊,奇怪。。。您应该能够发送这个虚拟流。我不知道会发生什么,正如我所说的,一旦它离开js引擎,我的知识就非常有限。。。。安维,这里仍然只使用srcObject
来证明我的想法。我不太喜欢RTC部分,但启动你的电脑时能解决你的问题吗?正如我想象的那样,您会从一开始就发送一个静默流,并且只有在用户接受它时才替换MediaStream,这样就不需要重新协商任何内容;pc.addStream=localstreampc.addStream(localstream)
yes,然后localstream.removeTrack(silentVideTrack)
,localstream.addTrack(gUMVideoTrack)
不知何故pc.addStream(…)
对dummystream没有任何作用myVidObj.srcObject=dummyStream
==>这是可行的。另一个没有:-/啊,奇怪。。。您应该能够发送这个虚拟流。我不知道会发生什么,正如我所说的,一旦它离开js引擎,我的知识就非常有限。。。。安维,这里仍然只使用srcObject
来证明我的想法。