尝试调用另一个对等方时出现 PeerJS 错误:无法在"RTCPeerConnection"上执行'addStream':参数 1 不属于类型 'MediaStream'



我正在使用PeerJS成功地建立两个对等体之间的连接,但每当我尝试将MediaStream对象传递给.call函数时,我都会得到此错误:

在'RTCPeerConnection'上执行'addStream'失败:参数1是不属于'MediaStream'类型

其他一切都很好,连接确实建立了,两个对等体通过'open'事件接收来自彼此的消息。唯一不能工作的是peer.call()函数。请求允许后,麦克风被正确捕获。

我在这里犯了什么错误吗?我很感激任何帮助。谢谢你。

下面是我的代码:
var media;
jQuery(document).ready(function() {
  var peer = new Peer({
    key: 'xxxxxxxxxxxxx'
  });
  media = navigator.mediaDevices.getUserMedia({
    audio: true,
    video: false
  });
  peer.on('open', function(id) {
    console.log('My peer ID is: ' + id);
  });
  var conn = peer.connect(callID);
  conn.on('open', function() {
    // Receive messages
    conn.on('data', function(data) {
      console.log('Received', data);
    });
    // Send messages
    conn.send('Hello!');
  });
  console.log(typeof(media));
  var call = peer.call(callID, media);
  peer.on('error', function(err) {
    console.log(err);
  });
});

我很想看看console.log(typeof(media));的输出。

根据MDN网站,似乎下面一行将返回Promise而不是MediaStream:

media = navigator.mediaDevices.getUserMedia({audio: true, video: false});

下面的代码应该可以工作:

var media;
jQuery(document).ready(function() {
  var peer = new Peer({
    key: 'xxxxxxxxxxxxx'
  });
  navigator.mediaDevices.getUserMedia({
      audio: true,
      video: false
    })
    .then(function(mediaStream) {
      peer.on('open', function(id) {
        console.log('My peer ID is: ' + id);
      });
      var conn = peer.connect(callID);
      conn.on('open', function() {
        // Receive messages
        conn.on('data', function(data) {
          console.log('Received', data);
        });
        // Send messages
        conn.send('Hello!');
      });
      console.log(typeof(media));
      var call = peer.call(callID, mediaStream);
      peer.on('error', function(err) {
        console.log(err);
      });
    });
});