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


20

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

是的,Alsa中有一种“虚拟”声音设备。但是,您需要详细说明到底有什么“无法解决”。错误消息,软件未检测到错误消息。另外,目标“ Linux程序”是否完全使用ALSA?因为如果不这样做,弄乱ALSA配置文件不会给您太多帮助。
2011年

我希望在/ dev / ...中创建虚拟声音设备
ssapkota,2011年

有关更多信息,请参见编辑。
ssapkota 2011年

Answers:


14

您需要加载虚拟声音驱动程序。有关详细信息,请参阅Alsa Wiki,但这是基础知识:

  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
    别名声音服务-0-8 snd- seq-oss
    别名声音服务-0-12 snd-pcm-oss

实际上涉及很多事情,我建议您访问上面的Wiki页面以获得更详细的解释。


一个问题。是否可以创建一个Linux内核设备驱动程序来模拟声卡到Linux,然后模拟alsa,OSS等?我正在阅读Linux设备并问自己是否有可能。
deFreitas

音序器的核心模块现在似乎显示为snd-seq-dummy。
DBrown

11

当试图在运行Raspian(Debian的衍生产品)的Raspberry Pi上运行Dummy Sound设备时,我也遇到了问题。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

因此,默认驱动程序先加载,然后虚拟驱动程序再加载。任务完成!

祝好运

克里斯


您认为@logoff是否可以在docker容器以及rasberry pi上使用?
thataustin

@thataustin我想您需要授予对Docker容器的硬件的访问权限。我建议先在没有Docker的情况下尝试,如果成功,请尝试Docker。
注销

0

我也将它用于RaspberryPi上的Linphone,因为它需要输入设备,但是我必须添加fake_buffer = 0参数,否则虚拟捕获设备会捕获很多随机噪声,这很奇怪...您可以做就如:

sudo modprobe snd-dummy fake_buffer=0
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.