![在 Linux/ALSA 中,兩個應用程式如何讀取相同的(數位)聲音輸入?](https://rvso.com/image/1447619/%E5%9C%A8%20Linux%2FALSA%20%E4%B8%AD%EF%BC%8C%E5%85%A9%E5%80%8B%E6%87%89%E7%94%A8%E7%A8%8B%E5%BC%8F%E5%A6%82%E4%BD%95%E8%AE%80%E5%8F%96%E7%9B%B8%E5%90%8C%E7%9A%84%EF%BC%88%E6%95%B8%E4%BD%8D%EF%BC%89%E8%81%B2%E9%9F%B3%E8%BC%B8%E5%85%A5%EF%BC%9F.png)
我有一個帶有 AES/EBU 輸入端口的聲卡,我想同時使用兩個應用程式來訪問它。我想將輸入即時記錄到線性 WAV 檔案中,同時透過 IceCast 進行串流傳輸。如果我天真地嘗試使用兩個應用程式存取同一輸入設備,就會告訴我它無法存取該設備。我如何設定 ALSA 才能實現這一目標?或者我必須通過一些外部程式來轉發它,從而引入延遲?
答案1
您可以使用該dsnoop
外掛程式將範例資料複製到多個虛擬擷取裝置。
將類似的內容放入您的~/.asoundrc
或中/etc/asound.conf
,並snooped_digital
在兩個應用程式中用作裝置名稱:
pcm.snooped_digital {
type dsnoop
slave {
pcm "hw:2,1" # the actual device
channels 2
rate 48000
}
}