我正在使用 Reactjs、Socketio 和 WebRTC 构建一个实时点对点视频通话应用程序,网址为 http://p2prealtime.vercel.app/。然而, 我在音频方面遇到问题 - 它不会发送给其他用户,但会循环回发送者。我该如何解决这个问题?
完整代码链接:https://dub.sh/H6ZHrth
我尝试过的代码:
window.navigator.mediaDevices
.getUserMedia({
video: true,
audio: true,
})
.then(async (stream) => {
setVideoStream(stream);
});
我已添加此代码来获取音频和视频,并将音频流添加到 PC,但问题仍然存在。
在 pc.addTrack 函数中包含来自 videoStream 的音轨
pc.addTrack(videoStream.getVideoTracks()[0]);
pc.addTrack(videoStream.getAudioTracks()[0]);
也在 pc.ontrack 函数中处理视频和音频轨道
pc.ontrack = (e) => {
const tracks = e.streams[0].getTracks();
tracks.forEach((track) => {
if (track.kind === "video") {
setRemoteVideoStream(new MediaStream([track]));
} else if (track.kind === "audio") {
// Handle the remote audio stream here
}
});
};
然后修改 pc.onicecandidate 函数以发出音频和视频的 ICE 候选者
pc.onicecandidate = ({ candidate }) => {
s.emit("iceCandidateReply", { candidate });
};
完成所有这些服务器端代码后,请确保音频和视频的 ICE 候选项得到正确处理并传输给远程用户。