Я новичок в webRTC и пытаюсь создать приложение для потоковой передачи видео. Сигнализация реализуется через вебсокеты.
При запуске приложения я не могу понять, почему не запускается функция lc.ontrack. Соединение между узлами установлено правильно, оба могут отправлять и получать сообщения после соединения.
Пожалуйста помоги.
const lc = new RTCPeerConnection(servers );
const dc = lc.createDataChannel("channel");
lc.addEventListener("track", e => {
console.info("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.info("Received becomeClient1 event");
remoteStream = new MediaStream();
document.getElementById("user-2").srcObject = remoteStream;
socket.on("notifyClient1",() =>{
console.info("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.info("tracks added")
});
lc.onicecandidate = e => {console.info("new ice candidate " +
JSON.stringify(lc.localDescription))
socket.emit("recieveCLient1SDP",JSON.stringify(lc.localDescription))
}
dc.onmessage = e => console.info("just got a message" + e.data);
dc.onopen = e => {
console.info("connection opened cl1")
dc.send("heyyyyyy")
};
lc.createOffer().then(o => {
lc.setLocalDescription(o)
console.info(o)
}).then(a => console.info("set successfully"));
})
socket.on("recieveAnswertoClient1", answer =>{
console.info("+++++"+ JSON.parse(answer))
lc.setRemoteDescription(JSON.parse(answer))
})
});
Консоль печатает «добавленные треки» два раза, как показано на изображении.
но прослушиватель событий не вызывается.
Спасибо.
Это ожидаемое поведение: событие отслеживания срабатывает только для удаленных дорожек.
Вам не нужно вносить изменения, вам нужно перестать думать, что вы получаете событие трека для добавленного вами трека.
понял сейчас! спасибо, что развеяли эту глупую путаницу😅
привет, извините за беспокойство. Можете ли вы помочь с этим? stackoverflow.com/questions/78426630/…
не могли бы вы объяснить немного подробнее? какие изменения мне следует внести?