如何配置不同的ALSA默认值以通过一个设备捕获并通过另一个设备播放?

时间:2016-03-26 18:34:33

标签: linux audio raspbian alsa raspberry-pi3

我正在寻找一些在Raspberry Pi上配置音频的帮助,因为到目前为止我的谷歌搜索工作还没有完成!

我的设置:

  • Raspberry PI 3(运行Debian Jessie)
  • 我用来捕捉音频的USB WebCam(Logitech)
  • 3.5mm音频插孔中的外部扬声器,用于播放

到目前为止,我已设法将ALSA配置为默认情况下通过USB网络摄像头捕获并通过3.5毫米插孔播放。例如,以下工作正常:

# Capture from Webcam
arecord test.wav

# Playback through 3.5mm jack
aplay test.wav

默认情况下,它会捕获8位,8KHz,Mono的音频。但是,我希望默认捕获过程使用16位,16KHz,Mono设置,这就是我被卡住的地方。

这是我工作的~/.asoundrc文件:

pcm.!default {

        type asym

        playback.pcm {
                type hw
                card 1
                device 0
        }

        capture.pcm {
                type plug
                slave {
                        pcm {
                                type hw
                                card 0
                                device 0
                        }
                }
        }
}

我的/etc/modprobe.d/alsa-base.conf

options snd_usb_audio index=0
options snd_bcm2835 index=1

options snd slots=snd-usb-audio,snd-bcm2835

cat /etc/asound/cards的输出:

 0 [U0x46d0x825    ]: USB-Audio - USB Device 0x46d:0x825
                      USB Device 0x46d:0x825 at usb-3f980000.usb-1.4, high speed
 1 [ALSA           ]: bcm2835 - bcm2835 ALSA
                      bcm2835 ALSA

我已按照各种指南设置formatratechannels属性,但没有成功。例如,这不起作用:

pcm.!default {

        type asym

        playback.pcm {
                type hw
                card 1
                device 0
        }

        capture.pcm {
                type plug
                slave {
                        pcm {
                                type hw
                                card 0
                                device 0
                        }
                        format S16_LE
                        rate 16000
                        channels 1
                }
        }
}

(我也尝试在许多绝望的尝试之一中移动pcm块内的那些属性!)

事实上,我根本没有关于Linux的音频经验,而且我完全迷失了,任何指导都会非常感激!

1 个答案:

答案 0 :(得分:-1)

aplay使用文件实际具有的任何样本格式,但arecord会创建一个新文件,因此如果您不想要愚蠢的默认值,则必须指定样本格式:

arecord -f S16_LE -r 16000 -c 1 test.wav