Запись и воспроизведение звука - C#
Формулировка задачи:
всем привет! хочу добавить в программу запись и воспроизведение звука, что то типа диктофона, никто не может поделиться исходником или сказать как записывать и сохранять звук с микрофона а потом воспроизводить его
Решение задачи: «Запись и воспроизведение звука»
textual
Листинг программы
using NAudio.Wave; using NAudio.FileFormats; using NAudio.CoreAudioApi; using NAudio; namespace SpeechProject { public partial class Form1 : Form { // WaveIn - поток для записи WaveIn waveIn; //Класс для записи в файл WaveFileWriter writer; //Имя файла для записи string outputFilename = "имя_файла.wav"; public Form1() { 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(); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д