.NET 4.x Запись звука c#

Узнай цену своей работы

Формулировка задачи:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
using System.Windows;
using System.IO;
using NAudio.Wave;
using NAudio.FileFormats;
using NAudio.CoreAudioApi;
using NAudio;
 
namespace SpeechProject
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        // WaveIn - поток для записи
        WaveIn waveIn;
        //Класс для записи в файл
        WaveFileWriter writer;
        //Имя файла для записи
        string outputFilename = "Rec.wav";
 
        public MainWindow()
        {
            InitializeComponent();
        }
 
        void waveIn_DataAvailable(object sender, WaveInEventArgs e)
        {
            if (this.InvokeRequired)
            {
                this.BeginInvoke(new EventHandler<WaveInEventArgs>(waveIn_DataAvailable), sender, e);
            }
            else
            {
                //Записываем данные из буфера в файл
                writer.WriteData(e.Buffer, 0, e.BytesRecorded);
            }
        }
 
        //Завершаем запись
        void StopRecording()
        {
            MessageBox.Show("StopRecording");
            waveIn.StopRecording();
        }
        //Окончание записи
        private void waveIn_RecordingStopped(object sender, EventArgs e)
        {
            if (this.InvokeRequired)
            {
                this.BeginInvoke(new EventHandler(waveIn_RecordingStopped), sender, e);
            }
            else
            {
                waveIn.Dispose();
                waveIn = null;
                writer.Close();
                writer = null;
            }
        }
        //Начинаем запись
        private void button1_Click(object sender, EventArgs e)
        {
        try
        {
            MessageBox.Show("Start Recording");
            waveIn = new WaveIn();
            //Дефолтное устройство для записи (если оно имеется)
            waveIn.DeviceNumber = 0;
           //Прикрепляем к событию DataAvailable обработчик, возникающий при наличии записываемых данных
            waveIn.DataAvailable += waveIn_DataAvailable;
            //Прикрепляем обработчик завершения записи
            waveIn.RecordingStopped += new EventHandler(waveIn_RecordingStopped);
            //Формат wav-файла - принимает параметры - частоту дискретизации и количество каналов(здесь mono)
            waveIn.WaveFormat = new WaveFormat(8000, 1);
            //Инициализируем объект WaveFileWriter
            writer = new WaveFileWriter(outputFilename, waveIn.WaveFormat);
            //Начало записи
            waveIn.StartRecording();
            }
            catch (Exception ex)
        { MessageBox.Show(ex.Message); }
        }
 
        //Прерываем запись
        private void button2_Click(object sender, EventArgs e)
        {
            if (waveIn != null)
            {
                StopRecording();
            }
        }

    }
}
Есть вот такой код. Но компилятор ругаетися на эти слова
InvokeRequired
 
BeginInvoke

Решение задачи: «.NET 4.x Запись звука c#»

textual
Листинг программы
InvokeRequired
 
BeginInvoke

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.867 из 5