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

Mar*_*Lee 5 modprobe obs-studio 20.04

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

此命令创建虚拟输出:

sudo modprobe v4l2loopback video_nr=10 card_label="OBS Video Source" exclusive_caps=1
Run Code Online (Sandbox Code Playgroud)

但是我必须在每次启动时在控制台中运行命令。我怎样才能使它永久化?使用 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)
Run Code Online (Sandbox Code Playgroud)

hey*_*ema 8

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


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

v4l2loopback video_nr=10 card_label="OBS Video Source" exclusive_caps=1
Run Code Online (Sandbox Code Playgroud)

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

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

v4l2loopback
Run Code Online (Sandbox Code Playgroud)

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

options v4l2loopback video_nr=10 card_label="OBS Video Source" exclusive_caps=1
Run Code Online (Sandbox Code Playgroud)

然后...

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

reboot
Run Code Online (Sandbox Code Playgroud)

使用...确认模块加载

lsmod | grep -i v4l2loopback
Run Code Online (Sandbox Code Playgroud)


Pab*_*oRQ 6

在 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
Run Code Online (Sandbox Code Playgroud)

您可以重新启动来检查它是否有效!

注意

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

有关此 stackoverflow 帖子的更多信息。

编辑-使用三通

正如 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
Run Code Online (Sandbox Code Playgroud)

编辑 - 更新模块

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

sudo update-initramfs -c -k $(uname -r)
Run Code Online (Sandbox Code Playgroud)