2012-05-10 11 views
6

tôi đã phát triển một ứng dụng nhỏ ghi lại âm thanh sử dụng driver ALSA trên một hệ thống nhúng.
Bây giờ tôi gặp sự cố khi chọn thiết bị mà tôi muốn ghi từ MIC/Line IN.
Ứng dụng này được thiết lập để bắt đầu từ hệ thống khởi động nhưng thiết bị ghi âm mặc định của tôi được thiết lập để MIC. Đối với ứng dụng của tôi để làm việc tôi phải đi đến amixer và thiết lập các thiết bị ghi âm từ MIC để Line IN và sau đó bắt đầu ứng dụng của tôi.ghi âm thanh sử dụng ALSA từ dòng trong

Do you guys biết một cách để làm thay đổi này từ ứng dụng hoặc amixer lệnh đó sẽ thay đổi thiết bị ghi âm này và tôi có thể đặt nó trong một kịch bản một chạy nó lúc khởi động.

Có tôi đã nói ứng dụng này đang chạy trên một hệ thống nhúng và tôi cần một cách để conf hệ thống trước khi ứng dụng của tôi bắt đầu.

EDIT1:
đây là đầu ra amixer tôi:

[email protected] ~$ 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' 

Thanks a lot, Gabriel

Trả lời

2

Cuối cùng tôi đã làm điều đó. Tôi đang sử dụng amixer với lệnh "cset" để làm điều đó.

amixer -c 0 cset numid=7 1 

"-c 0" là card âm thanh đầu tiên
"numid = 7" là thiết bị ghi âm đó đang hoạt động.
"1" là intput thứ hai ... trong trường hợp của tôi 0-MIC 1-LINEIN

amixer info 

Gets tất cả các điều khiển với numids của họ ví dụ:

amixer info 
Card default 'mxsevk'/'mxs-evk (SGTL5000)' 
    Mixer name : '' 
    Components : '' 
    Controls  : 7 
    Simple ctrls : 7 
[email protected] ~$ 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 
0

Nếu alsactl có sẵn, bạn có thể điều chỉnh đầu vào/đầu ra/mức giá trị theo ý thích của bạn và thực hiện

alsactl -f settings.alsa store 

và reversely

alsactl -f settings.alsa restore 

khi khởi động.