2

我正在研究响应中的在线会议代码。我使用 simple-peer 作为 WebRTC 包装器,我从 simple-peer-react 开始并在它之上构建。我现在正在尝试在连接已经处于活动状态时向对等方动态添加流/轨道。流来自视频,为此我捕获流并将其传递给对等管理代码以提取和添加轨道(请参见下面的代码)。我期望,当轨道添加成功时,它将出现在与它一起传递的流中的对等对象中。然而,这不会发生。此外,连接对等方一侧的“跟踪”事件不会触发。

我想指出,所有其他简单对等 (WebRTC) 代码都可以正常工作:建立与对等点的视频连接、动态添加对等点、通过数据通道发送和接收数据。

我究竟做错了什么?(见下面的代码)

非常感谢,亚历克斯

这里的代码:

  1. 从视频对象的引用中获取流
 buttonCallback = () => {
    // ref points to video component, with video loaded. Stream contains two MediaStreamTracks
    const stream = this.localVideoRef.current.captureStream(); 
    // forward to peer connection management
    this.props.addTracksToPeerFcn(stream) // points to addTracksToPeerFcn
  }
  1. 尝试将曲目添加到对等体
    addTracksToPeerFcn(stream){
      //peers contains all connected peers. So iterate over it and try to add the captured stream to it.
      Object.entries(this.state.peers).map(entry => { 
        let [peerId, peer] = entry
        console.log('Adding tracks to peer', peerId, peer, stream)
        
        let vidtracks = stream.getVideoTracks()
        let audtracks = stream.getAudioTracks()

        console.log('Track: ', vidtracks) // Check to make sure track exists: it does
        console.log('Track: ', audtracks)

        peer.addTrack(vidtracks[0], stream)
        peer.addTrack(audtracks[0], stream)

        // Check for added streams: none. 
        console.log('Streams now: ', peer.streams)

        // Also: checking for added tracks in current or other streams: none
        // (not in sample code)
      })
    }

4

1 回答 1

1

几天后,我自己找到了答案:我使用的 simple-peer 的实现是旧版本(9.1.1)。我怀疑(未经证实)此版本存在与向同行添加曲目和流相关的错误。升级到最新版本后,问题得到解决。

于 2020-08-18T07:18:29.180 回答