问题标签 [v4l2loopback]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
8794 浏览

linux - 如何将 mjpeg 从网络摄像头更改为 yuyv422 到 v4l2loopback?

背景故事:我使用的一个直播网站不够智能,无法检测我的网络摄像头(Logitech Brio,4k)的功能,而是只使用默认的每秒帧数设置,即 5fps。

(答案中的完整解决方案演练)

我能想到的最佳解决方案(除了更改直播提供商)是使用 v4l2loopback 创建一个环回虚拟网络摄像头,我可以强制使用我想在该直播网站上使用的确切设置。

对于 brio,更高的帧速率来自 mjpeg,而不是默认的 yuyv。

问题一:

我可以很容易地阅读 mjpeg,但不幸的是,我一直把头撞到墙上,因为 v4l2loopback 显然只想要 yuyv。

我试过这样的事情:

但他们不会工作。我收到如下错误:

与 yuvj422p 等效的未知 V4L2 像素格式

...使用过时的像素格式,请确保您正确设置了范围...

...V4L2 输出设备仅支持单个原始视频流...

最终我得到了这个工作:

问题 2

下一个问题是让 chrome 看到虚拟网络摄像头。它与 guvcview 一起正常工作,在 Firefox 上我可以使用网络摄像头测试站点,它会毫无问题地拿起虚拟摄像头。

事实证明,谷歌具有过度保护的性质(顺便说一句,它正在窃取我们所有的数据),不想使用可以读取和写入的网络摄像头。

因此,在启动 v4l2loopback 时,您必须告诉它向 chrome 等消费者宣布它是“只读”的。

这是我使用的确切的 modprobe:

0 投票
1 回答
3607 浏览

linux - 与 yuvj420p 等效的未知 V4L2 像素格式

我正在尝试将位于 Videos/video.mp4 中的 mp4 视频通过管道传输到位于 /dev/video0 的虚拟网络摄像头设备。

我尝试运行: ffmpeg -re -i Videos/video.mp4 -map 0:v -f v4l2 /dev/video0 并且我不断收到以下错误:

完整日志:

想要的结果是 mp4 视频被尝试查看网络摄像头的应用程序看到。我在没有网络摄像头或视频接口的桌面上运行它,这就是我使用的原因/dev/video0

0 投票
1 回答
412 浏览

stream - Genymotion 中的 v4l2loopback SMPTE 彩条

v4l2loopback在 Ubuntu 18.04 机器上运行v4l2-ctlvirtualbox安装。

Genymotion 相机彩虹噪声 SMPTE 彩条

我使用下面的命令来初始化环回相机:

上面第二个命令的输出是:

现在我可以从我的桌面输入输入

或者我的流 OBS:

两者都完美无缺;因为我可以使用WebRTCChromeFirefox和来查看输出ffplay

我的机器还运行了一个网络摄像头,/dev/video0它与genymotion.

但是当我选择我的“Hello world”时,会genymotion输出噪声(SMPTE 彩条)作为结果。

我的 Genymotion 出了什么问题?我发现UVC输出和v4l2loopback是有区别的。

0 投票
1 回答
3257 浏览

ffmpeg - ffmpeg 水平翻转网络摄像头到虚拟摄像机

我需要水平翻转我的网络摄像头图像以进行会议。我尝试了本网站 https://wiki.archlinux.org/index.php/Webcam_setup#Applications</Webcam setup> 中的说明,它使用 v4l2 和 v4l2loopback 生成虚拟相机。

检查新创建的相机的名称:

然后,您可以运行 ffmpeg 从您的实际网络摄像头(此处为 /dev/video0)中读取数据并将其反转并将其馈送到虚拟摄像头:

您可以在应用程序中使用“虚拟”相机而不是“集成”相机。

通过这些设置,我成功地垂直翻转了我的视频。但这不是我想要的。我希望它水平翻转。

所以我尝试了这个:

但是我没有从我的摄像头中得到任何图像。

我究竟做错了什么?

我在桌面上使用 Fedora 31。

完整的日志:

0 投票
1 回答
1387 浏览

c++ - 如何使用 v4l2loopback 将图像渲染到 /dev/video0?

我一直在尝试将图像渲染到 /dev/video。我可以得到一些东西来展示,但它有点乱。

