Простой C ++ Sound API - PullRequest
       1

Простой C ++ Sound API

10 голосов
/ 02 апреля 2012

Мой коммерческий проект C ++ Linux требует одновременного проигрывания wav-файлов и тонов на отдельных уровнях громкости.Несколько примеров звуков:

• Звук «щелчка» каждый раз, когда пользователь нажимает на экран, воспроизводимый на указанной пользователем громкости
• Звук предупреждения, воспроизводимый при максимальной громкости
• Предупреждающие сигналы, запрошенные другимиприложения на уровне громкости, указанном в приложении (0-100%)
• Будущая поддержка воспроизведения MP3-плеера и / или видео (со звуком) на указанной пользователем громкости.Все остальные звуки должны продолжаться во время воспроизведения песни / видео.

Мы используем Qt в качестве нашей инфраструктуры пользовательского интерфейса, которая имеет поддержку QtMultimedia и Phonon.Тем не менее, я слышал, что первый имеет поддержку пятнистого звука в Linux, а последний - более старая версия, и он может устареть в следующем выпуске Qt.

Я провел некоторые исследования, и вот несколько API, которые япопадаются:
KDE Phonon
SFML
PortAudio
SDL_Mixer
OpenAL Soft
FMOD (хотя я бы предпочел избежать лицензионных сборов)
ALSA (возможно, слишком низкий уровень ...)

Другие соображения: кроссплатформенность не требуется, но предпочтительна.Мы хотели бы максимально ограничить зависимости.В обозримом будущем нет необходимости в дополнительных функциях, таких как 3D-аудио или спецэффекты.Моя команда не имеет большого опыта аудио, поэтому простота использования важна.

Являются ли эти излишки для моего приложения?Что кажется наиболее подходящим?

Обновление: Оказывается, мы уже зависели от SDL по другим причинам, поэтому мы выбрали SDL_Mixer.Однако для других встраиваемых приложений я бы тоже долго занимал комбо PortAudio / libsndfile из-за их минимальных зависимостей.

Ответы [ 5 ]

3 голосов
/ 03 апреля 2012

Перейти на PortAudio.Для простого звука без лишних накладных расходов, таких как сложные потоковые конвейеры или 3D, это лучший вариант.Кроме того, у вас действительно хорошая кроссплатформенная поддержка.Он используется несколькими профессиональными аудиопрограммами и имеет действительно высокое качество.

2 голосов
/ 03 апреля 2012

libao является простым, кроссплатформенным, Xiphy совершенством.Есть документация тоже!

Использование обозначено здесь - простое использование выглядит следующим образом:

1 голос
/ 02 апреля 2012

Я снова и снова использовал SDL_Mixer, прекрасная библиотека, она должна хорошо служить вашим потребностям, лицензия гибкая и хорошо документирована.Я также экспериментировал с SFML, в то время как более современный и достаточно документированный, я нахожу немного громоздким и громоздким работать даже с тем, что обе библиотеки очень похожи. imo SDL_Mixer - лучший .

однако вы также можете проверить этот, который я нашел несколько недель назад http://www.mpg123.de/, я не слишком углубился в это,но он очень легкий и, опять же, лицензия гибкая.

1 голос
/ 02 апреля 2012

Существует звуковая библиотека под названием STK, которая будет соответствовать большинству ваших требований:

https://ccrma.stanford.edu/software/stk/faq.html

0 голосов
/ 03 апреля 2012

Не забудьте про:

  • FFmpeg : это комплексное кроссплатформенное решение для записи, преобразования и потоковой передачи аудио и видео.

  • GStreamer : библиотека для построения графиков компонентов обработки мультимедиа. Поддерживаемые приложения варьируются от простого воспроизведения Ogg / Vorbis, потоковой передачи аудио / видео до сложной обработки аудио (микширование) и видео (нелинейное редактирование).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...