0

我正在使用游戏机的眼睛,插入树莓派。我有树莓派识别 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 进行采样。

4

2 回答 2

1

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

于 2014-03-02T12:04:41.230 回答
0

如果您想将每个通道录制到独立的音频文件,那么您可以使用此应用程序:

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

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

要使用应用程序,请指定基本文件名和扩展名,例如: ALSACaptureSplitter /tmp/test wav

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

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

     ./applications/ALSACaptureSplitter -h
     ALSACaptureSplitter : An application to capture input and save to 
 independent files.
    Usage:
         ALSACaptureSplitter [options] outFileNamePrefix ext
         e.g. ALSACaptureSplitter [options] /tmp/out wav
         -D : The name of the device : (-D hw:0)
         -c : The number of channels to open, if the available number is less, then it is reduced to the available : (-c 2)
         -t : The duration to sample for : (-t 2.1)
         -r : The sample rate to use in Hz : (-r 48000)
    AUDIO FILE FORMATS:The known output file extensions (output file formats) are the following :
    8svx aif aifc aiff aiffc al amb amr-nb amr-wb anb au avr awb caf cdda cdr cvs cvsd cvu dat dvms f32 f4 f64 f8 fap flac fssd gsm gsrt hcom htk ima ircam la lpc lpc10 lu mat mat4 mat5 maud mp2 mp3 nist ogg paf prc pvf raw s1 s16 s2 s24 s3 s32 s4 s8 sb sd2 sds sf sl sln smp snd sndfile sndr sndt sou sox sph sw txw u1 u16 u2 u24 u3 u32 u4 u8 ub ul uw vms voc vorbis vox w64 wav wavpcm wv wve xa xi 
于 2020-03-26T02:19:09.543 回答