C ALSA配置,用于在多个进程之间实现设备共享
我的主目录中的C ALSA配置,用于在多个进程之间实现设备共享,c,linux,pcm,alsa,C,Linux,Pcm,Alsa,我的主目录中的.asoundrc文件中有以下代码- pcm.lol { type dmix ipc_key 1024 ipc_key_add_uid true slave{ pcm "hw:0,0" period_time 125000 rate 48000 format S32_LE channels 2 } } 运行时,它工作正常(我将设备名称更改为plug:lol)。我
.asoundrc
文件中有以下代码-
pcm.lol
{
type dmix
ipc_key 1024
ipc_key_add_uid true
slave{
pcm "hw:0,0"
period_time 125000
rate 48000
format S32_LE
channels 2
}
}
运行时,它工作正常(我将设备名称更改为plug:lol
)。我能听到耳机里有声音。当两个或多个进程试图同时输出音频数据时,就会出现问题。在这种情况下,后一个进程无法正确输出其音频数据
例如,我运行了一个正在播放歌曲的媒体播放器,然后我尝试运行该示例。我听不到任何声音,只能听到媒体播放器播放的音乐。当我先运行这个示例,然后运行媒体播放器时,也会发生类似的情况,在这种情况下,我只听示例中的音频输出
我怎样才能解决这个问题?我的pcm设备配置是否有任何错误?或者我必须在示例代码中提供任何其他PCM配置参数吗
另外,如果我能以编程方式创建此逻辑设备配置,而不是使用这样的配置文件,那就太好了。我认为问题在于您的声音输出仍然默认为hw0,0,但您希望它默认为lol,因此,您需要遵循中的示例,并将以下内容添加到.asoundrc的开头:
pcm.!default {
type plug
slave.pcm "lol"
}
不幸的是,我不知道任何配置.asoundrc的编程方式。据我搜索和检查,在ALSA中显然没有具体的方法来实现这一点。我可以在多个进程之间共享内置的
default
设备,但任何其他配置都不提供此功能。此外,我找不到任何编程方式来配置ALSA设备。配置文件似乎是实现这一点的唯一方法。这个编程是如何相关的?@Till:我想知道是否有“编程相关”的方法来配置所有这些,即使用ALSA PCM API。所以我认为这可能与编程有关…足够公平-有意义,并将此问题推到超级用户和So:D-希望您找到足够的答案之间。@Till:谢谢,但我以前问过类似的问题,找不到任何合适的解决方案…看起来此问题将被关闭…对,我就是其中之一,我觉得我过早地投票决定将其转移到超级用户。我的错。。。