NAudio. Как записать звук в массив байтов? - C#
Формулировка задачи:
Доброго времени суток. Есть код который записывает звук с микрофона и сохраняет его в файл demo.wav:
Можно ли сделать так чтобы звук сохранялся не в файл, а в массив? Для передачи на сервер
using NAudio.Wave; namespace Record { public partial class Form1 : Form { public Form1() { InitializeComponent(); } WaveIn waveIn; WaveFileWriter waveWriter; private void waveIn_DataAvailable(object sender, WaveInEventArgs e) { if (waveWriter == null) return; waveWriter.Write(e.Buffer, 0, e.BytesRecorded); waveWriter.Flush(); } private void button1_Click(object sender, EventArgs e) { waveIn = new WaveIn(); waveIn.DeviceNumber = 0; string outputFilename = @"D:/demo.wav"; waveIn.WaveFormat = new WaveFormat(44100, WaveIn.GetCapabilities(waveIn.DeviceNumber).Channels); waveIn.DataAvailable += new EventHandler<WaveInEventArgs>(waveIn_DataAvailable); waveWriter = new WaveFileWriter(outputFilename, waveIn.WaveFormat); waveIn.StartRecording(); } private void button2_Click(object sender, EventArgs e) { if (waveIn != null) { waveIn.StopRecording(); waveIn.Dispose(); waveIn = null; } if (waveWriter != null) { waveWriter.Dispose(); waveWriter = null; } } } }
подниму
Решение задачи: «NAudio. Как записать звук в массив байтов?»
textual
Листинг программы
//--Код чтения байт из файла OpenFileDialog open = new OpenFileDialog(); open.Filter = "Wave File (*.wav)|*.wav;"; if (open.ShowDialog() != DialogResult.OK) return; NAudio.Wave.WaveChannel32 wave = new NAudio.Wave.WaveChannel32(new NAudio.Wave.WaveFileReader(open.FileName)); int size = 4096; int bytes = 4; //--Массив для хранения байт, составляющих сигнал byte[] buffer = new byte[size]; //--Массив для хранения значений амплитуд сигнала double[] amps = new double[size / bytes]; while(wave.Position < wave.Length) { //--Запись байт в массив wave.Read(buffer, 0, size); for (int i = 0; i < read / bytes; i++) { //--Получить значения амплитуд сигнала amps[i] = BitConverter.ToSingle(buffer, i * bytes); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д