接听 phone 呼叫时 webRTC 丢失流
webRTC losses stream when a phone call is answered
在视频通话中两个用户连接的场景中,其中一个接到 phone 电话,他接听了电话。这会阻止正在进行的 webRTC 流并且通话会话结束。
那么,有没有一种方法可以让我们同时保持 Steam 和通话会话,并在 return 加入我们的应用程序后恢复视频通话。
我正在使用 QuickBlox js-Sdk 拨打电话。
下面是启动调用的附加代码片段。
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 中也看到了同样的问题,是否有针对此问题的 fix/workaround,在此先感谢。
通过在远程用户的流中添加一个事件来解决这个问题。如果流为空,它将开始每秒检查一次流,持续 2 分钟,如果流未在 2 分钟内恢复,则呼叫将断开。否则我将使用恢复的流并删除 timeInterval
以每秒检查一次。
在视频通话中两个用户连接的场景中,其中一个接到 phone 电话,他接听了电话。这会阻止正在进行的 webRTC 流并且通话会话结束。
那么,有没有一种方法可以让我们同时保持 Steam 和通话会话,并在 return 加入我们的应用程序后恢复视频通话。
我正在使用 QuickBlox js-Sdk 拨打电话。
下面是启动调用的附加代码片段。
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 中也看到了同样的问题,是否有针对此问题的 fix/workaround,在此先感谢。
通过在远程用户的流中添加一个事件来解决这个问题。如果流为空,它将开始每秒检查一次流,持续 2 分钟,如果流未在 2 分钟内恢复,则呼叫将断开。否则我将使用恢复的流并删除 timeInterval
以每秒检查一次。