我想使用ALSA將某些音頻數據重放到PCM設備。作爲一個例子,我已經下載了this sample example並在我的電腦上運行它。當沒有其他進程正在使用聲卡時,它工作正常。但是,當一些其他進程使用音頻設備不玩什麼(即,媒體播放器播放的歌曲),並顯示以下錯誤 -ALSA:在共享模式下打開PCM設備
Playback open error: Device or resource busy
看一下這個例子的源代碼,我可以說,snd_pcm_open功能在882行是拋出這個錯誤。它發現設備繁忙,因爲另一個進程正在使用它。
我也嘗試了相反的方式 - 首先開始這個例子,然後嘗試開始一首歌。在這種情況下,媒體播放器保持閒置狀態,在進度條旁邊顯示「閒置」(我正在使用Banshee)。我假設snd_pcm_open
獲得設備資源的專有權,以便其他進程不能使用它。
但我不想那樣。我想在不需要任何專有權限的情況下播放音頻設備的聲音,以便PC中的其他進程可以共享相同的設備以輸出音頻數據。
我該怎麼做?如何打開PCM設備,以便其他進程也可以共享同一設備?
不,我沒有啓用OSS兼容層,而且我也不想依賴它。我還檢查了/ proc/asound/devices,並在那裏看到了設備列表(我可以通過編程獲取該列表)。我也可以訪問不同的播放設備。但這些都不是真正的問題。我想知道是否可以在共享模式下打開單個設備。 –