Captura de amostras ALSA: não é possível abrir o dispositivo

4

Sou bastante novo no Linux (Lubuntu 12.04 para fins de precisão) e na programação da ALSA. Eu estou tentando escrever um programa C para capturar o áudio do microfone interno do PC para processá-lo. Então como primeiro passo eu pesquisei um pouco e encontrei este artigo para capturar amostras de áudio

Um tutorial sobre como usar a API de áudio da ALSA

mas quando eu compilar e executar com:

./mycapture "default" ou ./mycapture "hw:0,0" e todas as variantes possíveis no tema sempre geram o erro:

  

não pode abrir o dispositivo hw: 0,0 (nenhum arquivo ou diretório) .

Então, a questão é: qual é o nome do dispositivo de áudio do microfone para passar como parâmetro para gravar o áudio do microfone?

O microfone está funcionando corretamente porque o programa gravador de som grava perfeitamente e eu posso reproduzi-lo.

A saída do aplay -l é a seguinte:

**** List of PLAYBACK Hardware Devices ****
card 0: I82801DBICH4 [Intel 82801DB-ICH4], device 0: Intel ICH [Intel 82801DB-ICH4]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: I82801DBICH4 [Intel 82801DB-ICH4], device 4: Intel ICH - IEC958 [Intel 82801DB-ICH4 - IEC958]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

e esta é a saída do amixer (corte)

Simple mixer control 'Master',0
  Capabilities: pvolume pswitch penum
  Playback channels: Front Left - Front Right
  Limits: Playback 0 - 31
  Mono:
  Front Left: Playback 31 [100%] [0.00dB] [on]
  Front Right: Playback 31 [100%] [0.00dB] [on]
Simple mixer control 'Master Mono',0
  Capabilities: pvolume pvolume-joined pswitch pswitch-joined penum
  Playback channels: Mono
  Limits: Playback 0 - 31
  Mono: Playback 4 [13%] [-40.50dB] [on]
Simple mixer control 'PCM',0
  Capabilities: pvolume pswitch penum
  Playback channels: Front Left - Front Right
  Limits: Playback 0 - 31
  Mono:
  Front Left: Playback 31 [100%] [12.00dB] [on]
  Front Right: Playback 31 [100%] [12.00dB] [on]
Simple mixer control 'CD',0
  Capabilities: pvolume pswitch cswitch cswitch-exclusive penum
  Capture exclusive group: 0
  Playback channels: Front Left - Front Right
  Capture channels: Front Left - Front Right
  Limits: Playback 0 - 31
  Front Left: Playback 0 [0%] [-34.50dB] [off] Capture [off]
  Front Right: Playback 0 [0%] [-34.50dB] [off] Capture [off]
Simple mixer control 'Mic',0
  Capabilities: pvolume pvolume-joined pswitch pswitch-joined cswitch cswitch-exclusive penum
  Capture exclusive group: 0
  Playback channels: Mono
  Capture channels: Front Left - Front Right
  Limits: Playback 0 - 31
  Mono: Playback 22 [71%] [-1.50dB] [on]
  Front Left: Capture [on]
  Front Right: Capture [on]
Simple mixer control 'Mic Boost (+20dB)',0
  Capabilities: pswitch pswitch-joined penum
  Playback channels: Mono
  Mono: Playback [off]
Simple mixer control 'Mic Select',0
  Capabilities: enum
  Items: 'Mic1' 'Mic2'
  Item0: 'Mic1'
Simple mixer control 'Stereo Mic',0
  Capabilities: pswitch pswitch-joined penum
  Playback channels: Mono
  Mono: Playback [off]

então, por experiência, parece que eu não tenho nenhum dispositivo de gravação, mas para o amixer eu tenho o microfone, um microfone e um microfone estéreo com todos esses lindos animais no lugar deles !!. Se sim, como meu gravador de som poderia gravar o áudio sem nenhum problema?!?!

Com certeza eu estou dando o nome do dispositivo errado para a linha de comando para a captura de áudio, mas estou perdendo a esperança de encontrar o correto!

Por favor, ajude .... antes que eu arranque meu cabelo !!!

    
por Randagio 15.10.2012 / 21:38

1 resposta

0

aplay -l lista os dispositivos reprodução . Use arecord -l .

O programa de captura funciona bem após a correção dos bugs (o terceiro parâmetro para snd_pcm_hw_params_set_rate_near deve ser um ponteiro para a taxa, e o tamanho de buf deve ser duplicado para ter espaço suficiente para dois canais).

    
por CL. 15.10.2012 / 23:34

Tags