Qt - 没有音频输出设备 - Yocto / poky

时间:2016-04-16 05:58:18

标签: qt alsa pulseaudio


我试图在基于ARM的Atmel主板(sama5d31ek)上用Qt(QSound,QSoundeffect)播放WAV音频文件。
我使用Yocto / poky构建了rootfs(以及用于交叉编译的Qt SDK)。
在使用QSound时,我收到以下日志消息:使用空输出设备,无可用 跑步时我什么都没得到:

foreach (const QAudioDeviceInfo &deviceInfo, QAudioDeviceInfo::availableDevices(QAudio::AudioOutput))
    qDebug() << "Device name: " << deviceInfo.deviceName();

我可以通过命令行播放文件,播放(alsa) pulseaudio util缺失。

什么吗?

克莱顿:

 > aplay --list-devices
**** List of PLAYBACK Hardware Devices ****
card 0: SAMA5D3 [tlv320aic3x @ SAMA5D3], device 0: TLV320AIC3X PCM tlv320aic3x-hifi-0 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0

 > cat /proc/asound/card0/pcm0p/info
card: 0
device: 0
subdevice: 0
stream: PLAYBACK
id: TLV320AIC3X PCM tlv320aic3x-hifi-0
name:
subname: subdevice #0
class: 0
subclass: 0
subdevices_count: 1
subdevices_avail: 1

使用以下命令无音频:

 > aplay -D hw:0,0 35_800.wav
Playing WAVE '35_800.wav' : Unsigned 8 bit, Rate 8000 Hz, Mono
aplay: set_params:1241: Sample format non available
Available formats:
- S16_LE
- S24_LE
- S32_LE

使用以下命令播放音频:

 > aplay -D plughw:0,0 35_800.wav
Playing WAVE '35_800.wav' : Unsigned 8 bit, Rate 8000 Hz, Mono

循环播放QAudioDeviceInfo:找不到任何设备。

感谢

2 个答案:

答案 0 :(得分:2)

有同样的问题,安装了qt多媒体插件后,可以访问音频设备。

sudo apt install libqt5multimedia5-plugins

答案 1 :(得分:0)

添加包 alsa-utils 并执行:

$ aplay --list-devices
**** List of PLAYBACK Hardware Devices ****
card 0: PCH [HDA Intel PCH], device 0: ALC269VB Analog >[ALC269VB Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 3: HDMI 0 [HDMI 0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

然后,根据输出运行:

aplay -D plughw:0,0 music.wav 

或者:

$ cat /proc/asound/card0/pcm0p/info
card: 0
device: 0
subdevice: 0
stream: PLAYBACK
id: HDMI 0
name: HDMI 0
subname: subdevice #0
class: 0
subclass: 0
subdevices_count: 1
subdevices_avail: 1

使用:

aplay -D hw:0,0 music.wav

然后使用Qt,您可以列出设备:

QList <QAudioDeviceInfo> devices = QAudioDeviceInfo :: availableDevices (QAudio :: AudioOutput);
foreach (i QAudioDeviceInfo, devices)
   // Print the devices here!

尝试在此发布结果!