从 2 个通道创建 1 个 ALSA 设备

从 2 个通道创建 1 个 ALSA 设备

我尝试将 Linphone 与麦克风配合使用,但声音非常不连贯。经过一番尝试后arecord,我发现虽然我的sysdefault设备上的声音不连贯,但使用 录音front:CARD=Generic效果更好,噪音更小。

但是,front显然只能在 2 个通道处于活动状态时进行录制。Linphone 强制输入单声道(理论上可以使用立体声,但似乎没有办法在配置中设置),因此它会给出 alsa 错误,因为它无法正确设置通道。

arecord如果我强制使用 1 个通道到设备,也会发生同样的事情:

$ arecord -f cd -d front:CARD=Generic,DEV=0 -c 1 -V stereo /tmp/file
Recording WAVE '/tmp/file' : Signed 16 bit Little Endian, Rate 44100 Hz, Mono
arecord: set_params:1247: Channels count non available

因此,我试图在 ALSA 中创建一个设备,该设备应该将麦克风的采样率降低到单个通道,但我似乎无法做到这一点(我是 ALSA 新手)。我尝试使用这个答案,但它不起作用:

pcm.front cards.pcm.front
pcm.makemono {           
        type plug      
        slave.pcm {  
                type route                     
                slave.pcm "pcm.front"
                slave.channels 2
                ttable {  
                        0.0 1  
                        1.0 1
                }                   
        }                               
}

...

$ arecord -f cd -d makemono -c1 -V stereo /tmp/file
Recording WAVE '/tmp/file' : Signed 16 bit Little Endian, Rate 44100 Hz, Mono
arecord: set_params:1247: Channels count non available

我怎样才能做到这一点?

答案1

您需要一个软件通道和两个硬件通道,因此您必须按相反方向进行映射:

...
ttable {
    0.0 1
    0.1 1
}

并且您应该使用正确的选项来指定设备:

$ arecord --help | grep -i -- ^-d
-D, --device=NAME 通过名称选择 PCM
-d, --duration=# # 秒后中断

相关内容