Мой коммерческий проект 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 из-за их минимальных зависимостей.