gpt4 book ai didi

node.js - kurento-utils,一个客户端中有多个 WebRtcPeer

转载 作者:太空宇宙 更新时间:2023-11-04 02:00:11 25 4
gpt4 key购买 nike

我有一个应用程序,将我的桌面和网络摄像头共享到我的 Kurento 服务器(同一管道中的两个不同端点),为两者启动记录端点,然后提醒客户端它们都已准备好使用。

我的问题在于我的客户端上有两个 WebRtcPeerRecvonly 对等点,如果一个在另一个点发出消费请求之前未完成,我要么获取同一桌面端点的视频,要么获取同一网络摄像头端点的两个视频。

网络摄像头对等

 initWebcamUser(id){

let options = {
onicecandidate: (candidate) => {
socket.emit('onWebcamIceCandidate',{
candidate : candidate,
socket_id : id,
});
}
};

webRtcWebcamPeer = new kurentoUtils.WebRtcPeer.WebRtcPeerRecvonly(options, function(error) {
this.generateOffer((error, offerSdp) => {
socket.emit('viewerWebcam',{
sdpOffer : offerSdp,
socket_id : id
});
});
});
}

和我的桌面同行。

  initDesktop(socket_id){
let options = {
onicecandidate: (candidate) => {
socket.emit('onDesktopIceCandidate',{
candidate : candidate,
socket_id : socket_id,
});
}
}

webRtcDesktopPeer = new kurentoUtils.WebRtcPeer.WebRtcPeerRecvonly(options, function(error) {
this.generateOffer((error, offerSdp) => {
socket.emit('viewerDesktop',{
sdpOffer : offerSdp,
socket_id : socket_id
});
});
});
}

我得出的结论是,它们都共享相同的 kurentoUtils.WebRtcPeer,就好像我在调用 initWebcamUser 之后调用 initDesktop 之前设置了 2 秒的延迟一样,我 100% 都能获得正确的流。

我想这可以归结为一个问题:是否可以同时执行此操作?或者我应该在 WebcamPeer 完成时设置一个基于 promise 的系统,如果是这样,当添加iceCandidates时,我将把它放在这个过程中的哪里?

编辑:我觉得重要的是要注意,我将这些对等点分别分配给我的 webcamViewerResponse/DesktopViewerResponse 中各自的“参与者”,这样当我遇到此问题时,就不会从那些临时 webRtcWebcamPeer/webRtcDesktopPeer 变量中引用它们。

提前致谢。

最佳答案

如果有人正在寻找这个问题的答案,我找到了一个解决方案。不是最优雅的,但它 100% 的时间都有效。

endpoint.on('OnIceComponentStateChanged', function(event) {
if(event.state==='CONNECTED'){
//resolve your promise to continue on with your next connection here.
}
});

关于node.js - kurento-utils,一个客户端中有多个 WebRtcPeer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46303047/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com