Лучшая практика для аудио C++ получает API в соответствии с Linux?

Я должен создать приложение C++ с простой аудиозаписью от функциональности микрофона.

Я не могу сказать, что нет достаточного количества аудио API, чтобы сделать это! Импульс, ALSA,/dev/dsp, OpenAL, и т.д. Мой вопрос - то, что текущая "Лучшая практика" API?

Импульс кажется поддерживаемым большинством современных дистрибутивов, но кажется почти лишенным документации. OpenAL будет поддерживаться через различные дистрибутивы, или это слишком неясно? Я скучал по кому-либо?
Разве нет ли простого ответа?

9
задан BЈовић 3 February 2012 в 10:28
поделиться

3 ответа

GStreamer предоставит вам и конечному пользователю максимальную гибкость в отношении захвата звука, но его кроссплатформенная жизнеспособность не так уж велика, особенно в OS X.

0
ответ дан 3 November 2019 в 07:12
поделиться

У Леннарта Поттеринга есть руководство здесь:

http://0pointer.de/blog/projects/guide-to-sound-apis

в основном используйте "безопасное" подмножество alsa, тогда все остальные важные подмножества тоже будут работать.

За исключением того, что OpenAL работает в Linux

EDIT: Также pulseaudio имеет достаточно хорошую документацию, сгенерированную doxygen здесь и некоторые другие материалы здесь и некоторые утилиты являются хорошими примерами, вы можете увидеть их в gitweb здесь

Также я написал некоторый код, который использует pulse для ввода звука, вы можете посмотреть на него здесь, однако я не уверен, что я обрабатываю все полностью правильно, и я знаю, что мне не хватает кода для обработки некоторых ситуаций. ... но это должно помочь вам начать, если вы выберете pulse.

4
ответ дан 3 November 2019 в 07:12
поделиться

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

для наибольшей простоты программирования и широчайшей аудитории я бы выбрал gstreamer, поскольку он быстр и прост, хорошо интегрирован в gnome и ubuntu и поддерживает широкий спектр аудиоподсистем и конфигураций. он очень гибкий.

например, команда:

gst-launch autoaudiosrc ! audioconvert ! flacenc ! filesink location="foo.flac"

создаст файл .flac с микрофонного входа, независимо от аудиосистемы (Pulse, ALSA, ESD ...). эквивалентный конвейер можно написать с помощью связки c / gobject, как описано здесь.

p.s для выполнения вышеуказанной команды требуется пакет gstreamer-tools

1
ответ дан 3 November 2019 в 07:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: