我想在没有声卡的服务器上运行需要声卡的 Linux 程序。是否可以创建虚拟声卡?我完全不了解 Linux 声音系统的内部原理。请给我指明正确的方向。
我遵循了这个例子:http://alsa.opensrc.org/.asoundrc但没有成功。
PS:还有类似的问题:如何在 Linux 中创建虚拟声音设备?。但是,这在用户为已经可用的声卡创建别名的情况下是完全不同的。
编辑:
我想在 /dev/.. 中创建一个虚拟设备,这样任何需要声音设备的应用程序都可以找到它。
我完全不知道 alsa 是如何工作的。所以我只是按照示例操作。我使用以下命令创建了 /etc/asound.conf:
pcm.card0 {
type hw
card 0
}
ctl.card0 {
type hw
card 0
}
并aplay -L
给我:
null
Discard all samples (playback) or generate zero samples (capture)
答案1
您需要加载假的声卡驱动程序。请参阅阿尔萨斯 维基了解详细信息,但基本信息如下:
加载驱动程序:
modprobe snd-dummy;modprobe snd-pcm-oss;modprobe snd-mixer-oss;modprobe snd-seq-oss
有正确的 .asoundrc 文件(你已经覆盖了它)
配置驱动程序的自动加载。将其添加到
/etc/modules.conf
:# OSS/空闲部分 - 卡 #1
别名 sound-slot-0 snd-card-0
别名 sound-service-0-0 snd-mixer-oss
别名 sound-service-0-1 snd-seq-oss
别名 sound-service-0-3 snd-pcm-oss 别名 sound-service-0-8
snd-seq-oss
别名 sound-service-0-12 snd-pcm-oss
实际上涉及的内容相当多,我建议您访问上面的 Wiki 页面以获得更详细的解释。
答案2
当我尝试让虚拟声音设备在运行 Raspian(Debian 的衍生产品)的 Raspberry Pi 上工作时,我也遇到了这个问题。Pi 上有音频输出,但没有输入,我想使用一个可以同时查找两者的应用程序,即使我只需要一个输出(PJSIP)。
但是,上面的信息对我不起作用,WiKi 页面也不起作用。在与 ALSA 邮件列表中的用户交谈后,他们表示 WikI 页面上的信息已经过时,但是他们给了我一些如何解决这个问题的建议。
首先,我只需要使用以下命令加载“snd-dummy”模块:
sudo modprobe snd-dummy
但是,重启后设备不再存在。在 Pi 上,可以通过“/etc/modules”文件加载此模块,编辑此文件以加载驱动程序可产生所需的结果:
sudo nano /etc/modules
我的 /etc/modules 文件如下所示:
# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.
# Parameters can be specified after the module name.
snd-bcm2835
snd-dummy
因此,默认驱动程序首先加载,然后虚拟驱动程序第二个加载。 任务完成!
祝你好运
克里斯
答案3
我也将它用于 RaspberryPi 上的 Linphone,因为它需要一个输入设备,但是我必须添加 fake_buffer=0 参数,否则虚拟捕获设备会捕获大量随机噪声,那就很奇怪了……您可以像这样执行此操作:
sudo modprobe snd-dummy fake_buffer=0