JSSIP如何在音频通话与视频通话之间切换

时间:2020-01-06 14:28:43

标签: reactjs electron webrtc jssip

我是 JSSIP 的新手。我需要在通话过程中将音频通话切换为视频通话

const session = userAgent.call(destinationNumber, {
      mediaConstraints: {
        audio: true,
        video: false
      },
      pcConfig: {
        iceServers: [{ urls: Config.STUN_SERVER }]
      }
    });

这是我发起音频通话的方式。如何在通话之间切换到视频通话?

1 个答案:

答案 0 :(得分:0)

您可以通过技巧来启动视频通话,但您可以放置​​一些虚拟的“静音”视频轨道,而不是放置真实的视频轨道:

function createSilentVideoTrack() {
          const canvas = document.createElement("canvas");
          canvas.width = 50;
          canvas.height = 30;
          canvas.getContext("2d").fillRect(0, 0, canvas.width, canvas.height);
          animateCanvas(canvas);
          const stream = canvas.captureStream(1);
          const tracks = stream.getTracks();
          const videoTrack = tracks[0];
          return videoTrack;
        }

当您需要启用视频时,只需将虚拟视频轨道替换为真正的视频轨道即可:

navigator.mediaDevices.getUserMedia(constraints).getVideoTracks()[0].then(track => {
        connection.getSenders().filter(sender => sender.track !== null && sender.track.kind === "video").forEach(sender => {
          sender.replaceTrack(track);
        });