我首先开始尝试渲染一个普通的 RGB24 图像(基于此示例https://stackoverflow.com/a/44648382/3818491),但结果(下图)是一个加扰的图像。

rgb24坏了

所以我检查了(我认为)/dev/video 所期望的似乎是 YUV420P。

所以我尝试将帧转换为该格式(使用代码快速测试)。

将规格调整为:

这导致了这个(这似乎来自我收集的 yuv420 图像的结构,但仍然呈现不正确)。

yuv420p坏了

/dev/video0 期望什么?

0 投票
1 回答
526 浏览

python - 尝试使用 PyFakeWebcam 时出现 IOError

因此,我最近尝试使用 PyFakeWebcam,但遇到了一些问题。每当我尝试用它做任何事情时,我都会遇到这个错误:

作为参考,我正在使用以下代码:

是什么导致了这个错误,它可以解决吗?

0 投票
1 回答
2882 浏览

amazon-web-services - v4l2loopback 无法在 aws ubuntu 18.04 上加载模块

目前正在尝试将 v4l2loopback 安装到 aws 的 ubuntu 18.04 实例中并面临当前情况

运行后(源安装也会发生同样的情况)

我有以下错误:

加载videodev( sudo modprobe videodev)也会发生同样的情况

有没有办法重新编译内核加载v4l2/videodev模块?或者云实例上 v4l2loopback 的任何替代方案?

0 投票
2 回答
5109 浏览

v4l2 - 运行两个具有各自属性的 v4l2loopback 设备

使用 v4l2loopback 设备我可以运行这两个虚拟设备:

a) 通过 USB 通过 v4l2loopback 从佳能 DSLR 运行预览图像到 OBS:

在这里找到,并且有效。

b) 将 OBS 的输出流式传输到基于浏览器的会议系统中,如下所示:

在这里找到,这也有效。

但是,我需要同时运行a ) 和 b) 这没有按预期工作。他们正在干扰,似乎他们正在使用相同的缓冲区,视频在两个制作人之间来回翻转。

我学到和尝试的:一个内核模块只能加载一次。可以使用命令卸载 v4l2loopback 模块modprobe -r v4l2loopback。我不知道是否会忽略第二次加载它或卸载前一次。

我尝试将模块devices=2作为选项以及不同的视频设备加载,但我找不到正确的语法。

0 投票
1 回答
1105 浏览

linux - FFmpeg v4l2 复制不稳定

序幕

ffmpeg在 Ubuntu 20.04 机器上使用 4.2.2 来克隆 USB 网络摄像头(v4l2设备为/dev/video0)的提要,以便多个应用程序可以访问提要。我使用了这个很有效的ffmpeg命令:

本质上,这使用了v4l2形式的回送设备(虚拟设备),/dev/video1而消费应用程序只是将其视为常规v4l2设备。

之后效果很好,我遇到了更改输出像素格式的需要(相关的SO 问题)。我的源设备提供yuv420p而接收器应用程序只能处理yuyv422. 为了实现这一点,我使用了-pix_fmt论点。但是,使用时不支持此功能,-codec copy因此我需要明确指定编解码器。这没问题,因为v4l2设备只支持原始视频(至少据我所知)。因此,我最终得到了这个:

问题

不幸的是,这似乎非常不稳定。在启动此命令的 10 次中大约有 1 次按预期工作:ffmpeg开始克隆提要并转换颜色格式:

然而,其他时候我得到非常古老的行为,除了第一帧(然后它冻结)之外,输出永远无法使用,并且ffmpeg在短短几秒钟内提到超过 100k 重复帧以及报告 FPS 超过 30'000 . 几秒钟后它会崩溃,或者它只是挂起,直到我Ctrl^C它:

我不知道是什么导致了这种行为,也不知道如何追踪和修复它。是否有人对这种行为有经验,或者我的设置是否存在简单问题?

注意:我正在使用 DroidCam。DroidCam 提供了一个 Linux 客户端,该客户端又提供了一个v4l2输出设备。除了一些小问题,我没有注意到任何与普通网络摄像头不同的行为。不幸的是,我无法使用普通的 USB UVC 网络摄像头重现这一点,因为网络摄像头已经提供了所需的输出像素格式。这种输出像素格式转换确实是必需的,因为DroidCam输出yuv420p但使用流的应用程序只能处理yuyv422.

0 投票
1 回答
400 浏览

module - Yocto 上的 v4l2loopback

我是 Yocto 的初学者,我尝试将 v4l2loopback 添加到我的图像中

我在 github ( https://github.com/umlaeute/v4l2loopback ) 上下载了当前源代码,并尝试使用配方进行编译

bitbake 给我:

我想我必须修补 Makefile 但我不知道如何

请帮我

谢谢