我想在樹莓派3中創建一個帶有arecord和aplay的fifo。當我從一端的音訊注入器發送音樂訊號時,它會正確顯示,但會停用另一端的音樂。我正在使用“arecord -f S16_LE -r 44100 -V Stereo -c1 -D Plughw:2 | aplay -D Plughw:2”
請告訴我如何解決它以及如何在不使用 ctrl+c 的情況下停止該命令?
答案1
不確定你想做什麼,特別是我不明白“禁用另一端的音樂”,但是
1) 在 Pulseaudio(或插孔)中轉發音訊串流比 ALSA 容易得多。
arecord
2)在管道中使用時,不要使用WAV格式,因為WAV頭有一個長度項,不能在管道中填充。使用 raw ( -t raw
) 並在 中指定正確的參數aplay
,或使用 SUN 音訊格式 ( -t au
)。
3) arecord-aplay 管道將運行,直到您使用 ctrl-c 停止它,或直到一個或兩個進程被終止(使用kill
)。沒有其他辦法可以做到這一點。
答案2
若要停止您擁有的指令,請在 arecord 中新增一個以秒為單位的持續時間變數 (-d),如下所示:
arecord -f S16_LE -r 44100 -V stereo -c1 -d2 -D plughw:2 | aplay -D plughw:2
該命令將在 -d2 或 2 秒後停止錄製。
如果您使用 alsamixer 命令,則可以變更混音器設定。這將允許您選擇輸入(麥克風或線路)以及啟用輸出高保真度(以聽到聲音),您還可以啟用旁路模式,該模式將透過類比系統將音訊輸入直接路由到輸出,而不是CPU。在旁路模式下,您仍然可以使用記錄來擷取訊號。