Qt5是否支持通过ALSA播放音频?

red*_*ish 10 c++ qt alsa qt5

我有一个小型的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 5+中是否还有后端输出到ALSA(没有pulseaudio)?
  • 如果是,我如何确定它是否已构建?我没有看到任何配置选项.
  • QAudioOutput的构造函数挂起我的应用程序似乎是一个错误.我在哪里可以举报?

Len*_*and 4

来自多媒体后端的 Qt 文档 wiki :

\n\n
\n

以下是当前音频后端的列表:

\n\n
Windows Multimedia\nCoreAudio (Mac OS / iOS)\nPulseAudio (Unix)\nAlsa (Unix)\nOpenSL ES (Android)\nQNX\n
Run Code Online (Sandbox Code Playgroud)\n\n

只有 PulseAudio、CoreAudio 和 QNX 后端是实际的插件。其他后端是相关类中的 \xe2\x80\x9c#ifdef\xe2\x80\x99ed\xe2\x80\x9d 。

\n
\n\n

所以基本上 ALSA 不是一个插件,但必须在配置 Qt 时选择(如果你构建自己的,我假设你是)。

\n\n

来自 Qt 文档 wiki 关于从 git 构建 Qt5 的内容:

\n\n
\n

Qt多媒体

\n\n

你\xe2\x80\x99至少需要 alsa-lib (>= 1.0.15) 和 gstreamer (>=0.10.24,\n 但现在 <1.0 [lists.qt-project.org])插件\n 包。

\n\n

Ubuntu/Debian:

\n\n
sudo apt-get install libasound2-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev\n
Run Code Online (Sandbox Code Playgroud)\n
\n\n

在配置 Qt 时,我已经记不清有多少次由于缺少依赖项而未编译某些功能。因此,请绝对 100% 确保所有依赖项均已正确安装,并且所有配置选项对于当前配置程序都有效(即使在次要版本之间,可用选项也会发生变化)!请记住仔细查看构建过程的输出(将输出收集到文件中,并在构建完成后搜索其中是否有任何带有“跳过”或“错误”或此类关键字的消息。

\n\n

OTOH,如果您没有构建自己的 Qt,那么我不知道,您应该忽略这个答案。

\n