Example #1
0
        private void OnRecordingStopped(object sender, StoppedEventArgs err)
        {
            if (err.Exception != null)
            {
                InfoMessage?.Invoke(this, $"Ошибка: {err.Exception.Message}");
            }

            ffmpegProcess?.StandardOutput.Close();
            ffmpegProcess?.StandardInput.Close();
            ffmpegProcess?.Kill();

            _audioCapture.RecordingStopped -= OnRecordingStopped;
            _audioCapture.DataAvailable    -= OnDataAvailable;


            _audioCapture.Dispose();
            _audioCapture            = null;
            _threadSafeBoolBackValue = 0;

            Task.Run(() => { _transportService.SendFinalData(); }).Wait();
            Task.Run(() => { _transportService.CloseConnection(); }).Wait();
            InfoMessage?.Invoke(this, "Запись остановлена");
            RecordLevel?.Invoke(this, 0.0F);
            RecordStopped?.Invoke(this, EventArgs.Empty);
        }
Example #2
0
        private void OnDataAvailable(object sender, WaveInEventArgs waveInEventArgs)
        {
            var ffmpegIn = ffmpegProcess.StandardInput.BaseStream;

            RecordLevel?.Invoke(this, CalculateRecordLevel(waveInEventArgs));
            ffmpegIn.Write(waveInEventArgs.Buffer, 0, waveInEventArgs.BytesRecorded);

            Task.Run(async() => await ProcessData());
        }