alsa代码只捕获单个通道的数据?

时间:2015-07-29 06:20:15

标签: alsa

我需要为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);
            }

如何配置它以读取单个频道?

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
    }
}

但是如果你不能使用插件,你必须使用硬件设备实际支持的格式。