所以我一直在学习 webrtc 并制作了一个群组视频通话应用程序,我想将其转换为近距离视频通话应用程序。
同一个房间的用户可以在他们的 p5.js 画布上移动一个点,如果 2 个点比某个阈值更近,那么这些用户将通过视频流连接,但如果 2 个或更多点首先移动很远,我会得到一个空白流然后再靠近一点(用户只能看到他们的视频。
最初加入视频通话后工作正常,只有在用户移动很远然后再靠近时才会出现问题)。
这是代码...
const proximity = (peer) => {
if (peer.peerID === socket.id) {
return false;
}
let X, Y;
for (let i = 0; i < users.length; i ++) {
if (users[i].id === socket.id) {
X = users[i].x;
Y = users[i].y;
break;
}
}
for (let i = 0; i < users.length; i ++) {
if (users[i].id === peer.peerID) {
if (Math.abs(users[i].x - X) < 100 && Math.abs(users[i].y - Y) < 100) {
return true;
} else {
return false;
}
}
}
return false;
}
这是检查 2 个用户在画布上是否足够接近的邻近功能。
<div className="video-canvas">
<div className="videobox">
<StyledVideo muted ref={ userVideo } autoPlay playsInline />
{ peers.map((peer) => {
return (
proximity(peer) ? (
<div>
<Video key={ peer.peerID } peer={ peer.peer } />
</div>
) : (
<div></div>
)
);
})}
</div>
<Sketch setup={ setup } draw={ draw } className="canvas" />
</div>
这是渲染区域..
我是 webrtc 和 simple-peer 的新手,所以如果我遗漏了一些愚蠢的东西,我深表歉意,但在此先感谢:)