我是 webRTC 的新手,正在尝试制作一个视频流应用程序。信令是通过 websocket 实现的。
运行我的应用程序时,我无法弄清楚为什么 lc.ontrack 函数没有被触发。对等点之间的连接已正确建立,连接后双方都可以发送和接收消息。
请帮忙。
const lc = new RTCPeerConnection(servers );
const dc = lc.createDataChannel("channel");
lc.addEventListener("track", e => {
console.log("Track received:", e.track);
// Add the track to the remote stream
if (e.streams && e.streams[0]) {
remoteStream.addTrack(e.track);
}
});
// --------------------------------------------------------------------------------------------------------------------------------
socket.on("becomeClient1", () => {
console.log("Received becomeClient1 event");
remoteStream = new MediaStream();
document.getElementById("user-2").srcObject = remoteStream;
socket.on("notifyClient1",() =>{
console.log("cliebt2 joined++++")
let init = async() => {
localStream = await navigator.mediaDevices.getUserMedia({video:true,audio:true})
document.getElementById("user-1").srcObject = localStream;
}
init()
localStream.getTracks().forEach(track => {
lc.addTrack(track,localStream)
console.log("tracks added")
});
lc.onicecandidate = e => {console.log("new ice candidate " +
JSON.stringify(lc.localDescription))
socket.emit("recieveCLient1SDP",JSON.stringify(lc.localDescription))
}
dc.onmessage = e => console.log("just got a message" + e.data);
dc.onopen = e => {
console.log("connection opened cl1")
dc.send("heyyyyyy")
};
lc.createOffer().then(o => {
lc.setLocalDescription(o)
console.log(o)
}).then(a => console.log("set successfully"));
})
socket.on("recieveAnswertoClient1", answer =>{
console.log("+++++"+ JSON.parse(answer))
lc.setRemoteDescription(JSON.parse(answer))
})
});
控制台打印“添加的曲目”两次,如图所示
但是事件监听器没有被调用。
谢谢你。
这是预期的行为,跟踪事件仅针对远程跟踪触发。