QAudioDeviceInfo :: availableDevices()不会返回所有可用的设备,而是只返回实际存在的三个音频输出设备中的一个。为什么?

时间:2017-03-30 06:55:26

标签: android qt audio alsa tinyalsa

问题:

1。 QAudioDeviceInfo :: availableDevices(QAudio :: AudioOutput))仅从三个音频输出设备返回一个音频设备(默认设备)。为什么? 共有三个音频输出设备可用,在使用ALSA设备进行检查时,使用" tinyplay"通过命令行实用。 但是QAudioDeviceInfo :: availableDevices()并没有返回这三个设备,它只返回一个设备(默认)。

注意: 使用qt样本上的示例代码进行audiooutput。只返回一台设备。

m_deviceBox->addItem(defaultDeviceInfo.deviceName(), qVariantFromValue(defaultDeviceInfo));
foreach (const QAudioDeviceInfo &deviceInfo, QAudioDeviceInfo::availableDevices(QAudio::AudioOutput)) {
if (deviceInfo != defaultDeviceInfo) {
 m_deviceBox->addItem(deviceInfo.deviceName(), qVariantFromValue(deviceInfo));
}
}

2。如何将特定的ALSA设备(例如:card0,设备0)设置为默认音频设备? 在这种情况下,QAudioDeviceInfo :: defaultOutputDevice()在声卡2上设置为设备0。

详情请见下文........

系统设置:

目标董事会:iMX6Q Sabre AI

操作系统:Android M6

Qt:QT 5.8

Android NDK r10

Android SDK:25.2.5

可用的声卡:

root @ sabreauto_6q:/ #cat / proc / asound / cards

0 [cs42888audio]:cs42888-audio - cs42888-audio CS42888音频 1 [imxspdif]:imx-spdif - imx-spdif IMX-SPDIF 2 [imxhdmisoc]:imx-hdmi-soc - imx-hdmi-soc IMX-HDMI-SOC

可用的声音设备:

root @ sabreauto_6q:/ #cat / proc / asound / card0 / id pcm0c / pcm0p / pcm1c / pcm1p /

root @ sabreauto_6q:/ #cat / proc / asound / card1 / id pcm0c /

root @ sabreauto_6q:/ #cat / proc / asound / card2 / id pcm0p /

注意:共有3个声卡和3个音频(ALSA)输出设备。

尝试测试音频输出设备:

使用tinyplay实用程序声音验证整个音频输出驱动程序。

tinyplay test.wav -D 0 -d 0 - >声音验证。 注意:声卡0上的ALSA设备0正在运行以产生声音。

tinyplay test.wav -D 0 -d 1 - >声音验证。

tinyplay test.wav -D 2 -d 0 - >声音验证。

0 个答案:

没有答案