【问题标题】:webRTC losses stream when a phone call is answered接听电话时 webRTC 丢失流
【发布时间】:2020-07-06 13:38:10
【问题描述】:

在两个用户在视频通话中连接的场景中,其中一个用户接到电话,他接听了电话。这会阻止正在进行的 webRTC 流并且呼叫会话结束。

那么有没有一种方法可以让我们同时保持 Steam 和通话会话,并在该人返回我们的应用程序后恢复视频通话。

我正在使用 QuickBlox js-Sdk 拨打电话。

下面是用来发起调用的sn-p代码。

var userCredentials = {
      userId: 'XXXXXX',
      password: "XXXXXXX"
    };

    QB.chat.connect(userCredentials, function (error, contactList) {

      var calleesIds = [XXXXX];
      var sessionType = QB.webrtc.CallType.VIDEO;
      var session = QB.webrtc.createNewSession(calleesIds, sessionType);

      this.userAuthService.markBusy(XXXXX).subscribe(data => data);
      var mediaParams = {
        audio: true,
        video: true,
        options: {
          muted: true,
          mirror: true
        },
        elemId: "selfStream"
      };

      session.getUserMedia(mediaParams, function (err, stream) {
        if (err) {
          console.log('getUserMedia err', err);
        } else {
          console.log('getUserMedia succ', stream);

          // make call
          var extension = {};
          session.call(extension, function (error) {
            console.log('call error: ', error);
          });
        }
      });

    });

并在另一端接听电话。

QB.webrtc.onCallListener = function (session, extension) {
          session.getUserMedia(self.getMediaParams('selfStream'), function (err, stream) {
      if (err) {
        console.log('getUserMedia err', err);
      } else {
        self.callSession.accept(self.callExt);
      }
     });
    };

我在其他一些 webApps 中也看到了同样的问题,是否有针对此问题的修复/解决方法,在此先感谢。

【问题讨论】:

    标签: javascript webrtc quickblox phone-call


    【解决方案1】:

    通过在远程用户的流上添加一个事件来解决这个问题。如果流为空,它将每秒开始检查流,持续 2 分钟,如果流未在 2 分钟内恢复,则呼叫将被断开。否则我将使用恢复的流并删除 timeInterval 以检查每一秒。

    【讨论】:

      猜你喜欢
      • 2011-12-01
      • 1970-01-01
      • 2018-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多