簡體   English   中英

使用來自Line IN的ALSA錄制聲音

[英]Recording sound using ALSA from Line IN

我開發了一個小應用程序,它在嵌入式系統上使用ALSA驅動程序記錄聲音。
現在我在選擇要從MIC / Line IN錄制的設備時遇到問題。
應用程序設置為在系統啟動時啟動,但我的默認錄制設備設置為MIC。 為了我的應用程序工作,我必須去amixer並將錄音設備從MIC設置為Line IN,然后啟動我的應用程序。

你們知道從app或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'

非常感謝,加布里埃爾

我終於做到了。 我正在使用amixer和“cset”命令來完成它。

amixer -c 0 cset numid=7 1

“-c 0”是第一張聲卡
“numid = 7”是活動的錄制設備。
“1”是第二個輸入...在我的情況下0-MIC 1-LINEIN

amixer info  

獲取所有帶有numtes的控件:

    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

在啟動時。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM