2011-11-21 97 views
0

之间的设备共享我在我家目录中的.asoundrc文件下面的代码 -ALSA的配置,使多个进程

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配置参数?

此外,如果我可以通过编程方式创建此逻辑设备配置,而不是像这样使用配置文件,那将会非常好。

+0

这个编程如何相关? – Till

+0

@Till:我想知道是否有一种“编程相关”的方式来配置所有这些,即使用ALSA PCM API。所以我认为可能是这是编程有关..... –

+0

公平 - 有道理,并推动这个问题超级用户和SO之间:D - 希望你找到一个足够的答案。 – Till

回答

0

据我搜查和检查,ALSA显然没有具体的方法来做到这一点。我可以在多个进程之间共享内置的default设备,但其他任何配置都不提供此功能。另外,我找不到任何编程方式来配置ALSA设备。配置文件似乎是唯一的方法来做到这一点。

0

我认为问题在于你的声音输出仍然是默认为hw0,0,但是你希望它默认为lol,所以你需要按照ALSA website中的例子添加以下内容到开头.asoundrc:

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

不幸的是,我不知道任何编程方式来配置.asoundrc。

+0

对不起,它似乎没有工作............ –