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

StackOverflow https://stackoverflow.com/questions/228659

Вопрос

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

Это было полезно?

Решение

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

Другие советы

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top