Linux(UOS) Qt不能播放音频的问题

系统及环境

系统:统信UOS(基于linux)
CPU架构:ARM
Qt:5.15.2

Qt通过源码编译安装。

问题

运行Qt 自带事例QAudioOutput ,当调用 QAudioDeviceInfo::availableDevices 获取可用的音频输出设备列表时,报错 "using null output device none available",不能正常播放音频。

解决

查看Qt安装目录中的插件目录 plugins
正常情况下,这里面应该有一个audio插件:
在这里插入图片描述
如果没有的话,那就会导致这个问题咯。

如果是linux x86的话 通过Qt安装包会自动包含audio的插件,但是如果通过Qt源码编译安装,那就需要自己指定编译参数后才会编译生成该插件。

我的Qt安装目录下一开始也没有这个插件,通过排查定位到这个问题。ok,接下来看如何修改源码编译参数。

网上有很多关于编译Qt 源码时配置configure的文章,但是需要注意的是,不同Qt 版本可能对应的configure配置会有差异,特别是大版本之间,所以网上的有些配置并不一定能适用你当前的Qt版本,除非用的Qt版本一样。

那我们如何查看并配置相应参数呢,很简单,直接在Qt 源码目录,通过命令行 configure -h 就可以查看配置帮助,非常详细。

打开终端,切换到Qt安装目录,输入命令 ./configure -h 可以看到所有相关的配置说明,非常详细,接着我们找到 Multimedia options 说明:

在这里插入图片描述

这里可以看几项对于audio的编译配置,主要是前两个,在linux x86环境下通过Qt 安装包安装的目录下,插件audio中可以看到两个库,libqtaudio_alsa.solibqtmedia_pulse.so ,其中音频播放需要用到前面一个库,那对应的编译参数就需要加上 -alsa ,视频播放需要后面那个库,编译参数指定 -pulseaudio

ok, 那接下来我们在自动配置的脚本里面添加上 -alsa :

#!/bin/sh
./configure \
-prefix /usr/bin/qt5.15.2_ARM \
-confirm-license \
-opensource \
-release \
-make libs \
-xplatform linux-aarch64-gnu-g++ \
-pch \
-qt-libjpeg \
-qt-libpng \
-qt-zlib \
-Fontconfig \
-system-freetype \
-opengl \
-xcb \
-dbus \
-build-qtpdf \
-build-qtwebengine-core \
-alsa \

注意,其它编译选项根据自己的需要进行添加。

在编译之前还有一个地方要注意,要编译libqtaudio_alsa这个库必须要先在本机安装 alsa,可以通过 sudo apt-get install alsa*sudo apt-get install pulseaudio*
将alsa和pulseaudio相关的东西都安装上。

安装完可能还是会报错,这时候再安装两个依赖库 libpulse-dev和libasound2-dev,也是通过sudo apt-get进行安装。这样基本就没问题了。

如果安装,那么在执行configure后会报错:

ERROR: Feature 'alsa' was enabled, but the pre-condition 'config.unix && !config.qnx && libs.alsa' failed.

接着如果之前已经编译过源码,需要先 make clean清理一下,重新编译。

最后编译安装完,就可以在plugins下找到 audio目录了:
在这里插入图片描述
再次运行示例,可以正常播放音频。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值