在 Linux/ALSA 中,兩個應用程式如何讀取相同的(數位)聲音輸入?

在 Linux/ALSA 中,兩個應用程式如何讀取相同的(數位)聲音輸入?

我有一個帶有 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
    }
}

相關內容