我在我的项目中使用带有星号的jsSIP。问题是我不知道如何在浏览器中用星号播放音频答案。现在我正在尝试这个
myPhone.on('newRTCSession', function(data){
var session = data.session;
session.on('peerconnection', function(e){
remoteAudio.src = window.URL.createObjectURL(e.stream);
remoteAudio.play();
});
});但是事件不会触发,我也尝试了事件"addstream",但据我所知,它在我当前的JsSIP版本(3.2.4)中被删除了。
连接到星号就行了。我开始呼叫,接收应答,然后星号必须播放音频文件,并终止呼叫。连接8秒后,它就被终止了,但是音频没有播放。以下是RTCSession.connection.remoteDescription.sdp中的答案
v=0
o=- 857805013 857805013 IN IP4 127.0.0.1
s=-
t=0 0
a=msid-semantic: WMS
m=audio 19006 RTP/SAVPF 0 8 126
c=IN IP4 95.47.143.134
a=rtcp:19007 IN IP4 95.47.143.134
a=candidate:Hc0a80068 1 udp 2130706431 192.168.0.104 19006 typ host generation 0
a=candidate:S5f2f8f86 1 udp 1694498815 95.47.143.134 19006 typ srflx raddr 192.168.0.104 rport 19006 generation 0
a=candidate:Hc0a80068 2 udp 2130706430 192.168.0.104 19007 typ host generation 0
a=candidate:S5f2f8f86 2 udp 1694498814 95.47.143.134 19007 typ srflx raddr 192.168.0.104 rport 19007 generation 0
a=ice-ufrag:218863545319313f5ed15c9b0503a7f1
a=ice-pwd:5e1dc0457efadffe13b44666585eecb9
a=fingerprint:sha-256 56:EE:4C:B8:78:88:AB:A4:C2:72:84:94:15:BE:7C:6E:D4:BD:2F:21:F1:F6:6D:68:E8:91:14:DC:94:72:75:0C
a=setup:active
a=mid:audio
a=sendrecv
a=rtcp-mux
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:126 telephone-event/8000
a=maxptime:150
a=ptime:20发布于 2018-06-26 14:35:33
有一个名为connection的属性,它在RTCSession实例中包含RTCPeerConnection实例。据我所知,它代表了远程/其他部分。
下面是一个代码示例,它展示了如何添加事件侦听器来捕获远程部件的媒体流并使用它。
session.connection.addEventListener('addstream', function (e) {
// set remote audio stream
const remoteAudio = document.createElement('audio');
remoteAudio.src = window.URL.createObjectURL(e.stream);
remoteAudio.play();
});对于来电,session.connection不是立即实例化的。因此,您需要附加另一个事件侦听器peerconnection,以捕获您在问题中提到的事件侦听器。包括这一部分,应如下所示;
session.on('peerconnection', function(data) {
data.peerconnection.addEventListener('addstream', function (e) {
// set remote audio stream
const remoteAudio = document.createElement('audio');
remoteAudio.src = window.URL.createObjectURL(e.stream);
remoteAudio.play();
});
});这里有一些链接,可以帮助您更好地理解它;
https://stackoverflow.com/questions/49550881
复制相似问题