0

我们使用 React Native WebRTC 和 Janus Gateway 创建一个应用程序。它按需要工作。我们的应用程序基于一键通。因此,当处于监听模式的用户需要为其他应用打破麦克风时。并在有人按下发言按钮时收回。

破坏麦克风:

if (!globalTrack) {
     globalTracks = config.myStream.getTracks();
}
config.myStream.getTracks().forEach(t => {
    config.myStream.removeTrack(t);
});

找回轨道:

globalTracks.forEach(t => {
    config.myStream.addTrack(t);
});

pluginHandle.createOffer({
    media: { addVideo: true },
    success: function(jsep) {
        Janus.debug(jsep);
        pluginHandle.send({message: {audio: true, video: false}, "jsep": jsep });
    },
    error: function(error) {
        console.log("WebRTC error... " + JSON.stringify(error));
    }
});

// also I have try this:

devices = await mediaDevices.getUserMedia({audio: true, video: false})
// devices output https://pastebin.ubuntu.com/p/KQqBq2QRy3/
devices._tracks.forEach(t => {
    config.myStream.addTrack(t);
}); 

pluginHandle.createOffer({
    media: {audio: {deviceId: devices._tracks[0]['id']}, replaceAudio: true},
    success: function(jsep) {
        pluginHandle.send({message: {audio: true, video: false}, "jsep": jsep});
    },
    error: function(error) {
        console.log(("WebRTC error... " + JSON.stringify(error));
    }
});

问题

问题:例如:当电话打来电话并接听时。即使重新启动应用程序,用户的声音也不再传递。

在 Janus Gateway 上,一切正常。我认为问题在于重新谈判。

  • 问题仅发生在 Android 手机上。并在强制停止应用程序后工作。

当我在房间里讲话时,Janus 网关日志:

There's a message for JANUS AudioBridge plugin
Setting muted property: true (room 20, user 2301490876606211)
Notifying participant 329012611897879 (kardan)
Sending event to transport...
  >> 0 (Success)
4

1 回答 1

0

我们找不到通用的解决方案。

现在重新启动应用程序适用于react-native-restart

于 2020-09-04T11:10:53.873 回答