我正在开发一个用于电话呼叫的web应用程序,使用sip.js进行信令,使用webrtc进行媒体管理。有了浏览器,一切都能完美运行。现在,我们正试图将其开发用于使用Electron(Chromium(的台式机和使用ionic/codova的移动设备。对于IOS cordova插件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(不支持sip.js 0.8新api,而则支持所有最新版本的主要浏览器。
有关0.7.x之后的更改,请参阅GitHub 上的发布说明
会话描述处理程序将替换媒体处理程序。有关详细信息,请参阅新文档。这是API从0.7.X.的突破性变化
这就是你得到这个的原因
sip.js:516 TypeError: pc.getSenders is not a function
因为当时(电子1.8.4/Chrome 59.0.30071.115(这个功能还没有实现。
CHROME WEBRTC M64
PSA:addTrack((、removeTrack((、ontrack和getSenders((
RTP媒体API的大部分都在提供符合规范的方式来处理RTCPeerConnection的流和轨道。
新的API虽然还没有完全功能化(此处有更多详细信息(,但允许应用程序远离传统的addStream((/removeStream((/getLocalStreams((。
添加到RTCPeerConnection:addTrack((、removeTrack((、getSenders((和ontrack。
新接口:RTCRtpSender(仅限轨道属性(。