【发布时间】:2021-04-30 19:03:01
【问题描述】:
我在基于 Yocto 的嵌入式 Linux 机器上使用 Qt 5.13.2,特别是 QSoundEffect。 Qt 已配置为使用 ALSA 而不是 PulseAudio。 ALSA 的 aplay 能够流畅地播放 WAV 文件。 QSoundEffect 播放明显断断续续。我一直在尝试调整 .asoundrc 中 ALSA 的配置以使事情顺利进行。例如:
pcm.!default {
type hw
card 0
rate 44100
}
ctl.!default {
type hw
card 0
periods 100
period_size 4410
buffer_size 35280
}
这确实解决了播放的断断续续/断断续续的问题,但它也具有阻止同时 QSoundEffect 播放的不良副作用。如果我不使用 .asoundrc 文件,我可以同时播放。但当然,口吃是存在的。
所以,问题是:各种设置的默认值是什么(没有充分记录,顺便说一句)?或者更好的是,我应该查看什么设置?顺便说一句,如果我通过没有 .asoundrc 文件来使用默认值,我会在播放 QSoundEffect 时看到“(snd_pcm_recover) underrun occurred”消息。
【问题讨论】:
-
Qt 代码可能不会过于高效。您需要查看 Qt 源代码,看看是否有一些 QObjects 实现了所有这些可以移动到专用的实时优先级线程。
-
如果你想要混合音频 - 使用脉冲