public async void RecordAudioToFile(string _path = "1.wav") { if (_microphone == null) { SetRecorder(); } if (FinishRecord == null) { throw new Exception("FinishRecord function not set!"); } if (_path == null) { throw new ArgumentNullException("Error! Argument path is null!"); } else if (_path != "1.wav") { RecordPath = _path; } Task t = new Task(OnListeningAsync); try { _fileStream = new FileStream(RecordPath, FileMode.OpenOrCreate, FileAccess.Write); _audioSaver = new WaveEncoder(); _audioSaver.Open(_fileStream); IsRecordContinue = true; _microphone.Start(); t.Start(); await t; _microphone.WaitForStop(); } catch (Exception e) { Console.WriteLine("Exception: " + e.Message); } finally { t.Dispose(); _microphone.Dispose(); _audioSaver?.Close(); _fileStream?.Close(); IsRecordContinue = false; } }
public void StopRecording() { if (IsRecording()) { MergeAudioAndVideo(); } if (videoFileWriter != null) { videoFileWriter.Close(); videoFileWriter.Dispose(); videoFileWriter = null; } if (audioFileWriter != null || waveEncoder != null) { waveEncoder.Close(); waveEncoder = null; audioFileWriter = null; } }