Каков самый простой способ непрерывной выборки из линейного входа с помощью С#

Я хочу постоянно сэмплировать звуковую линию моего ПК с помощью С# (затем обрабатывать эти данные). Как лучше сделать выборку?


person Venus    schedule 23.10.2008    source источник


Ответы (4)


Вы можете сделать некоторый (базовый) аудиозапись с помощью NAudio .NET Audio Library с открытым исходным кодом. Взгляните на проект NAudioDemo, чтобы увидеть простой пример записи в файл WAV с использованием функций WaveIn. NAudio также теперь включает возможность захвата звука с использованием WASAPI (Windows Vista и выше) и ASIO (если ваша звуковая карта имеет драйвер ASIO).

person Mark Heath    schedule 23.10.2008
comment
Я видел этот вопрос сегодня (2014), что-то изменилось? Есть ли в NAudio какая-то новая функция, касающаяся сэмплирования звука в реальном времени в соответствии с вопросом OP? - person heltonbiker; 23.07.2014

Существует также библиотека Alvas Audio, платная, с неприятным экраном, если вы не платит, а работает красиво. И документация хорошая, и, если вы найдете ошибку или что-то еще, поддержка тоже в порядке.

person Vinko Vrsalovic    schedule 23.10.2008

В среде .NET нет встроенных библиотек для работы со звуком, но если вы используете Win32, вы можете использовать для этого неуправляемую библиотеку, такую ​​как DirectSound.

Яньер Муньос показывает как написать полнодуплексный аудиоплеер на C#, используя waveIn через P/Invoke в CodeProject. Он упоминает управляемый DirectSound общий метод.

person Jacob Krall    schedule 23.10.2008

Управляемый DirectX поддерживает прямой захват звука и очень прост в использовании, но больше не поддерживается и был удален из DirectX SDK в прошлом году. Его по-прежнему можно получить путем установки версии SDK до августа 2007 года.

Хотя это и не соответствует вашим требованиям, более надежным подходом было бы создание сборки-оболочки C++/CLI вокруг собственного C++ DirectSound API, опять же из DirectX SDK. Затем это можно было бы вызвать непосредственно из кода C#. Это определенно более мощный и простой в сопровождении подход, несмотря на то, что он требует некоторых знаний C++ и COM.

Я использовал оба этих метода в прошлом, и они оба хорошо работают.

person Stu Mackellar    schedule 23.10.2008