我有一个小型的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.
我的问题:
来自多媒体后端的 Qt 文档 wiki :
\n\n\n\n\n以下是当前音频后端的列表:
\n\nRun Code Online (Sandbox Code Playgroud)\n\nWindows Multimedia\nCoreAudio (Mac OS / iOS)\nPulseAudio (Unix)\nAlsa (Unix)\nOpenSL ES (Android)\nQNX\n只有 PulseAudio、CoreAudio 和 QNX 后端是实际的插件。其他后端是相关类中的 \xe2\x80\x9c#ifdef\xe2\x80\x99ed\xe2\x80\x9d 。
\n
所以基本上 ALSA 不是一个插件,但必须在配置 Qt 时选择(如果你构建自己的,我假设你是)。
\n\n来自 Qt 文档 wiki 关于从 git 构建 Qt5 的内容:
\n\n\n\n\nQt多媒体
\n\n你\xe2\x80\x99至少需要 alsa-lib (>= 1.0.15) 和 gstreamer (>=0.10.24,\n 但现在 <1.0 [lists.qt-project.org])插件\n 包。
\n\nUbuntu/Debian:
\n\nRun Code Online (Sandbox Code Playgroud)\nsudo apt-get install libasound2-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev\n
在配置 Qt 时,我已经记不清有多少次由于缺少依赖项而未编译某些功能。因此,请绝对 100% 确保所有依赖项均已正确安装,并且所有配置选项对于当前配置程序都有效(即使在次要版本之间,可用选项也会发生变化)!请记住仔细查看构建过程的输出(将输出收集到文件中,并在构建完成后搜索其中是否有任何带有“跳过”或“错误”或此类关键字的消息。
\n\nOTOH,如果您没有构建自己的 Qt,那么我不知道,您应该忽略这个答案。
\n| 归档时间: |
|
| 查看次数: |
6335 次 |
| 最近记录: |