有谁知道如何在电子版(桌面应用程序)或离子版(移动应用程序)中使用0.8版或更高版本的sip.js?

时间:2018-11-06 15:46:30

标签: ionic-framework electron webrtc sip

我正在开发一个用于电话通话的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也会发生类似的事情...

早上好

1 个答案:

答案 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 ),该功能尚未实现。

CHROME WEBRTC M64

  

PSA:addTrack(),removeTrack(),ontrack和getSenders()

     

RTP Media API的重要部分已经以符合规范的方式处理RTCPeerConnection的流和轨道。

     

新的API尚未完全发挥功能(在此处有更多详细信息),允许应用程序从旧的addStream()/ removeStream()/ getLocalStreams()移开。

     

已添加到RTCPeerConnection:addTrack(),removeTrack(),getSenders()和ontrack。

     

新界面:RTCRtpSender(仅track属性)。