createMicrophoneAudioTrack static method

dynamic createMicrophoneAudioTrack({
  1. String? microphoneId,
  2. CustomAudioTrackConfig encoderConfig = CustomAudioTrackConfig.speech_standard,
  3. 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;
}