NAudio 1.8 Запись и воспроизведение звука

425
29 июля 2017, 03:21
List<byte> data = new List<byte>();
WaveIn waveIn = new WaveIn();
waveIn.BufferMilliseconds = 10000;
waveIn.WaveFormat = new WaveFormat(96000, 8, 2);
waveIn.DataAvailable += (s, e_) => data.AddRange(e_.Buffer);
waveIn.StartRecording();
Thread.Sleep(9000);
waveIn.StopRecording();
MessageBox.Show("Play: " + data.Count);
IWavePlayer waveOut = new WaveOut();
waveOut.Init(new RawSourceWaveStream(data.ToArray(), 0, data.Count, new WaveFormat(96000, 8, 2)));
waveOut.Play();

Каким образом я могу вести бесконечную запись? Вот устанавливаю (объясните ещё пожалуйста, зачем) BufferMilliseconds на значение времени записи. Если попробовать ставить int.MaxValue или -1, будет исключение. Как я могу вести запись бесконечно долго (например, для трансляции звука на другой компьютер)?

Так же, если кто владеет информацией о работе со звуком, прошу помочь мне разобраться в следующих подобных вопросах, с которыми может столкнуться любой при работе с NAudio:

Получение полного имени устройства аудиозахвата

Динамическое улучшение качества записи голоса

Answer 1

Решили в чате, мало ли кто столкнется:

Разделите начало и конец записи без использования: Thread.Sleep(9000); ибо блокируется обработка сообщений, в том числе и WaveIn.DataAvailable(..) BufferMilliseconds можно оставить по умолчанию.

READ ALSO
Как получить результат из UnitySendMessage

Как получить результат из UnitySendMessage

Добрый день, подскажите пожалуйста как получить результат из этого

244
c# открыть файл

c# открыть файл

есть listbox в котором отображаются папки (в папках ссылки) при нажатии на кнопку эти ссылки выводятся в другой лист бокс, вопрос как мне открыть...

388
Создание xsd файла

Создание xsd файла

ЗдравствуйтеУ меня есть отчёт в fastreport

204
Добавить поле к существующему классу (Attached Properties)

Добавить поле к существующему классу (Attached Properties)

Есть класс Line c полями Begin, EndТеперь нужно чтобы у класса Line была толщина

332