我有一个小型的C ++ Qt程序,它使用QAudioOutput实例发出声音。它编译和编译使用Qt 4.8.5运行良好。
但是,在Qt 5.0,5.1和5.2中,我的应用程序编译,但不起作用。我在QAudioOutput实例的构造函数运行时收到以下错误消息:
无法创建与pulseaudio上下文的连接。
此外,构造函数不会返回,因此我的程序挂起。
我没有运行pulseaudio。 ALSA工作正常,这是我的程序在使用Qt 4.8.5编译时使用的。
检查Qt5“plugins / audio”目录,那里只有“libqtmedia_pulse.so”,其名称暗示它取决于pulseaudio。
我的问题:
答案 0 :(得分:3)
来自Multimedia Backends上的Qt文档wiki:
以下是当前音频后端的列表:
Windows Multimedia CoreAudio (Mac OS / iOS) PulseAudio (Unix) Alsa (Unix) OpenSL ES (Android) QNX
只有PulseAudio,CoreAudio和QNX后端才是真正的插件。该 其他后端在相关类中是“#ifdef'ed”。
所以基本上ALSA不是插件,但必须在配置Qt时选择(如果你自己构建,我认为你是这样)。
来自building Qt5 from git上的Qt文档wiki:
Qt Multimedia
你至少需要alsa-lib(> = 1.0.15)和gstreamer(> = 0.10.24, 但是< 1.0 for now [lists.qt-project.org])和base-plugins 封装
的Ubuntu / Debian的:
sudo apt-get install libasound2-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev
配置Qt时,由于缺少依赖性,因为某些功能未编译而导致计数丢失。因此,绝对100%确保所有依赖项都已正确安装,并且所有配置选项对当前配置程序都有效(即使在次要版本之间,可用选项也会更改)!请记住仔细查看构建过程中的输出(收集文件中的输出,并在构建完成后搜索任何带有“跳过”或“错误”的消息或此类关键字。
OTOH,如果你没有建立自己的Qt,那么我就不知道了,你应该忽略这个答案。
答案 1 :(得分:0)
修复存在于Qt 5.4中,提交eb75bf8e3bde3a9b3efc91b54aa4dc2e34a3cde4
我是Qt的Debian维护者,今天用户遇到了同样的问题。构建日志显示alsa依赖项存在并且正确检测到它......: - /
注意2014-12-03:问题在于plugins.pro:如果找到pulseaudio支持,它不会构建alsa插件。 Chris Ruvolo的问题和补丁将在今天晚些时候推进上游。
答案 2 :(得分:0)