Запись каждого канала с использованием ALSA API
Я использую глаз PlayStation, подключенный к Raspberry Pi. У меня есть Raspberry Pi, распознающий встроенный массив микрофонов PSEye, и я могу сэмплировать входные уровни, используя
arecord -vv /dev/null -r 16000 -f S16_LE -c 4 -D iec958:CARD=CameraB409241,DEV=0 /dev/null < /dev/null
Теперь очевидно, что это показывает уровни для всех 4 каналов, суммируемых вместе. Я хочу записать каждый канал отдельно. Возможно ли это с помощью API ALSA?
Я просмотрел этот http://www.alsa-project.org/alsa-doc/alsa-lib/pcm.html
И взглянул на этот http://www.linuxjournal.com/article/6735?page=0,2
Но ни то, ни другое не показалось мне необходимым. Это также похоже на выборку обоих каналов стереомикрофона через ALSA. В конце концов я хочу иметь возможность сэмплировать дБ от каждого микрофона в определенный момент времени.
1 ответ
Для чтения в отдельный буфер для каждого канала замените SND_PCM_ACCESS_RW_INTERLEAVED на SND_PCM_ACCESS_RW_NONINTERLEAVED и замените snd_pcm_readi на snd_pcm_readn.
Если вы хотите записать каждый канал в независимые аудиофайлы, вы можете использовать это приложение:
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