Запись звука с помощью ALSA из Line IN
Я разработал небольшое приложение, которое записывает звук с помощью драйвера ALSA во встроенной системе.
Теперь у меня проблема с выбором устройства, которое я хочу записать с микрофона/линии .
Приложение запускается при запуске системы, но мое записывающее устройство по умолчанию настроено на микрофон. Чтобы мое приложение работало, я должен пойти в amixer и установить записывающее устройство от микрофона до линии, а затем запустить приложение.
вы, ребята, знаете способ сделать это изменение из приложения или команда amixer, которая изменит это записывающее устройство, и я могу поместить его в скрипт и запустить его при запуске.
Я сказал, что это приложение работает на встроенной системе, и мне нужен способ конф системы до запуска моего приложения.
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'
Спасибо большое, Габриэль!--4-->
2 ответов
я, наконец, сделал это. Я использую amixer с командой "cset", чтобы сделать это.
amixer -c 0 cset numid=7 1
" - c 0 " - первая звуковая карта
"numid=7" - это активное записывающее устройство.
"1" - это второй вход ... в моем случае 0-MIC 1-LINEIN
amixer info
получает все элементы управления со своими нумидийными 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
при запуске.