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

标签 reactjs electron webrtc jssip

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

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

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

最佳答案

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

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);
        });

关于reactjs - JSSIP如何在音频通话与视频通话之间切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59613831/

相关文章:

ios - 如何在 Hybrid iOS 应用程序中实现 WebRTC?

javascript - 我需要把这个选择变成一个复选框

reactjs - 与未转换为 localIdentName 的 Storybook 连接字符串 react

javascript - 哪种是本地化的最佳实践?通过使用数据库以及 war 之外保存的缓存或属性文件

api - preload.js 中的 ipcRenderer.on 如何检测 webContents.send?

gulp - Electron 应用的实时重新加载

javascript - 部署站点时,我无权访问 navigator.mediaDevices。我该如何解决?

css - React.js 循环图片幻灯片的性能问题

webview - 如何修复 : "exports is not defined" & "require is not defined" error when importing package from vscode webview extension

javascript - 我应该为 4 人游戏使用 websockets 还是 webRTC