updateMicLevel function
Updates the microphone audio level periodically.
This function retrieves stats from the audio producer's RTP sender every 1 second,
calculates the audio level, and calls the provided updateAudioLevel
callback.
Parameters:
audioSender
: The RTCRtpSender instance for the audio producer.updateAudioLevel
: A callback function to handle the updated audio level.
Example usage:
updateMicLevel(audioSender, (level) {
print('Current audio level: $level');
});
Implementation
void updateMicLevel(
Producer? audioProducer, void Function(double level) updateAudioLevel) {
if (audioProducer == null) {
return;
}
final audioSender = audioProducer.rtpSender;
Timer.periodic(const Duration(seconds: 1), (timer) async {
try {
final stats = await audioSender?.getStats();
if (stats == null) {
return;
}
for (var report in stats) {
if (report.type == 'media-source' &&
report.values['audioLevel'] != null) {
final double audioLevel = report.values['audioLevel'] as double;
final double newLevel = 127.5 + (audioLevel * 127.5);
updateAudioLevel(newLevel);
}
}
} catch (_) {
// Handle error if showAlert is available
}
});
}