使用ALSA API记录每个通道

时间:2014-02-28 17:11:35

标签: audio signal-processing raspberry-pi alsa pulseaudio

我正在使用Playstation眼睛,插入覆盆子pi。我有覆盆子pi识别PSEye的内置麦克风阵列,我可以使用

对输入电平进行采样
arecord -vv /dev/null -r 16000 -f S16_LE -c 4 -D iec958:CARD=CameraB409241,DEV=0 /dev/null < /dev/null

现在很明显,这显示了所有4个通道的总和水平。我想做的是分别记录每个频道。这可能是使用ALSA API吗?

我查看了这个http://www.alsa-project.org/alsa-doc/alsa-lib/pcm.html

看看这个http://www.linuxjournal.com/article/6735?page=0,2

但似乎我不需要。这也类似于在ALSA上对立体声麦克风的两个声道采样也是如此。最终,我希望能够在特定时间点从每个麦克风中采样dB。

2 个答案:

答案 0 :(得分:1)

要为每个频道读入单独的缓冲区,请将SND_PCM_ACCESS_RW_INTERLEAVED替换为SND_PCM_ACCESS_RW_NONINTERLEAVED,并将snd_pcm_readi替换为snd_pcm_readn

答案 1 :(得分:0)

如果要将每个频道录制到独立的音频文件中,则可以使用此应用程序:

https://github.com/flatmax/gtkiostream/blob/master/applications/ALSACaptureSplitter.C

它需要编译,在这里描述: https://lists.audioinjector.net/pipermail/people/2020-March/000028.html

要使用该应用程序,请指定基本文件名和扩展名,例如: http://reverse.geocoder.api.here.com/6.2/reversegeocode.json?xnlp=CL_JSMv3.0.17.0&app_id=Ca548bnNQGuB45wgmgrU&app_code=WTve4O4ccq_5ErqHb7MQfoiAJP4hLw9UmIeNvjc8s4M&mode=retrieveAddresses&maxresults=1&prox=<.....> request failed

它可以录制为许多不同的音频文件格式。

您可以使用这些选项来更改设备,指定记录时间,频道数等。这是应用程序打印出来的帮助:

ALSACaptureSplitter /tmp/test wav