我正在开发一个用于电话通话的Web应用程序,该应用程序使用sip.js进行信号传输,使用webrtc进行媒体管理。使用浏览器,一切都可以完美运行。现在,我们正在尝试使用Electron(Chromium)在台式机和使用ionic / cordova的移动设备上开发它。对于IOS cordova-plugin-iosrtc具有webrtc,对于android native webrtc。两种移动环境都可以在sip 0.7上完美运行,但是在相同或更高的sip版本0.8下,都无法获取本地媒体设备。
例如,在电子中:
session.on ('trackAdded', function () {
var pc = session.sessionDescriptionHandler.peerConnection;
// Gets remote tracks
var remoteStream = new MediaStream ();
pc.getReceivers (). forEach (function (receiver) {
remoteStream.addTrack (receiver.track);
});
remoteVideo.srcObject = remoteStream;
remoteVideo.play ();
// Gets local tracks
alert (pc.getSenders ())
var localStream = new MediaStream ();
pc.getSenders (). forEach (function (sender) {
localStream.addTrack (sender.track);
});
localVideo.srcObject = localStream;
localVideo.play ();
});
错误
Tue Nov 06 2018 16:17:33 GMT+0100 (CET) |
sip.invitecontext.sessionDescriptionHandler | unable to acquire streams
LoggerFactory.print @ sip.js:516
LoggerFactory.(anonymous function) @ sip.js:530
Logger.(anonymous function) @ sip.js:525
(anonymous) @ sip.js:8816
sip.js:516 TypeError: pc.getSenders is not a function
at InviteClientContext.<anonymous> (telephoneservice.js:796)
at InviteClientContext.EventEmitter.emit (sip.js:662)
at SessionDescriptionHandlerObserver.trackAdded (sip.js:8963)
at SessionDescriptionHandler.<anonymous> (sip.js:8797)
at <anonymous>
IOS也会发生类似的事情...
早上好
答案 0 :(得分:1)
您正在使用的电子版本( 1.8.4 )不支持 sip.js 0.8新api ,而支持所有主要浏览器的最新版本 。
For changes since 0.7.x, see the release notes on GitHub
会话描述处理程序替换媒体处理程序。有关更多信息,请参见新文档。这是从0.7.X开始的API重大更改。
这就是为什么你得到这个
sip.js:516 TypeError: pc.getSenders is not a function
因为当时(电子1.8.4 / Chrome 59.0.3071.115 ),该功能尚未实现。
PSA:addTrack(),removeTrack(),ontrack和getSenders()
RTP Media API的重要部分已经以符合规范的方式处理RTCPeerConnection的流和轨道。
新的API尚未完全发挥功能(在此处有更多详细信息),允许应用程序从旧的addStream()/ removeStream()/ getLocalStreams()移开。
已添加到RTCPeerConnection:addTrack(),removeTrack(),getSenders()和ontrack。
新界面:RTCRtpSender(仅track属性)。