我在我的系統上使用 PulseAudio,並按照說明添加監控裝置根據 PulseAudio wiki。監視器設備本身可以在 Audacity 等應用程式中正常工作並註冊/運行,但我無法透過任何命令列工具讓設備顯示自己。aplay -L
傳回與 Audacity 大致相同的列表,但很方便地缺少監視器設備。
我的最終目標是解析 Java 應用程式中的輸出並最終將其傳遞給 FFmpeg。當出現 2 個通用「擷取來源連接埠」時,我可以透過 Java 音訊 API 判斷該裝置存在,但它沒有提供裝置的名稱,目標是讓使用者可以在有點友善的態度。
有沒有什麼方法可以讓監視器設備顯示在命令列應用程式或透過 Java API/庫中?
先致謝!
答案1
使用pacmd list-sources
或pactl list
命令顯示 PulseAudio 設備。若要僅顯示名稱,您可以對其輸出進行 grep 操作。這是一個例子脈衝音頻常見問題解答
$ LANG=C pactl list | grep -A2 'Source #' | grep 'Name: ' | cut -d" " -f2
透過在「.monitor」上附加 grep,您只能取得監視裝置。
答案2
簡而言之,問題似乎出在 alsa 級別,而不是pulseaudio 級別?如果你想查看 alsa 設備,請嘗試。
aplay -l
(但你已經提到的 aplay -L 是類似的)。
pulseaudio 位於 alsa 之上。因此,請查看 pactl 會帶來另一層軟體...請參閱此處 Troubleshooters.com/linux/sound/sound_troubleshooting.htm。如果 alsa 看不到聲音設備,那麼pulseaudio 肯定看不到嗎?
答案3
這非常簡單:
這顯示了接收器/輸出埠:
aplay -L
由於“監視器”是來源/輸入端口,因此您需要這樣:
arecord -L
更新:aplay 和 arecord 位於「alsa-utils」套件。安裝:
sudo apt install alsa-utils