两个应用程序如何读取 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
    }
}

相关内容