使用QSoundEffect时选择音频输出转移

Dud*_*ool 5 c++ audio qt avaudioplayer output

QSoundEffect用来播放一些短.wav文件的循环.这个类是我的解决方案,因为它允许我们播放低延迟声音.

一切都很好,但现在我需要选择输出设备,但我还没有找到这样做的方法QSoundEffect.我知道使用QAudioDeviceInfo我可以得到可用设备的列表,并在QAudioOutput对象的构造函数中使用其中一个来播放wav文件,但QAudioOutput不允许我们进行低延迟循环.

所以,事情是,我需要选择音频输出设备的功能QAudioOutputQAudioDeviceInfo,但玩游戏的低延迟能力的循环,即QSoundEffect优惠.

换句话说,我拥有所需的所有解决方案,但我不知道如何将它们组合在一起.

Lib*_*sik 1

由于 Qt5.7 alsa qt 插件(libqtaudio_alsa.so)使用“默认”设备,您可以在 /etc/asound.cfg 或 ~/.asoundrc 中配置。在下面的示例中,我选择 dmix 插件作为默认设备:

pcm.dmixed {
    type dmix
    ipc_key 1024
    ipc_key_add_uid 0
    slave.pcm "hw:0,0"
}
pcm.dsnooped {
    type dsnoop
    ipc_key 1025
    slave.pcm "hw:0,0"
}

pcm.duplex {
    type asym
    playback.pcm "dmixed"
    capture.pcm "dsnooped"
}

pcm.!default {
    type plug
    slave.pcm "duplex"
}

ctl.!default {
  type hw
  card 0
}
Run Code Online (Sandbox Code Playgroud)