我想在 raspberry pi3 中创建一个带有 arecord 和 aplay 的 fifo。当我从一端的音频注入器发送音乐信号时,它会正常显示,但会禁用另一端的音乐。我使用的是“arecord -f S16_LE -r 44100 -V stereo -c1 -D plughw:2 | aplay -D plughw:2”
请告诉我如何解决它以及如何在不使用 ctrl+c 的情况下停止该命令???
答案1
不确定你想做什么,特别是我不明白“关闭另一端的音乐”,但是
1) 在 Pulseaudio(或 jack)中转发音频流比 ALSA 容易得多。
2) 在管道中使用时arecord
,不要使用 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 命令,则可以更改混音器设置。这将允许您选择输入(麦克风或线路)以及启用输出 hifi(听到声音),还可以启用旁路模式,该模式将通过模拟系统(而不是 CPU)将音频输入直接路由到输出。在旁路模式下,您仍然可以使用 arecord 来捕获信号。