Поддерживается ли воспроизведение звука через ALSA в Qt5?

У меня есть небольшая программа 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.

Мои вопросы:

  • Есть ли еще бэкэнд для вывода в ALSA (без pulseaudio) в Qt 5+?
  • Если да, как я могу убедиться, что он построен? Я не вижу никаких параметров настройки для этого.
  • Кажется, это ошибка, что конструктор QAudioOutput зависает в моем приложении. Где я могу сообщить об этом?

9

Решение

Из вики документации 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, то я понятия не имею, и вы должны игнорировать этот ответ.

3

Другие решения

Исправление присутствует в Qt 5.4, коммит eb75bf8e3bde3a9b3efc91b54aa4dc2e34a3cde4


Я поддерживаю Debian для Qt, и сегодня у пользователя возникла та же проблема. Журналы сборки показывают, что есть зависимости alsa, и они правильно обнаруживаются …: — /

Примечание 2014-12-03: проблема заключается в plugins.pro: он не создает плагин alsa, если найдена поддержка pulseaudio. Проблема и патч Криса Руволо, будут распространяться вверх по течению сегодня.

0