![我可以将 Linux 声卡的输入传送到两个不同的应用程序吗?](https://linux22.com/image/1540665/%E6%88%91%E5%8F%AF%E4%BB%A5%E5%B0%86%20Linux%20%E5%A3%B0%E5%8D%A1%E7%9A%84%E8%BE%93%E5%85%A5%E4%BC%A0%E9%80%81%E5%88%B0%E4%B8%A4%E4%B8%AA%E4%B8%8D%E5%90%8C%E7%9A%84%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E5%90%97%EF%BC%9F.png)
我有一个 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:0
,arecord
并类似地使用中的设备名称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