6

組み込みシステムで ALSA ドライバーを使用してサウンドを録音する小さなアプリケーションを開発しました。
MIC/Line IN から録音したいデバイスを選択するのに問題があります。
アプリケーションはシステムの起動時に開始するように設定されていますが、デフォルトの録音デバイスは MIC に設定されています。アプリを動作させるには、amixer に移動し、録音デバイスを MIC から Line IN に設定してから、アプリを起動する必要があります。

この録音デバイスを変更するアプリまたは amixer コマンドからこの変更を行う方法を知っていますか。それをスクリプトに入れて、起動時に実行できます。

このアプリは組み込みシステムで実行されていると言いましたが、アプリを開始する前にシステムを確認する方法が必要です。

EDIT1 :
これが私のミキサー出力です:

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 に答える 2

2

ついにやりました。「cset」コマンドで amixer を使用しています。

amixer -c 0 cset numid=7 1

「-c 0」は最初のサウンドカードです
。「numid=7」はアクティブな録音デバイスです。
「1」は2番目の入力です...私の場合は0-MIC 1-LINEINです

amixer info  

numid を持つすべてのコントロールを取得します。例:

    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
于 2012-07-06T11:43:12.740 に答える
0

alsactlが利用可能な場合は、入力/出力/レベルの値を好みに合わせて調整し、実行できます

alsactl -f settings.alsa store

そして逆に

alsactl -f settings.alsa restore

始めるとき。

于 2012-05-10T16:31:21.707 に答える