我正在使用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);
});
});
});