Add extra checks

To be able to change audio device, if the first/default device couldn't start.
master
Mészáros Mihály 2020-03-15 01:42:13 +01:00
parent c8dd705530
commit 8c042c3211
1 changed files with 11 additions and 8 deletions

View File

@ -890,6 +890,7 @@ export default class RoomClient
'changeAudioDevice() | new selected webcam [device:%o]', 'changeAudioDevice() | new selected webcam [device:%o]',
device); device);
if (this._micProducer && this._micProducer.track)
this._micProducer.track.stop(); this._micProducer.track.stop();
logger.debug('changeAudioDevice() | calling getUserMedia()'); logger.debug('changeAudioDevice() | calling getUserMedia()');
@ -904,8 +905,10 @@ export default class RoomClient
const track = stream.getAudioTracks()[0]; const track = stream.getAudioTracks()[0];
if (this._micProducer)
await this._micProducer.replaceTrack({ track }); await this._micProducer.replaceTrack({ track });
if (this._micProducer)
this._micProducer.volume = 0; this._micProducer.volume = 0;
const harkStream = new MediaStream(); const harkStream = new MediaStream();
@ -942,7 +945,7 @@ export default class RoomClient
store.dispatch(peerVolumeActions.setPeerVolume(this._peerId, volume)); store.dispatch(peerVolumeActions.setPeerVolume(this._peerId, volume));
} }
}); });
if (this._micProducer && this._micProducer.id)
store.dispatch( store.dispatch(
producerActions.setProducerTrack(this._micProducer.id, track)); producerActions.setProducerTrack(this._micProducer.id, track));
@ -2274,7 +2277,7 @@ export default class RoomClient
if (this._micProducer) if (this._micProducer)
return; return;
if (!this._mediasoupDevice.canProduce('audio')) if (this._mediasoupDevice && !this._mediasoupDevice.canProduce('audio'))
{ {
logger.error('enableMic() | cannot produce audio'); logger.error('enableMic() | cannot produce audio');