Инициализация SDL_Mixer выдает ошибку Не удается настроить поток PulseAudio

Я пишу приложение на своем raspberry-pi 3, работающем на Ubuntu-MATE. Я использую C++ для code::blocks с SDL и SDL_Mixer для воспроизведения mp3-файлов (я все еще использую v1.2 библиотеки SDL).

Я не получаю никаких ошибок при запуске SDL, но когда я запускаю SDL_Mixer с помощью этой строки:

Mix_OpenAudio(44100, MIX_DEFAULT_FORMAT, 1, 1024)

Он возвращает -1, поэтому я получаю сообщение об ошибке с помощью метода Mix_GetError(), а также сообщение «Не удается настроить поток PulseAudio».

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

Кроме того, я проверил с помощью "sudo apt-get install pulseaudio", чтобы убедиться, что я не пропустил некоторые библиотеки, но мой диспетчер пакетов, похоже, указывает, что у меня есть последнее обновление...

Любые подсказки действительно помогли бы мне много!

Спасибо


person G.Vernier    schedule 19.04.2016    source источник
comment
пожалуйста, опубликуйте больше кода. этой единственной строки недостаточно для инициализации аудиосистемы   -  person xaxxon    schedule 19.04.2016
comment
@ G.Vernier, вы можете опубликовать код для SDL_Init?   -  person Rakete1111    schedule 19.04.2016


Ответы (1)


В конце концов, я решил это сам... это была долбаная опечатка. Я написал 444100 вместо 44100 для параметра инициализации частоты :/

Теперь все загружается правильно (для SDL я просто использовал SDL_INIT_EVERYTHING для тех, кто спрашивал). Кстати, я использую SDL только для использования SDL_Mixer; Я предполагаю, что SDL_Mixer не может работать как автономный, поэтому какой модуль я могу загрузить в SDL, чтобы инициализировать только основы?

Кроме того, теперь мне любопытно: почему SDL_Mixer нуждается в PulseAudio для инициализации?

Спасибо

person G.Vernier    schedule 19.04.2016
comment
SDL_INIT_AUDIO. Он должен куда-то выводить звук. В Linux обычной основной аудиосистемой является либо ALSA, либо OSS (сейчас почти вымершая), но исторически обычно существует «звуковой демон», который микширует звуки из нескольких программ и отправляет их в ALSA. В настоящее время этим звуковым демоном обычно является pulseaudio. Вы можете попросить SDL вывести данные напрямую в ALSA, но это может привести к сбою (например, pulseaudio уже удерживает исключительно устройство). - person keltar; 20.04.2016