Как два приложения могут считывать данные с одного и того же (цифрового) звукового входа в Linux/ALSA?

Как два приложения могут считывать данные с одного и того же (цифрового) звукового входа в Linux/ALSA?

У меня есть звуковая карта с входным портом AES/EBU, к которой я хочу получить доступ с двух приложений одновременно. Я хочу записывать вход в линейный WAV-файл в реальном времени, а также транслировать его через IceCast. Если я наивно попытаюсь получить доступ к одному и тому же устройству ввода с обоих приложений, одно из них скажет мне, что не может получить доступ к устройству. Как мне настроить ALSA, чтобы добиться этого? Или мне нужно ретранслировать его через какую-то внешнюю программу, внося задержки?

решение1

Вы можете использовать dsnoopплагин для копирования данных образца на несколько виртуальных устройств захвата.

Введите что-то вроде этого в ваш ~/.asoundrcили /etc/asound.confи используйте snooped_digitalв качестве имени устройства в обоих приложениях:

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

Связанный контент