尝试调用另一个对等点时出现 PeerJS 错误:无法在 'RTCPeerConnection' 上执行 'addStream':参数 1 不是 'MediaStream' 类型
PeerJS error when trying to call another peer: Failed to execute 'addStream' on 'RTCPeerConnection': parameter 1 is not of type 'MediaStream'
我正在使用 PeerJS 成功地在两个对等点之间建立连接,但是每当我尝试将 MediaStream 对象传递给 .call
函数时,我都会收到此错误:
Failed to execute 'addStream' on 'RTCPeerConnection': parameter 1 is
not of type '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 website,似乎以下行将 return 一个 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);
});
});
});
我正在使用 PeerJS 成功地在两个对等点之间建立连接,但是每当我尝试将 MediaStream 对象传递给 .call
函数时,我都会收到此错误:
Failed to execute 'addStream' on 'RTCPeerConnection': parameter 1 is not of type '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 website,似乎以下行将 return 一个 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);
});
});
});