我可以将 Linux 声卡的输入传送到两个不同的应用程序吗?

我可以将 Linux 声卡的输入传送到两个不同的应用程序吗?

我有一个 Ubuntu 16.04.3 LTS 系统

  • 华硕 Xonar DGX 声卡,以及
  • 通用 USB 声卡。

在我们的教堂,我们希望能够广播礼拜仪式并将其录制为 WAV 文件。为了实现这一点,我将来自声卡的 3.5 毫米音频输出电缆连接到分流器,这样就有两根电缆可以插入每个声卡上的“Line In”连接器。

然后,我使用“arecord”在一张卡上录制音频,使用“darkice”在另一张卡上创建 MP3 流。

理想情况下,我希望能够使用一个声卡同时处理录音和流媒体。这可能吗?还是我只能在两个应用程序中使用两个声卡?

答案1

是的,这很容易实现。您真的只运行 ALSA,还是还运行 Pulseaudio(多年来基本上所有发行版的默认设置)?

有了 Pulseaudio,它就可以开箱即用。

对于 ALSA,请确保使用plughw设备名称(内部添加插件dsnoop)而不是hw设备名称。dsnoop 插件将把输入流分成多个流以用于不同的应用程序。

编辑

正如我所说的,不要使用-D hw:0等(修改为您的硬件地址),只需使用-D plughw:0arecord并类似地使用中的设备名称darkice

条件是没有其他程序hw:0直接使用。所有程序都必须使用plughw:0

您实际上不需要了解有关的详细信息dsnoop,ALSA 会自动为您完成此操作。(但您可以在我链接的插件页面上阅读详细信息)。

您不必自行设置~/.asoundrc,也不必修改任何配置文件。

答案2

我接受了 dirkt 的回答,这对我帮助很大。结果我需要创建一个dsnoop界面:

/etc/asound.conf

pcm.custom_snoop_card {
    type dsnoop
    ipc_key 420042
    ipc_key_add_uid 1
    slave {
        pcm "hw:0,0"   # the actual device
        format S16_LE
        channels 2
        rate 44100
    }
}

现在我可以device = custom_snoop_card在我的darkice配置中指定,并同时使用arecord -D custom_snoop_card -f S16_LE -c2 -r 44100 -vv myfile.wav

相关内容