尝试呼叫另一个对等方时出现PeerJS错误:无法执行' addStream' on' RTCPeerConnection':参数1不属于' MediaStream'

时间:2016-10-17 18:22:57

标签: javascript jquery webrtc peerjs

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

  

无法执行' addStream' on' RTCPeerConnection':参数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);
  });
});

1 个答案:

答案 0 :(得分:1)

我有兴趣看到console.log(typeof(media));的输出。

根据MDN website,以下行似乎会返回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);
      });
    });
});