Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 通过react中的简单对等添加流和轨迹_Reactjs_Webrtc_Simple Peer - Fatal编程技术网

Reactjs 通过react中的简单对等添加流和轨迹

Reactjs 通过react中的简单对等添加流和轨迹,reactjs,webrtc,simple-peer,Reactjs,Webrtc,Simple Peer,我正在react中编写在线会议代码。我使用simple peer作为WebRTC包装器,从simple peer react开始,并在此基础上构建。我现在正在尝试在连接已处于活动状态时向对等方动态添加流/轨迹。该流来自一个视频,为此我捕获该流并将其传递给对等管理代码,以提取和添加曲目(请参见下面的代码)。 我所期望的是,当轨迹成功添加时,它将出现在随轨迹一起传递的流中的对等对象中。然而,这并没有发生。此外,连接的对等方一侧的“跟踪”事件不会触发 我想指出的是,所有其他简单对等(WebRTC)代码

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

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

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

提前多谢了, 亚历克斯

代码如下:

  • 从视频对象的引用中获取流
  • 正在尝试将曲目添加到对等曲目

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

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