Какой самый простой способ непрерывной выборки из линейного входа с использованием C # - PullRequest
8 голосов
/ 23 октября 2008

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

Ответы [ 4 ]

3 голосов
/ 23 октября 2008

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

2 голосов
/ 23 октября 2008

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

2 голосов
/ 23 октября 2008

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

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

1 голос
/ 23 октября 2008

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

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

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

...