【问题标题】:Does anyone know how to use sip.js version 0.8 or higher with electron (desktop app) or with Ionic (mobile app)?有谁知道如何将 sip.js 版本 0.8 或更高版本与电子(桌面应用程序)或离子(移动应用程序)一起使用?
【发布时间】:2019-04-10 01:05:15
【问题描述】:

我正在开发一个用于电话呼叫的 Web 应用程序,使用 sip.js 进行信号传输,使用 webrtc 进行媒体管理。使用浏览器,一切都可以完美运行。现在我们正在尝试使用 Electron (Chromium) 为桌面开发它,并使用 ionic / cordova 为移动设备开发它。对于 IOS cordova-plugin-iosrtc 具有 webrtc 和对于 android 本机 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.8.4电子版
  • 它使用 Chrome 59.0.3071.115 如果我没记错的话,这个版本的 chrome 中的 getSenders 方法直到 Chrome 64 版才实现。检查this

标签: ionic-framework electron webrtc sip


【解决方案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

因为当时(electron 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(仅限轨道属性)。

【讨论】:

  • 你知道它在 ionic-webview 的移动应用版本中是如何工作的吗??
  • @ElLoko36 将您的 ionic/cordova 移动应用与 sip.js 0.8 输出添加到您的问题以调试您的问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-26
  • 1970-01-01
  • 2012-12-09
  • 1970-01-01
  • 2023-02-14
  • 2017-05-11
  • 2017-08-03
相关资源
最近更新 更多