问题标签 [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.
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:
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
stream - Genymotion 中的 v4l2loopback SMPTE 彩条
我v4l2loopback
在 Ubuntu 18.04 机器上运行v4l2-ctl
并virtualbox
安装。
我使用下面的命令来初始化环回相机:
上面第二个命令的输出是:
现在我可以从我的桌面输入输入
或者我的流 OBS:
两者都完美无缺;因为我可以使用WebRTC
、Chrome
、Firefox
和来查看输出ffplay
:
我的机器还运行了一个网络摄像头,/dev/video0
它与genymotion
.
但是当我选择我的“Hello world”时,会genymotion
输出噪声(SMPTE 彩条)作为结果。
我的 Genymotion 出了什么问题?我发现UVC输出和v4l2loopback是有区别的。
ffmpeg - ffmpeg 水平翻转网络摄像头到虚拟摄像机
我需要水平翻转我的网络摄像头图像以进行会议。我尝试了本网站 https://wiki.archlinux.org/index.php/Webcam_setup#Applications</Webcam setup> 中的说明,它使用 v4l2 和 v4l2loopback 生成虚拟相机。
检查新创建的相机的名称:
然后,您可以运行 ffmpeg 从您的实际网络摄像头(此处为 /dev/video0)中读取数据并将其反转并将其馈送到虚拟摄像头:
您可以在应用程序中使用“虚拟”相机而不是“集成”相机。
通过这些设置,我成功地垂直翻转了我的视频。但这不是我想要的。我希望它水平翻转。
所以我尝试了这个:
但是我没有从我的摄像头中得到任何图像。
我究竟做错了什么?
我在桌面上使用 Fedora 31。
完整的日志:
c++ - 如何使用 v4l2loopback 将图像渲染到 /dev/video0?
我一直在尝试将图像渲染到 /dev/video。我可以得到一些东西来展示,但它有点乱。
我首先开始尝试渲染一个普通的 RGB24 图像(基于此示例https://stackoverflow.com/a/44648382/3818491),但结果(下图)是一个加扰的图像。
所以我检查了(我认为)/dev/video 所期望的似乎是 YUV420P。
所以我尝试将帧转换为该格式(使用此代码快速测试)。
将规格调整为:
这导致了这个(这似乎来自我收集的 yuv420 图像的结构,但仍然呈现不正确)。
/dev/video0 期望什么?
python - 尝试使用 PyFakeWebcam 时出现 IOError
因此,我最近尝试使用 PyFakeWebcam,但遇到了一些问题。每当我尝试用它做任何事情时,我都会遇到这个错误:
作为参考,我正在使用以下代码:
是什么导致了这个错误,它可以解决吗?
amazon-web-services - v4l2loopback 无法在 aws ubuntu 18.04 上加载模块
目前正在尝试将 v4l2loopback 安装到 aws 的 ubuntu 18.04 实例中并面临当前情况
运行后(源安装也会发生同样的情况)
我有以下错误:
加载videodev
( sudo modprobe videodev
)也会发生同样的情况
有没有办法重新编译内核加载v4l2
/videodev
模块?或者云实例上 v4l2loopback 的任何替代方案?
v4l2 - 运行两个具有各自属性的 v4l2loopback 设备
使用 v4l2loopback 设备我可以运行这两个虚拟设备:
a) 通过 USB 通过 v4l2loopback 从佳能 DSLR 运行预览图像到 OBS:
在这里找到,并且有效。
b) 将 OBS 的输出流式传输到基于浏览器的会议系统中,如下所示:
在这里找到,这也有效。
但是,我需要同时运行a ) 和 b) ,这没有按预期工作。他们正在干扰,似乎他们正在使用相同的缓冲区,视频在两个制作人之间来回翻转。
我学到和尝试的:一个内核模块只能加载一次。可以使用命令卸载 v4l2loopback 模块modprobe -r v4l2loopback
。我不知道是否会忽略第二次加载它或卸载前一次。
我尝试将模块devices=2
作为选项以及不同的视频设备加载,但我找不到正确的语法。
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
.
module - Yocto 上的 v4l2loopback
我是 Yocto 的初学者,我尝试将 v4l2loopback 添加到我的图像中
我在 github ( https://github.com/umlaeute/v4l2loopback ) 上下载了当前源代码,并尝试使用配方进行编译
bitbake 给我:
我想我必须修补 Makefile 但我不知道如何
请帮我
谢谢