在 Linux 上使用 v4l2loopback 虚拟摄像头和 google-chrome 或 chromium,同时使用真正的网络摄像头

rud*_*0lf 14 linux webcam virtual google-chrome chromium

(我希望在这里发布自己问题的答案并不违反 TOS,我这样做是因为我在写这篇文章时发现了解决方案,并且广泛的谷歌搜索没有帮助,所以我希望我可以帮助一些寻找解决方案的人。)

问题: Google chrome / chromium 无法打开 v4l2loopback 虚拟摄像头设备(无法访问它)并报告“没有可用的摄像头”,即使它有时在设置页面中列出并选择。

观察到的问题原因:(使用 OBS Cam Studio 时注意到)如果 Google chrome / chromium 发现真实相机设备正在使用(繁忙),则它不会访问(打开)虚拟相机设备。

rud*_*0lf 5

解决方案(简短版本)

  • 找出您的物理网络摄像头是哪个设备(可能是多个设备)如果您的相机是可插拔的,您可以断开它,然后观察 的结果ls /dev/video*,连接它,然后ls /dev/video*再次尝试查看出现了哪些设备(在我的情况下是/dev/video0/dev/video1) -大多数情况下会是/dev/video0
  • 启动你的捕获程序(使用物理网络摄像头并输出到虚拟相机的程序)并将其输出到虚拟相机(虚拟相机必须输入输入才能由chrome打开)
  • 禁用对物理网络摄像头的访问,(就我而言)可以通过以下方式完成:
sudo chmod 000 /dev/video0
sudo chmod 000 /dev/video1
Run Code Online (Sandbox Code Playgroud)

(使用您发现物理网络摄像头的设备名称)

  • 在 google chrome/chromium 中启动视频捕获(通过打开网页或按某种“启动网络摄像头”,这取决于网页)
  • 你现在应该可以在 Chrome 中看到虚拟摄像头的画面
  • 启用对物理网络摄像头的访问,完成(在我的例子中):
sudo chmod 660 /dev/video0
sudo chmod 660 /dev/video1
Run Code Online (Sandbox Code Playgroud)
  • 并做了!享受网络摄像的乐趣!

解决方案(长版):描述,一步一步,如何使 OBS Cam Studio 虚拟输出在 google chrome/chromium 中可见。

  • 如果您还没有这样做,请卸载 v4l2loopback 模块(如果您不知道“exclusive_caps”参数,请执行此操作):
sudo modprobe -r v4l2loopback
Run Code Online (Sandbox Code Playgroud)

(您需要停止任何虚拟摄像头输入并停止使用虚拟摄像头的应用程序,否则您将收到modprobe: FATAL: Module v4l2loopback is in use.错误)

  • 加载 v4l2loopback 模块(只有“exclusive_caps”参数重要):
sudo modprobe v4l2loopback devices=1 video_nr=21 exclusive_caps=1 card_label="Virtual Webcam"
Run Code Online (Sandbox Code Playgroud)

(此命令将创建一个环回设备,其名称/dev/video21和名称(标题)“虚拟网络摄像头”)该命令的更简单版本,这确实很重要:

sudo modprobe v4l2loopback exclusive_caps=1
Run Code Online (Sandbox Code Playgroud)
  • 启动使用物理网络摄像头并输出到虚拟网络摄像头设备的视频捕获程序(在我的例子中是 OBS Cam Studio) - 物理网络摄像头现在应该很忙(正在使用),并且虚拟网络摄像头应该输入输入(重要)
  • 通过以下方式禁用物理网络摄像头设备访问(在我的例子中):
sudo chmod 000 /dev/video0
sudo chmod 000 /dev/video1
Run Code Online (Sandbox Code Playgroud)

(设备名称可能与您的情况不同,并且可能只有其中之一)(如果您没有 sudo 访问权限并且您的相机是可插拔的,您只需拔掉它即可)

  • 开始使用 google chrome 或 chromium 的网络摄像头(进入网页并打开其上的网络摄像头,例如通过网页上的“使用我的网络摄像头”按钮 - 每个页面都不同)
  • 您现在应该看到虚拟网络摄像头(如果没有,请单击地址栏右侧的摄像头图标,单击“管理”并在设置中按名称选择您的虚拟网络摄像头,使网页再次使用网络摄像头)
  • 通过以下方式启用物理网络摄像头设备访问(在我的例子中):
sudo chmod 660 /dev/video0
sudo chmod 660 /dev/video1
Run Code Online (Sandbox Code Playgroud)

(如果您拔掉网络摄像头,请将其插回并(可能)在程序中重新打开它)

  • 在 Chrome 中享受虚拟网络摄像头!

我希望它能有所帮助,因为我在 OBS Cam Studio 中为 google chrome 打开虚拟网络摄像头苦苦挣扎了很长时间却没有任何效果。

编辑:找到基于类似原理的工作解决方案,它在这里: https: //www.scs.stanford.edu/~dm/blog/hide-webcam.html 它从可见网络摄像头列表中隐藏物理网络摄像头,因此您需要手动输入它的路径或在程序的配置设置中输入它的路径。

  • 您需要在此处添加答案。不仅仅是承认 (2认同)