我有一个小型的C++ Qt程序,它使用QAudioOutput实例发出声音。它使用QT4.8.5编译并运行良好。
但是,在QT5.0、5.1和5.2中,我的应用程序编译,但不工作。在运行QAudioOutput实例的构造函数时,我得到以下错误消息:
无法创建到脉冲音频上下文的连接。
而且,构造函数不返回,所以我的程序挂起。
我没有脉冲音频运行。ALSA运行良好,这是我的程序在QT4.8.5编译时所使用的。
检查Qt5“plugins/音频”目录时,只有“libqtmedia_pulse.so”,其名称表明它依赖于脉冲音频。
我的问题:
发布于 2014-07-30 19:14:57
来自多媒体后端上的Qt文档wiki:
以下是当前音频后端的列表: Windows多媒体CoreAudio (Mac / iOS) PulseAudio (Unix) Alsa (Unix) OpenSL ES (Android) QNX 只有PulseAudio、CoreAudio和QNX后端才是真正的插件。其他后端是相关类中的“#ifdef‘’ed”。
因此,ALSA基本上不是一个插件,但在配置Qt时必须进行选择(如果您构建了自己的插件,我假设您是这样做的)。
来自于利用git构建Qt5上的Qt文档wiki
Qt多媒体 您至少需要alsa-lib (>= 1.0.15)和gstreamer (>=0.10.24,但现在需要<1.0lists.qt-project.org)和基本插件包。 Ubuntu/Debian: sudo apt安装libasound2-dev libgstreamer0.10-dev libgstreamer plugins-sudo 0.10-dev
在配置Qt时,由于缺少依赖关系,在没有编译某些特性的情况下,我已经失去了计数。因此,绝对100%确保所有依赖项都已正确安装,并且所有配置选项在当前的配置程序中都是有效的(可用选项甚至在小版本之间也会更改)!请记住仔细查看构建过程的输出(收集文件中的输出,并在生成完成后搜索它,以查找任何带有“跳过”或“错误”或类似关键字的消息。
OTOH,如果你没有建立你自己的Qt,那么我不知道,你应该无视这个答案。
发布于 2014-11-29 19:05:25
修复在QT5.4中存在,提交eb75bf8e3bde3a9b3efc91b54aa4dc2e34a3cde4
我是Qt的Debian维护人员,今天有一个用户遇到了同样的问题。构建日志显示,alsa依赖项存在,并且正在被正确检测.*-/
注意,2014-12-03:问题在于plugins.pro:如果找到脉冲音频支持,它不会构建alsa插件。问题和补丁由克里斯鲁沃罗,将推动上游今天晚些时候。
发布于 2020-11-09 23:03:11
https://stackoverflow.com/questions/19985490
复制相似问题