public static CaptureSession FromAudioInput(MMDevice mmDevice) { var recorder = new WasapiCapture(mmDevice); var session = new CaptureSession(mmDevice, recorder); recorder.DataAvailable += session.DataAvailableEvent; recorder.StartRecording(); return(session); }
private void UpdateSources() { _logger.LogInformation("Updating sources."); //Do it simple for now, clear and dispose all: foreach (var sessionsValue in _sessions) { sessionsValue.Dispose(); } _sessions.Clear(); //Then re-add all: var sources = _appSettings.CurrentValue.Devices ?? Array.Empty <AppSettings.Capture.Device>(); foreach (var source in sources) { var mmDevice = GetDevice(source); if (mmDevice is null) { var meterValues = new MeterValues(null, source); _sessions.Add(meterValues); } else { var captureSession = mmDevice.DataFlow == DataFlow.Render ? CaptureSession.FromAudioOutput(mmDevice) : CaptureSession.FromAudioInput(mmDevice); var meterValues = new MeterValues(captureSession, source); _sessions.Add(meterValues); } } _dirtySources = false; }