如何在Linux服务器中创建虚拟声卡设备?

如何在Linux服务器中创建虚拟声卡设备?

我想在没有声卡的服务器上运行需要声卡的 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

您需要加载假的声卡驱动程序。请参阅阿尔萨斯 维基了解详细信息,但基本信息如下:

  1. 加载驱动程序:

    modprobe snd-dummy;modprobe snd-pcm-oss;modprobe snd-mixer-oss;modprobe snd-seq-oss

  2. 有正确的 .asoundrc 文件(你已经覆盖了它)

  3. 配置驱动程序的自动加载。将其添加到/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

相关内容