2013-11-14 2 views
9

У меня есть небольшая программа C++ Qt, которая использует экземпляр QAudioOutput для испускания звука. Он компилирует & работает отлично, используя Qt 4.8.5.Воспроизведение аудио через ALSA поддерживается в Qt5?

Однако в Qt 5.0, 5.1 и 5.2 мое приложение компилируется, но не работает. При создании конструктора экземпляра QAudioOutput появляется следующее сообщение об ошибке:

Невозможно создать соединение с контекстом pulseaudio.

Кроме того, конструктор не возвращается, поэтому моя программа зависает.

У меня нет пульсации. ALSA работает нормально, и это то, что моя программа использует при компиляции с Qt 4.8.5.

Осмотр Qt5 «плагинов/аудио», там есть только «libqtmedia_pulse.so», название которого предполагает, что это зависит от pulseaudio.

Мои вопросы:

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

Вы сами построили Qt? Возможно, вам придется включить плагин ALSA audio, чтобы заставить его работать. Он определенно должен поддерживаться в соответствии с документом [Qt Multimedia Backends] (http://qt-project.org/wiki/Qt_Multimedia_Backends). Вы также можете посмотреть [класс QAudioDeviceInfo] (http://qt-project.org/doc/qt-5.0/qtmultimedia/qaudiodeviceinfo.html), чтобы узнать, какие аудиоустройства были распознаны. – deGoot

+0

Получили ли вы свой звук? –

+0

Эй. Вы считали, что это закрытие? –

ответ

3

Из Qt документации вики на Multimedia Backends:

Вот список текущих звуковых движков:

Windows Multimedia 
CoreAudio (Mac OS/iOS) 
PulseAudio (Unix) 
Alsa (Unix) 
OpenSL ES (Android) 
QNX 

Только PulseAudio, CoreAudio и QNX бэкэнды фактические плагины. Другие вспомогательные серверы «# ifdef'ed» в связанных классах.

Таким образом, в основном ALSA не является плагином, но должен быть выбран при настройке Qt (если вы создаете свой собственный, который, как я полагаю, вы есть).

Из Qt документации вики на building Qt5 from git:

Qt Мультимедиа

Вам понадобится по крайней мере, 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 я потерял счет в течение времени, когда некоторые функции не были составлены в из-за отсутствие зависимостей. Поэтому убедитесь, что все зависимости установлены правильно, и что все ваши параметры конфигурации действительны в текущей программе настройки (доступные параметры меняются даже между младшими версиями)!Не забудьте внимательно посмотреть на результат процесса сборки (собрать результат в файле и выполнить поиск через него после завершения сборки для любых сообщений с «пропуском» или «ошибкой» или такими ключевыми словами.

OTOH, если вы не создали свой собственный Qt, то я понятия не имею, и вы должны игнорировать этот ответ.

0

Fix присутствует в Qt 5.4, совершают eb75bf8e3bde3a9b3efc91b54aa4dc2e34a3cde4


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

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

Смежные вопросы