添加曲目后未调用localConnection.addEventListener("track", )

问题描述 投票:0回答:1

我是 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))
  })


});

控制台打印“添加的曲目”两次,如图所示

控制台输出

但是事件监听器没有被调用。

谢谢你。

javascript node.js websocket webrtc stun
1个回答
0
投票

这是预期的行为,跟踪事件仅针对远程跟踪触发。

© www.soinside.com 2019 - 2024. All rights reserved.