Лучшая практика для C ++ API захвата звука под Linux? - PullRequest
8 голосов
/ 26 мая 2010

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

Я не могу сказать, что для этого не хватает аудио-API! Pulse, ALSA, / dev / dsp, OpenAL и т. Д. У меня такой вопрос, каков текущий API "Best Practice"?

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

Ответы [ 3 ]

4 голосов
/ 27 мая 2010

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

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

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

Запрет, что OpenAL работает в Linux

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

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

1 голос
/ 28 мая 2010

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

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

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

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

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

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

0 голосов
/ 26 мая 2010

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

...