Wie können zwei Anwendungen in Linux/ALSA denselben (digitalen) Toneingang lesen?

Wie können zwei Anwendungen in Linux/ALSA denselben (digitalen) Toneingang lesen?

Ich habe eine Soundkarte mit einem AES/EBU-Eingangsport, auf den ich mit zwei Anwendungen gleichzeitig zugreifen möchte. Ich möchte den Eingang in Echtzeit in eine lineare WAV-Datei aufzeichnen und ihn gleichzeitig über IceCast streamen. Wenn ich naiv versuche, mit beiden Anwendungen auf dasselbe Eingabegerät zuzugreifen, wird mir von einer mitgeteilt, dass sie nicht auf das Gerät zugreifen kann. Wie kann ich ALSA einrichten, um dies zu erreichen? Oder muss ich es über ein externes Programm weiterleiten, was zu Verzögerungen führt?

Antwort1

Mit dem Plugin können Sie dsnoopdie Beispieldaten auf mehrere virtuelle Aufnahmegeräte kopieren.

Geben Sie etwa Folgendes in Ihr ~/.asoundrcoder ein /etc/asound.confund verwenden Sie es snooped_digitalals Gerätenamen in beiden Anwendungen:

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

verwandte Informationen