¿Cómo crear un dispositivo de tarjeta de sonido ficticio en un servidor Linux?


20

Quiero ejecutar un programa Linux que requiera una tarjeta de sonido, en un servidor, que no tenga tarjeta de sonido. ¿Es posible crear una tarjeta de sonido ficticia? No estoy enterado de las partes internas del sistema de sonido de Linux. Por favor, apúntame en la dirección correcta.

He seguido este ejemplo: http://alsa.opensrc.org/.asoundrc pero no funcionó.

PD: Hay una pregunta similar: ¿Cómo crear un dispositivo de sonido virtual en Linux? . Pero esto es totalmente diferente en el contexto de que el usuario está creando un alias para la tarjeta de sonido ya disponible.


Editar:
Quiero que se cree un dispositivo ficticio en / dev / .. para que cualquier aplicación que necesite un dispositivo de sonido lo encuentre.
No estoy enterado de cómo funciona. Entonces simplemente seguí el ejemplo. Creé /etc/asound.conf con:

pcm.card0 {
    type hw
    card 0
}
ctl.card0 {
    type hw
    card 0
}

Y aplay -Lme da:

null
    Discard all samples (playback) or generate zero samples (capture)

Sí, existe un dispositivo de sonido "falso" en Alsa. Pero necesita explicar qué es exactamente lo que "no funcionó" para usted. Mensaje de error, no detectado por el software, etc. Además, ¿utiliza el "programa linux" de destino ALSA? Porque si no es así, jugar con los archivos de configuración de ALSA no te dará mucho.
Haimg

Quiero que se cree un dispositivo de sonido virtual en / dev / ...
ssapkota

Vea la edición para más.
ssapkota

Respuestas:


14

Necesita cargar un controlador de sonido ficticio . Consulte Alsa Wiki para obtener información detallada, pero aquí están los conceptos básicos:

  1. Cargue el controlador:

    modprobe snd-dummy; modprobe snd-pcm-oss; modprobe snd-mixer-oss; modprobe snd-seq-oss

  2. Tener el archivo .asoundrc adecuado (lo tiene cubierto)

  3. Configure la carga automática de los controladores. Agregue esto a /etc/modules.conf:

    # OSS / porción libre - tarjeta # 1
    alias sound-slot-0 snd-card-0
    alias sound-service-0-0 snd-mixer-oss
    alias sound-service-0-1 snd-seq-oss
    alias sound-service -0-3 snd-pcm-oss
    alias sound-service-0-8 snd-seq-oss
    alias sound-service-0-12 snd-pcm-oss

En realidad, hay bastantes cosas involucradas, le sugiero que visite la página Wiki de arriba para obtener una explicación más detallada.


Una pregunta. ¿Es posible crear un controlador de dispositivo de kernel de Linux que simule una tarjeta de sonido para Linux y luego alsa, OSS, etc.? Estoy leyendo un dispositivo Linux y preguntándome si es posible.
deFreitas

El módulo central para el secuenciador parece mostrarse como snd-seq-dummy ahora.
DBrown

11

Yo también tuve problemas con esto cuando intenté que un dispositivo Dummy Sound funcionara en Raspberry Pi con Raspian (derivado de Debian). El Pi encendido tiene una salida de audio pero no tiene entrada, y quiero usar una aplicación que busque ambos, aunque solo necesito una salida (PJSIP).

Sin embargo, la información anterior no funcionó para mí y tampoco la página de WiKi. Después de hablar con un usuario de la lista de correo de ALSA, sugirieron que la información en la página de WikI no está actualizada, sin embargo, me dieron sugerencias sobre cómo resolver esto.

En primer lugar, solo necesito cargar el módulo 'snd-dummy' usando:

sudo modprobe snd-dummy

Sin embargo, el dispositivo no permanece presente después de un reinicio. En Pi, este módulo se puede cargar a través del archivo '/ etc / modules', la edición de este archivo para cargar el controlador produjo los resultados deseados:

sudo nano /etc/modules

Mi archivo / etc / modules simplemente se ve así:

# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.
# Parameters can be specified after the module name.

snd-bcm2835
snd-dummy

Entonces, el controlador predeterminado se carga primero, luego el controlador Dummy se carga en segundo lugar. ¡Trabajo hecho!

Buena suerte

Chris


@logoff ¿crees que funcionaría en un contenedor acoplable así como en el rasberry pi?
thataustin

@thataustin Supongo que debes dar acceso al hardware al contenedor Docker. Sugiero probar primero sin Docker, y si tiene éxito, intente con Docker.
cierre de sesión

0

También lo uso para Linphone en RaspberryPi, ya que requiere un dispositivo de entrada, sin embargo, tuve que agregar fake_buffer = 0 param, de lo contrario, el dispositivo de captura ficticio captaría mucho ruido aleatorio, y eso sería extraño ... puedes hacerlo es como:

sudo modprobe snd-dummy fake_buffer=0
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.