0

我可以毫无问题地运行 aplay,并播放 wav 测试文件。

在我的应用程序中,对 snd_pcm_open 的调用会出现以下错误:

ALSA lib conf.c:3357:(snd_config_hooks_call) Cannot open shared library libasound_module_conf_pulse.so
ALSA lib pcm.c:2266:(snd_pcm_open_noupdate) Unknown PCM default

我在 aplay 中检查了代码,我使用的是相同的设备名称(“默认”)和相同的模式。代码实际上是相同的,只是 aplay 只是一个用于测试 ALSA 的文件,我正在尝试在一个非常大的应用程序中运行 ALSA。

当我意识到只需在短暂睡眠后重试呼叫,它就可以工作时,它变得更加奇怪。

如果我尝试 snd_ctl_open 而不是打开设备,则会出现错误

ALSA lib conf.c:3357:(snd_config_hooks_call) Cannot open shared library libasound_module_conf_pulse.so
ALSA lib control.c:954:(snd_ctl_open_noupdate) Invalid CTL hw:0
control open (0): No such file or directory

之后我可以打开设备。好像在一次调用 snd_pcm_open 或 snd_ctl_open 后解决了这个问题,所以下一次调用它就可以工作了。

什么会导致这种行为?我不想调用 snd_pcm_open 两次。这是有问题的症状。

我正在运行 ubuntu。

4

1 回答 1

0

安装软件包 libasound2-plugins:i386 解决了这个问题。

但是,如果有人知道为什么再次致电 ALSA 会奏效,我会将您的答案标记为正确答案,因为现在我不知道。

于 2017-10-13T14:23:29.903 回答