¿Cómo descubrir las capacidades del dispositivo de ALSA audio mediante programación en Linux sin necesidad de abrir el dispositivo

StackOverflow https://stackoverflow.com/questions/1866673

  •  18-09-2019
  •  | 
  •  

Pregunta

¿Cómo me entero de las capacidades de los dispositivos ALSA sin necesidad de abrir el dispositivo por primera vez? El problema es que necesito para suministrar los parámetros de la función snd_pcm_open() utilizar las funciones de prueba que para mí es tonta. ¿Por qué preguntar si se trata de una reproducción o dispositivo de grabación si tengo que decirle a la función de abrir por primera vez?

A modo de ejemplo, me gustaría enumerar todos los dispositivos de reproducción, pero la única manera que puedo pensar es tratar de abrir todos los dispositivos que encuentro (con snd_device_name_hint()) y tratar de abrirlos en el modo de reproducción y si me las arreglo para abrir, todo está bien.

El problema es que, con todas las posibles variaciones (frecuencia de muestreo, canales, etc) que habría una gran cantidad tremenda de 's open () que necesito para llevar a cabo para averiguar los parámetros.

¿Fue útil?

Solución

Utilice snd_ctl_next para iterar sobre todos los dispositivos, a continuación, snd_ctl_open para obtener información sobre el dispositivo -. Esto no es lo mismo que snd_pcm_open, lo que podría fallar si otro programa tiene el dispositivo abierto o si tiene mala configuración

Es muy densa, pero aquí hay un código de fuente abierta que itera sobre todos los dispositivos ALSA usted podría mirar a: https://app.assembla.com/spaces/portaudio/git/source/master/src/hostapi/alsa/pa_linux_alsa.c -. búsqueda de BuildDeviceList para comenzar

Otros consejos

Fue mi primera exigencias a un sistema Linux proyectos / UNIX en las que necesito saber sobre la totalidad de la capacidad de los dispositivos de audio disponibles. Entonces necesito para utilizar estos dispositivos para captar y reproducir el audio. Lo que he hecho es bastante simple. Hay un comando de Linux / Unix que se utiliza para encontrar los dispositivos a través de alsa utilidad en Linux.

Es:

aplay -l

Ahora lo que hice se acaba de hacer un programa para dar al cabo tan similares como este por ALSA.

Para la ayuda de todos he hecho un (.so) biblioteca y una aplicación de ejemplo que demuestra el uso de esta biblioteca en C ++.

La salida de mi biblioteca es como -

[root@~]# ./IdeaAudioEngineTest
HDA Intel plughw:0,0
HDA Intel plughw:0,2

Esta biblioteca también puede capturar y reproducir los datos de audio en tiempo real.

Está disponible con la documentación de IdeaAudio biblioteca con Dúplex Alsa audio

Siempre que puede realizar un comando shell. Entonces aplay es su amigo.

http://alsa.opensrc.org/Aplay

aplay -l

  

lista de todas las tarjetas de sonido y audio digital   dispositivos

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top