0

问题:

1. QAudioDeviceInfo::availableDevices(QAudio::AudioOutput)) 从三个音频输出设备中只返回一个音频设备(默认设备)。为什么? 共有三个音频输出设备可用,在使用 ALSA 设备检查时,通过命令行使用“tinyplay”实用程序验证了输出。但是 QAudioDeviceInfo::availableDevices() 不返回这三个设备,它只返回一个设备(默认)。

注意: 使用 qt 示例中的示例代码进行音频输出。仅返回一台设备。

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, device 0)设置为默认音频设备? 在这种情况下,QAudioDeviceInfo::defaultOutputDevice() 设置为声卡 2 上的设备 0。

请参阅下面的详细资料........

系统设置:

目标板:iMX6Q Sabre AI

操作系统:安卓M6

Qt:QT 5.8

安卓 NDK r10

安卓 SDK:25.2.5

可用声卡:

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

0 [cs42888audio]:cs42888-audio-cs42888-audio cs42888-audio 1 [imxspdif]:imx-spdif-imx-spdif imx-spdif 2 [imxhdmisoc]:imx-hdmi-soc-imx-hdmi-soc imx-hdmi-社会

可用的声音设备:

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 --> 声音已验证。

4

0 回答 0