¿Cómo pueden dos aplicaciones leer desde la misma entrada de sonido (digital) en Linux/ALSA?

¿Cómo pueden dos aplicaciones leer desde la misma entrada de sonido (digital) en Linux/ALSA?

Tengo una tarjeta de sonido con un puerto de entrada AES/EBU a la que quiero acceder con dos aplicaciones simultáneamente. Quiero grabar la entrada en un archivo WAV lineal en tiempo real y al mismo tiempo transmitirla a través de IceCast. Si ingenuamente intento acceder al mismo dispositivo de entrada con ambas aplicaciones, uno me dice que no puede acceder al dispositivo. ¿Cómo puedo configurar ALSA para lograr esto? ¿O tengo que transmitirlo a través de algún programa externo, introduciendo retrasos?

Respuesta1

Puede utilizar el dsnoopcomplemento para copiar los datos de muestra en múltiples dispositivos de captura virtuales.

Coloque algo como esto en su ~/.asoundrco /etc/asound.confy utilícelo snooped_digitalcomo nombre de dispositivo en ambas aplicaciones:

pcm.snooped_digital {
    type dsnoop
    slave {
        pcm "hw:2,1"   # the actual device
        channels 2
        rate 48000
    }
}

información relacionada