Webrtc 我得到一个stream.getTracks在PeerJS中不是一个函数错误。我该如何解决这个问题?

Webrtc 我得到一个stream.getTracks在PeerJS中不是一个函数错误。我该如何解决这个问题?,webrtc,call,peerjs,Webrtc,Call,Peerjs,因此,我一直在使用PeerJS制作一个p2p聊天应用程序,它在尝试聊天时工作,但当我尝试使用以下功能呼叫某人时: 被调用函数(id){ call=对等呼叫(id, navigator.mediaDevices.getUserMedia({video:false,audio:true}) ); 调用('stream',函数(stream){//B window.remoteAudio.srcObject=stream;//C window.remoteAudio.autoplay=true;//D

因此,我一直在使用PeerJS制作一个p2p聊天应用程序,它在尝试聊天时工作,但当我尝试使用以下功能呼叫某人时:

被调用函数(id){
call=对等呼叫(id,
navigator.mediaDevices.getUserMedia({video:false,audio:true})
);
调用('stream',函数(stream){//B
window.remoteAudio.srcObject=stream;//C
window.remoteAudio.autoplay=true;//D
window.peerStream=stream;//E
showConnectedContent();//F});
})
}

我从PeerJS那里得到一个错误,说
e.getTracks不是一个函数
e.getTracks
是peerJS库中的一个代码:

我一直在尝试我在互联网上找到的一切,我仍然得到这个错误。我希望有人能帮助我

编辑:我尝试了库()的更干净版本,但得到了错误
stream.getTracks()不是函数

所以我找到了解决方案,问题是我的代码错了:p

所以我创建了一个函数来调用一个Id为的人。 早些时候:

function callEm(id){
  console.log(id);
  console.log(navigator.mediaDevices.getUserMedia({video: false, audio: true}));

  call = peer.call(id,
    // window.localStream
    navigator.mediaDevices.getUserMedia({video: false, audio: true})
    );

  call.on('stream', function(stream) { // B
      window.remoteAudio.srcObject = stream; // C
      window.remoteAudio.autoplay = true; // D
      window.peerStream = stream; //E
      showConnectedContent(); //F    });
  })
  }
问题是我提供了作为媒体流的承诺,而不是实际价值。愚蠢的错误我知道

所以在一个不和谐的朋友向我指出并帮助我改变它之后, 该职能变成:

被调用函数(id){
navigator.mediaDevices.getUserMedia({video:false,audio:true})
.then(函数(流){
call=peer.call(id,流);
调用('stream',函数(stream){//B
window.remoteAudio.srcObject=stream;//C
window.remoteAudio.autoplay=true;//D
window.peerStream=stream;//E
showConnectedContent();//F});
})
})
.catch(函数(err){
日志(“错误:+err”);
})
);
}
这就解决了问题。我还没有准备好接电话,但这是一个没有任何错误的电话


我希望有人觉得这有用。

我也有同样的问题。我使用socket.io和peerJS。Socket.io向房间里的每个人广播peerJs ID。您可以通过在浏览器上快速刷新来重现此问题。peerJs版本1.3.1稳定也是如此。这个答案有用吗?错误在于我传递的是一个承诺,而不是结果。也许试着做我在答案中所做的。祝你好运