[mirotalksfu] - improve AudioLevelObservation
هذا الالتزام موجود في:
@@ -11,6 +11,7 @@ module.exports = class Room {
|
|||||||
this.router = null;
|
this.router = null;
|
||||||
this.audioLevelObserver = null;
|
this.audioLevelObserver = null;
|
||||||
this.audioLevelObserverEnabled = false;
|
this.audioLevelObserverEnabled = false;
|
||||||
|
this.audioLastUpdateTime = 0;
|
||||||
this.io = io;
|
this.io = io;
|
||||||
this._isLocked = false;
|
this._isLocked = false;
|
||||||
this._roomPassword = null;
|
this._roomPassword = null;
|
||||||
@@ -52,10 +53,21 @@ module.exports = class Room {
|
|||||||
});
|
});
|
||||||
|
|
||||||
this.audioLevelObserver.on('volumes', (volumes) => {
|
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];
|
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) {
|
if (audioVolume > 2) {
|
||||||
//log.debug('PEERS', this.peers);
|
// log.debug('PEERS', this.peers);
|
||||||
this.peers.forEach((peer) => {
|
this.peers.forEach((peer) => {
|
||||||
peer.producers.forEach((peerProducer) => {
|
peer.producers.forEach((peerProducer) => {
|
||||||
if (
|
if (
|
||||||
@@ -64,17 +76,13 @@ module.exports = class Room {
|
|||||||
peer.peer_audio === true
|
peer.peer_audio === true
|
||||||
) {
|
) {
|
||||||
let data = { peer_name: peer.peer_name, peer_id: peer.id, audioVolume: audioVolume };
|
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.broadCast(0, 'audioVolume', data);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
this.audioLevelObserver.on('silence', () => {
|
|
||||||
//log.debug('audioLevelObserver', { volume: 'silence' });
|
|
||||||
return;
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
addProducerToAudioLevelObserver(producer) {
|
addProducerToAudioLevelObserver(producer) {
|
||||||
|
|||||||
@@ -2816,7 +2816,7 @@ class RoomClient {
|
|||||||
if (consumerAudioBtn) consumerAudioBtn.style.color = audioColor;
|
if (consumerAudioBtn) consumerAudioBtn.style.color = audioColor;
|
||||||
if (pbProducer) pbProducer.style.height = '0%';
|
if (pbProducer) pbProducer.style.height = '0%';
|
||||||
if (pbConsumer) pbConsumer.style.height = '0%';
|
if (pbConsumer) pbConsumer.style.height = '0%';
|
||||||
}, 4000);
|
}, 2000);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ####################################################
|
// ####################################################
|
||||||
|
|||||||
المرجع في مشكلة جديدة
حظر مستخدم