【问题标题】:Recording sound using ALSA from Line IN使用 ALSA 从 Line IN 录制声音
【发布时间】:2012-05-19 03:19:50
【问题描述】:

我开发了一个在嵌入式系统上使用 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'

非常感谢, 加布里埃尔

【问题讨论】:

    标签: c linux alsa


    【解决方案1】:

    我终于做到了。我正在使用带有“cset”命令的 amixer 来执行此操作。

    amixer -c 0 cset numid=7 1
    

    “-c 0”是第一声卡
    “numid=7”是活动的录音设备。
    “1”是第二个输入......在我的例子中 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
    

    【讨论】:

      【解决方案2】:

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

      alsactl -f settings.alsa store
      

      反过来

      alsactl -f settings.alsa restore
      

      在启动时。

      【讨论】:

        猜你喜欢
        • 2011-09-01
        • 2014-05-28
        • 2019-04-27
        • 2014-09-11
        • 2022-12-21
        • 2019-05-21
        • 2011-04-18
        • 2014-04-13
        相关资源
        最近更新 更多