我正在使用 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)