如何在启动时自动运行 modprobe v4l2loopback?

如何在启动时自动运行 modprobe v4l2loopback?

我正在使用 OBS Studio,希望永久保存虚拟视频输出,以便可以在应用程序启动时运行它。

此命令创建虚拟输出:

sudo modprobe v4l2loopback video_nr=10 card_label="OBS Video Source" exclusive_caps=1

但是每次启动时我都必须在控制台中运行该命令。我怎样才能使它永久生效?利用 OBS Studio 中的输出的插件配置为自动启动,但/dev/video10系统重新启动后不可用。

$ modinfo v4l2loopback | grep -i parm
parm:           debug:debugging level (higher values == more verbose) (int)
parm:           max_buffers:how many buffers should be allocated (int)
parm:           max_openers:how many users can open loopback device (int)
parm:           devices:how many devices should be created (int)
parm:           video_nr:video device numbers (-1=auto, 0=/dev/video0, etc.) (array of int)
parm:           card_label:card labels for every device (array of charp)
parm:           exclusive_caps:whether to announce OUTPUT/CAPTURE capabilities exclusively or not (array of bool)
parm:           max_width:maximum frame width (int)
parm:           max_height:maximum frame height (int)

答案1

通常,内核模块可以添加到 /etc/modules 以便在启动时加载。


将其添加到 /etc/modules...

v4l2loopback video_nr=10 card_label="OBS Video Source" exclusive_caps=1

但是,我不知道是否可以在那里传递参数。所以这是另一种方法。

将其添加到 /etc/modules...

v4l2loopback

创建 /etc/modprobe.d/v4l2loopback.conf

options v4l2loopback video_nr=10 card_label="OBS Video Source" exclusive_caps=1

然后...

sudo update-initramfs -c -k $(uname -r)

reboot

确认模块加载...

lsmod | grep -i v4l2loopback

答案2

在 Ubuntu 20.04 和其他系统中执行此操作的简单方法:

$ sudo echo "v4l2loopback" > /etc/modules-load.d/v4l2loopback.conf 
$ sudo echo "options v4l2loopback video_nr=10 card_label=\"OBS Video Source\" exclusive_caps=1" > /etc/modprobe.d/v4l2loopback.conf

您可以重新启动来检查它是否正常工作!

注意

请注意 v4l2loopback-dkms 0.12.3-1ubuntu0.1 上的一个错误

更多信息这个 stackoverflow 帖子

编辑-使用 tee

正如 renyhp 所指出的,最好使用 tee 命令:

$ sudo echo "v4l2loopback" | tee /etc/modules-load.d/v4l2loopback.conf 
$ sudo echo "options v4l2loopback video_nr=10 card_label=\"OBS Video Source\" exclusive_caps=1" | tee /etc/modprobe.d/v4l2loopback.conf

编辑-更新模块

正如评论所说,似乎在某些系统重启后会出现一些问题。为了避免这种情况,更新模块总是一个好主意:

sudo update-initramfs -c -k $(uname -r)

相关内容