微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用JsSIP错误的媒体描述将媒体流绑定到<Video>元素

如何解决使用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 举报,一经查实,本站将立刻删除。