createMicrophoneAudioTrack static method
dynamic
createMicrophoneAudioTrack({
- String? microphoneId,
- CustomAudioTrackConfig encoderConfig = CustomAudioTrackConfig.speech_standard,
- Map<
String, bool> noiseConfig = const {},
Implementation
static createMicrophoneAudioTrack(
{String? microphoneId,
CustomAudioTrackConfig encoderConfig =
CustomAudioTrackConfig.speech_standard,
Map<String, bool> noiseConfig = const {}}) async {
Map<String, dynamic>? config = customAudioTrackConfigMap[encoderConfig];
late Map<String, dynamic> mediaConstraints;
if (!kIsWeb) {
mediaConstraints = <String, dynamic>{
"audio": {
"mandatory": {
"googEchoCancellation": noiseConfig["echoCancellation"] ??
config?["echoCancellation"] as bool,
"googNoiseSuppression": noiseConfig["noiseSuppression"] ??
config?["noiseSuppression"] as bool,
"echoCancellation": noiseConfig["echoCancellation"] ??
config?["echoCancellation"] as bool,
"googEchoCancellation2": noiseConfig["echoCancellation"] ??
config?["echoCancellation"] as bool,
"googDAEchoCancellation": noiseConfig["echoCancellation"] ??
config?["echoCancellation"] as bool,
"googAutoGainControl": noiseConfig["autoGainControl"] ??
config?["autoGainControl"] as bool,
},
'optional': microphoneId != null
? [
{
'sourceId': microphoneId,
}
]
: [],
},
"video": false
};
} else {
mediaConstraints = <String, dynamic>{
"audio": {
"googEchoCancellation": noiseConfig["echoCancellation"] ??
config?["echoCancellation"] as bool,
"googNoiseSuppression": noiseConfig["noiseSuppression"] ??
config?["noiseSuppression"] as bool,
"echoCancellation": noiseConfig["echoCancellation"] ??
config?["echoCancellation"] as bool,
"googEchoCancellation2": noiseConfig["echoCancellation"] ??
config?["echoCancellation"] as bool,
"googDAEchoCancellation": noiseConfig["echoCancellation"] ??
config?["echoCancellation"] as bool,
"googAutoGainControl": noiseConfig["autoGainControl"] ??
config?["autoGainControl"] as bool,
"deviceId": microphoneId
},
"video": false
};
}
MediaStream mediaStream =
await navigator.mediaDevices.getUserMedia(mediaConstraints);
CustomTrack customAudioTrack = CustomTrack.audioTrack(
mediaStream: mediaStream,
audioEncoderConfig: encoderConfig,
noiseConfig: noiseConfig);
return customAudioTrack;
}