使用来自Line IN的ALSA录制声音

我开发了一个小型应用程序,在embedded式系统上使用ALSA驱动程序来录制声音。
现在我在select想要从MIC / Line IN录音的设备时遇到问题。
应用程序设置为在系统启动时启动,但是我的默认录制设备设置为MIC。 对于我的应用程序工作,我必须去amixer,并设置logging设备从MIC到线路input,然后启动我的应用程序。

你们是否知道一种方法来改变这个logging设备的应用程序或amixer命令的变化,我可以把它放在一个脚本启动时运行它。

我说过这个应用程序运行在embedded式系统上吗?我需要一种方法来在应用程序启动之前configuration系统。

EDIT1:
这里是我的amixer输出:

root@freescale ~$ amixer Simple mixer control 'Headphone',0 Capabilities: volume Playback channels: Front Left - Front Right Capture channels: Front Left - Front Right Limits: 0 - 127 Front Left: 103 [81%] Front Right: 103 [81%] Simple mixer control 'Playback',0 Capabilities: volume Playback channels: Front Left - Front Right Capture channels: Front Left - Front Right Limits: 0 - 192 Front Left: 192 [100%] Front Right: 192 [100%] Simple mixer control 'Capture',0 Capabilities: cvolume Capture channels: Front Left - Front Right Limits: Capture 0 - 15 Front Left: Capture 15 [100%] Front Right: Capture 15 [100%] Simple mixer control 'Capture Vol Reduction',0 Capabilities: enum Items: 'No Change' 'Reduced by 6dB' Item0: 'No Change' Simple mixer control 'ADC Mux',0 Capabilities: enum Items: 'MIC_IN' 'LINE_IN' Item0: 'MIC_IN' Simple mixer control 'DAC Mux',0 Capabilities: enum Items: 'DAC' 'LINE_IN' Item0: 'DAC' Simple mixer control 'MIC GAIN',0 Capabilities: enum Items: '0dB' '20dB' '30dB' '40dB' Item0: '0dB' 

非常感谢,Gabriel

我终于做到了。 我用“cset”命令使用amixer来完成它。

 amixer -c 0 cset numid=7 1 

“-c 0”是第一个声卡
“numid = 7”是活动的记录设备。
“1”是第二个输入…在我的情况下0-MIC 1-LINEIN

 amixer info 

获取所有控件的numls ex:

  amixer info Card default 'mxsevk'/'mxs-evk (SGTL5000)' Mixer name : '' Components : '' Controls : 7 Simple ctrls : 7 root@freescale ~$ amixer contents numid=5,iface=MIXER,name='Headphone Volume' ; type=INTEGER,access=rw---,values=2,min=0,max=127,step=0 : values=103,103 numid=7,iface=MIXER,name='ADC Mux' ; type=ENUMERATED,access=rw---,values=1,items=2 ; Item #0 'MIC_IN' ; Item #1 'LINE_IN' : values=1 numid=3,iface=MIXER,name='Capture Vol Reduction' ; type=ENUMERATED,access=rw---,values=1,items=2 ; Item #0 'No Change' ; Item #1 'Reduced by 6dB' : values=0 numid=2,iface=MIXER,name='Capture Volume' ; type=INTEGER,access=rw---,values=2,min=0,max=15,step=0 : values=15,15 numid=4,iface=MIXER,name='Playback Volume' ; type=INTEGER,access=rw---,values=2,min=0,max=192,step=0 : values=192,192 numid=6,iface=MIXER,name='DAC Mux' ; type=ENUMERATED,access=rw---,values=1,items=2 ; Item #0 'DAC' ; Item #1 'LINE_IN' : values=0 numid=1,iface=MIXER,name='MIC GAIN' ; type=ENUMERATED,access=rw---,values=1,items=4 ; Item #0 '0dB' ; Item #1 '20dB' ; Item #2 '30dB' ; Item #3 '40dB' : values=0 

如果alsactl可用,则可以根据自己的喜好调整输入/输出/级别值并执行

 alsactl -f settings.alsa store 

反过来说

 alsactl -f settings.alsa restore 

在启动。