我sip.js (version 0.13.7)
用于拨打语音电话。
我得到媒体流并将其附加如下:
let mediaStream
getMedia() {
if (navigator.getUserMedia) {
navigator.getUserMedia(
{ audio: true, video: false },
function(stream) {
mediaStream = stream
},
function(err) {
console.log('error in getUserMedia: ' + err.name)
}
)
} else {
console.log('getUserMedia not supported')
}
}
handleInvite(session) {
handleMedia(session)
session.accept(mediaStream)
}
handleMedia(session) {
session.on('trackAdded', function() {
var remoteStream = new MediaStream()
var pc = session.sessionDescriptionHandler.peerConnection
pc.getReceivers().forEach(receiver => {
remoteStream.addTrack(receiver.track)
})
incomingAudioEl.srcObject = remoteStream
incomingAudioEl.play()
})
}
它适用于单次通话,但我无法同时拨打多个电话,如果我尝试handleInvite()
使用新会话进行通话,则没有音频并且只能听到第一次通话。
在 sip.js 网站上没有关于如何执行此操作的好的文档,并且许多在线可用的解决方案都是以前不兼容的版本。
当我在 Google 上搜索“sip.js 多次调用”时,第一个结果是https://sipjs.com/guides/reuse-mediastreams/,这是一个不存在的页面。
注意: 我可以使用较旧的 sip 版本(即 0.7.0)同时制作两个,但不能使用最新版本。