如何解决使用JsSIP错误的媒体描述将媒体流绑定到<Video>元素
我一直在尝试使用JsSIP
创建一个简单的视频通话界面,到目前为止,我仅设法发起了视频通话,并且接收方获得了我的音频和视频流,但是当我尝试将流(本地或远程)添加到页面中的<video>
元素时,我收到错误"Bad Media Description"
。
我的代码如下:
const address = "my.address.com";
const pass = "pass";
const callee = "id2";
const user = "id1";
const sockets = [];
const localStream = new MediaStream();
const config = {
sockets: sockets,uri: `sip:${user}@${address}`,password: pass
};
const agent = new JsSIP.UA(config);
const servers = {
iceServers: [
{urls:"stun:stun.l.google.com:19302"}
]
};
const options = {
pcConfig: servers,mediaConstraints: {
audio: true,video: true
}
};
document.getElementById("localVideo").srcObject = localStream;
document.getElementById("buttonCall").addEventListener("click",call);
sockets.push(
new JsSIP
.WebSocketInterface(`wss://${address}:443/ws`)
);
agent.start();
agent.on("newRTCSession",function(data){
let dataSession = data.session;
dataSession.on("confirmed",function(e){
let localTracks = dataSession.connection.getSenders();
localStream.addTrack(localTracks[0].track);
localStream.addTrack(localTracks[1].track);
console.log(e);
document.getElementById("localVideo").play();
});
});
function call() {
agent
.call(
`sip:${callee}@${address}`,options
);
}
如果有人能指出正确的方法来实现这一目标,我将不胜感激。
解决方法
我已经解决了,我的问题是我正在使用Vue,因此通过在我的function
函数中包含mounted()
,对this
的引用已被覆盖,解决方案是像这样通过箭头功能function
来更改这些() => {}
:
agent.on("newRTCSession",(data) => {
let dataSession = data.session;
dataSession.on("confirmed",() => {
let localTracks = dataSession.connection.getSenders();
localStream.addTrack(localTracks[0].track);
localStream.addTrack(localTracks[1].track);
console.log(e);
this.$refs.localVideo.play();
});
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。