我需要为alsa编写一个只捕获左声道数据的代码。我尝试过使用dsnoop但我的目标不支持其他插件。我有一个alsa api来读取数据:
if ((err = snd_pcm_readi (capture_handle, buf, 128)) != 128) {
fprintf (stderr, "read from audio interface failed (%s)\n",
snd_strerror (err));
exit (1);
}
如何配置它以读取单个频道?
答案 0 :(得分:0)
ALSA库可以访问设备支持的那些样本格式。
可以使用插件创建一个提取单个通道的虚拟设备;像这样:
pcm.left_channel {
type plug
slave.pcm {
type route
slave.pcm "hw:0" # or whatever
slave.channels 2
ttable.0.0 1
}
}
但是如果你不能使用插件,你必须使用硬件设备实际支持的格式。