如何使WebRTC视频流在本地网络上工作



我正试图通过WebRTC在两个客户端之间建立对等连接,然后通过该连接从摄像机流式传输视频。问题是,远程端没有显示视频,尽管我可以清楚地看到remotePc.ontrack事件被触发。也没有抛出任何错误。我不想使用icecandidate机制(也不应该需要它(,因为结果应用程序只会在本地网络上使用(信令服务器只会为客户端交换SDP(。为什么我的例子不起作用?

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Title</title>
</head>
<body>
<video id="local" autoplay playsinline></video>
<video id="remote" autoplay playsinline></video>
<script>
const localVideoElem = document.getElementById("local");
const remoteVideoElem = document.getElementById("remote");
const localPc = new RTCPeerConnection();
const remotePc = new RTCPeerConnection();
remotePc.ontrack = (event) => {
remoteVideoElem.srcObject = event.streams[0];
};
navigator.mediaDevices
.getUserMedia({
video: true,
audio: false,
})
.then((stream) => {
localVideoElem.srcObject = stream;
stream
.getTracks()
.forEach((track) => localPc.addTrack(track, stream));
return localPc.createOffer({
offerToReceiveVideo: true,
offerToReceiveAudio: false,
});
})
.then((offer) => {
localPc.setLocalDescription(offer);
remotePc
.setRemoteDescription(offer)
.then(() => remotePc.createAnswer())
.then((answer) => {
remotePc.setLocalDescription(answer).then(() => {
localPc.setRemoteDescription(answer).then(() => {
console.log(localPc);
console.log(remotePc);
});
});
});
});
</script>
</body>
</html>

ICE候选者是必需的,因为它们告诉您客户端将在其中相互连接的本地地址。

不过,您不需要STUN服务器。

相关内容

  • 没有找到相关文章

最新更新