2011-11-21 40 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

對不起,它似乎沒有工作............ –