From 7a77465f5905d3f44175d4ef911c1f7f59a5d9dc Mon Sep 17 00:00:00 2001 From: Miroslav Pejic Date: Wed, 3 Aug 2022 13:49:34 +0200 Subject: [PATCH] [mirotalksfu] - improve AudioLevelObservation --- app/src/Room.js | 24 ++++++++++++++++-------- public/js/RoomClient.js | 2 +- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/app/src/Room.js b/app/src/Room.js index 57b1a250..cb8b0501 100644 --- a/app/src/Room.js +++ b/app/src/Room.js @@ -11,6 +11,7 @@ module.exports = class Room { this.router = null; this.audioLevelObserver = null; this.audioLevelObserverEnabled = false; + this.audioLastUpdateTime = 0; this.io = io; this._isLocked = false; this._roomPassword = null; @@ -52,10 +53,21 @@ module.exports = class Room { }); this.audioLevelObserver.on('volumes', (volumes) => { + this.sendActiveSpeakerVolume(volumes); + }); + this.audioLevelObserver.on('silence', () => { + //log.debug('audioLevelObserver', { volume: 'silence' }); + return; + }); + } + + sendActiveSpeakerVolume(volumes) { + if (Date.now() > this.audioLastUpdateTime + 1000) { + this.audioLastUpdateTime = Date.now(); const { producer, volume } = volumes[0]; - let audioVolume = Math.round(Math.pow(10, volume / 85) * 10); // 1-10 + let audioVolume = Math.round(Math.pow(10, volume / 80) * 10); // 1-10 if (audioVolume > 2) { - //log.debug('PEERS', this.peers); + // log.debug('PEERS', this.peers); this.peers.forEach((peer) => { peer.producers.forEach((peerProducer) => { if ( @@ -64,17 +76,13 @@ module.exports = class Room { peer.peer_audio === true ) { let data = { peer_name: peer.peer_name, peer_id: peer.id, audioVolume: audioVolume }; - //log.debug('audioLevelObserver', data); + // log.debug('audioLevelObserver id [' + this.id + ']', data); this.broadCast(0, 'audioVolume', data); } }); }); } - }); - this.audioLevelObserver.on('silence', () => { - //log.debug('audioLevelObserver', { volume: 'silence' }); - return; - }); + } } addProducerToAudioLevelObserver(producer) { diff --git a/public/js/RoomClient.js b/public/js/RoomClient.js index c101fca8..b7d05258 100644 --- a/public/js/RoomClient.js +++ b/public/js/RoomClient.js @@ -2816,7 +2816,7 @@ class RoomClient { if (consumerAudioBtn) consumerAudioBtn.style.color = audioColor; if (pbProducer) pbProducer.style.height = '0%'; if (pbConsumer) pbConsumer.style.height = '0%'; - }, 4000); + }, 2000); } // ####################################################