Добавление обратных треков не работает на WebRTC

Мы создаем приложение с React Native WebRTC и Janus Gateway. Работает как хотел. Наше приложение основано на технологии Push-to-Talk. Поэтому, когда пользователям в режиме прослушивания необходимо отключить микрофон для других приложений. И вернуть, когда кто-нибудь нажмет кнопку, чтобы говорить.

Нарушение микрофона:

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 Gateway, который, когда я говорю в комнате:

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)

person ishak O.    schedule 25.08.2020    source источник


Ответы (1)


Мы не можем найти универсального решения.

На данный момент перезапуск приложения работает с react-native-restart

person ishak O.    schedule 04.09.2020