У меня есть небольшая программа C ++ Qt, которая использует экземпляр QAudioOutput для воспроизведения звука. Компилируется & работает нормально, используя Qt 4.8.5.
Однако в Qt 5.0, 5.1 и 5.2 мое приложение компилируется, но не работает. Я получаю следующее сообщение об ошибке во время работы конструктора экземпляра QAudioOutput:
Невозможно создать соединение с контекстом pulseaudio.
Также конструктор не возвращается, поэтому моя программа зависает.
У меня нету пульсаудио работает. ALSA работает нормально, и это то, что моя программа использует при компиляции с Qt 4.8.5.
Осматривая каталог «plugins / audio» Qt5, там есть только «libqtmedia_pulse.so», название которого предполагает, что оно зависит от pulseaudio.
Мои вопросы:
Из вики документации Qt на Мультимедийные бэкэнды:
Вот список текущих аудио бэкэндов:
Windows Multimedia CoreAudio (Mac OS / iOS) PulseAudio (Unix) Alsa (Unix) OpenSL ES (Android) QNX
Только плагины PulseAudio, CoreAudio и QNX являются настоящими плагинами.
другие бэкэнды «# ifdef’ed» в связанных классах.
Так что в основном ALSA не является плагином, но должен быть выбран при настройке Qt (если вы создаете свой собственный, который, как я полагаю, вы).
Из вики документации Qt на сборка Qt5 из git:
Qt Multimedia
Вам понадобится как минимум alsa-lib (> = 1.0.15) и gstreamer (> = 0.10.24,
но <1.0 на данный момент [lists.qt-project.org]) с базовыми плагинами
пакет.Ubuntu / Debian:
sudo apt-get install libasound2-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev
При настройке Qt я потерял счет во время, когда некоторые функции не были скомпилированы из-за отсутствующих зависимостей. Поэтому убедитесь на 100%, что все зависимости установлены правильно, и что все ваши параметры конфигурации действительны для текущей программы конфигурации (доступные параметры изменяются даже между второстепенными версиями)! Не забудьте внимательно посмотреть выходные данные процесса сборки (собрать выходные данные в файле и выполнить поиск по нему после завершения сборки для любых сообщений с «пропуском» или «ошибкой» или такими ключевыми словами.
OTOH, если вы не создали свой собственный Qt, то я понятия не имею, и вы должны игнорировать этот ответ.
Исправление присутствует в Qt 5.4, коммит eb75bf8e3bde3a9b3efc91b54aa4dc2e34a3cde4
Я поддерживаю Debian для Qt, и сегодня у пользователя возникла та же проблема. Журналы сборки показывают, что есть зависимости alsa, и они правильно обнаруживаются …: — /
Примечание 2014-12-03: проблема заключается в plugins.pro: он не создает плагин alsa, если найдена поддержка pulseaudio. Проблема и патч Криса Руволо, будут распространяться вверх по течению сегодня.