Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C ALSA配置,用于在多个进程之间实现设备共享_C_Linux_Pcm_Alsa - Fatal编程技术网

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:谢谢,但我以前问过类似的问题,找不到任何合适的解决方案…看起来此问题将被关闭…对,我就是其中之一,我觉得我过早地投票决定将其转移到超级用户。我的错。。。