![linux录制音频(arecord或类似)和独立的左/右声道](https://linux22.com/image/227061/linux%E5%BD%95%E5%88%B6%E9%9F%B3%E9%A2%91%EF%BC%88arecord%E6%88%96%E7%B1%BB%E4%BC%BC%EF%BC%89%E5%92%8C%E7%8B%AC%E7%AB%8B%E7%9A%84%E5%B7%A6%2F%E5%8F%B3%E5%A3%B0%E9%81%93.png)
我想从音频设备录制(线路输入)并将左声道和右声道分别分配给不同的进程。当然也可以单独记录它们。我想要的是类似的东西(播放命令只是作为例子):要么:
arecord (left channel only) -q -D plughw:1,0 -f S16_LE -r 22050 | play -t raw -r 22050 -b 16 -e signed -q -
arecord (right channel only) -q -D plughw:1,0 -f S16_LE -r 22050 | play -t raw -r 22050 -b 16 -e signed -q -
(也可能导致设备或资源繁忙?)或类似的情况
"arecord | splitchannels (leftchannel | process 1) (rightchannel | process 2)"
或者可能更像这样
"arecord | tee >(getleftchannel | process1) >(getrightchannel | process2) > /dev/null"
由于密集的网络搜索没有给出任何可用的结果..
知道我怎样才能做到这一点吗?
谢谢
答案1
经过更多的网络搜索并尝试失败后,我找到了一个解决方案:“sox remix”有效:所以我使用的命令看起来像这样(再次播放示例目的地)
arecord -q -D plughw:1,0 -f S16_LE -r 22050 -c2 | tee >(sox -t raw -r 22050 -b 16 -e signed -c 2 - -t raw -r 22050 -b 16 -e signed -c 1 - remix 1 | play -t raw -r 22050 -b 16 -e signed -q -) >(sox -t raw -r 22050 -b 16 -e signed -c 2 - -t raw -r 22050 -b 16 -e signed -c 1 - remix 2 | play -t raw -r 22050 -b 16 -e signed -q -) >/dev/null
remix 1 提供左声道,remix 2 提供右声道