问题标签 [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 回答
743 浏览

gstreamer - 如何使用 v4l2loopback 和 gstreamer 反转视频?

我正在尝试垂直反转视频,但我得到以下信息:

GST_DEBUG=2 gst-launch-1.0 v4l2src device=/dev/video0 ! videoconvert ! videoflip method=vertical-flip ! v4l2sink device=/dev/video1 Setting pipeline to PAUSED ... Pipeline is live and does not need PREROLL ... Setting pipeline to PLAYING ... 0:00:00.404780204 32410 0x23b1e30 WARN v4l2 gstv4l2object.c:2206:gst_v4l2_object_probe_caps_for_format_and_size:<v4l2sink0> Unknown frame interval type at YUYV@48x32: 0 New clock: GstSystemClock 0:00:00.404881855 32410 0x23b1e30 WARN v4l2 gstv4l2object.c:2206:gst_v4l2_object_probe_caps_for_format_and_size:<v4l2sink0> Unknown frame interval type at YUYV@48x32: 0 0:00:00.404943395 32410 0x23b1e30 WARN v4l2 gstv4l2object.c:2206:gst_v4l2_object_probe_caps_for_format_and_size:<v4l2sink0> Unknown frame interval type at UYVY@48x32: 0 0:00:00.405010945 32410 0x23b1e30 WARN v4l2 gstv4l2object.c:2206:gst_v4l2_object_probe_caps_for_format_and_size:<v4l2sink0> Unknown frame interval type at YU12@48x32: 0 0:00:00.405068424 32410 0x23b1e30 WARN v4l2 gstv4l2object.c:2206:gst_v4l2_object_probe_caps_for_format_and_size:<v4l2sink0> Unknown frame interval type at YV12@48x32: 0 0:00:00.405123299 32410 0x23b1e30 WARN v4l2 gstv4l2object.c:2206:gst_v4l2_object_probe_caps_for_format_and_size:<v4l2sink0> Unknown frame interval type at YVU9@48x32: 0 0:00:00.405179552 32410 0x23b1e30 WARN v4l2 gstv4l2object.c:2206:gst_v4l2_object_probe_caps_for_format_and_size:<v4l2sink0> Unknown frame interval type at YUV9@48x32: 0 0:00:00.405234361 32410 0x23b1e30 WARN v4l2 gstv4l2object.c:2206:gst_v4l2_object_probe_caps_for_format_and_size:<v4l2sink0> Unknown frame interval type at RGB4@48x32: 0 0:00:00.405287186 32410 0x23b1e30 WARN v4l2 gstv4l2object.c:2206:gst_v4l2_object_probe_caps_for_format_and_size:<v4l2sink0> Unknown frame interval type at BGR4@48x32: 0 0:00:00.405339302 32410 0x23b1e30 WARN v4l2 gstv4l2object.c:2206:gst_v4l2_object_probe_caps_for_format_and_size:<v4l2sink0> Unknown frame interval type at RGB3@48x32: 0 0:00:00.405396859 32410 0x23b1e30 WARN v4l2 gstv4l2object.c:2206:gst_v4l2_object_probe_caps_for_format_and_size:<v4l2sink0> Unknown frame interval type at BGR3@48x32: 0 0:00:00.405447885 32410 0x23b1e30 WARN v4l2 gstv4l2object.c:2206:gst_v4l2_object_probe_caps_for_format_and_size:<v4l2sink0> Unknown frame interval type at GREY@48x32: 0 0:00:00.405497954 32410 0x23b1e30 WARN v4l2 gstv4l2object.c:2206:gst_v4l2_object_probe_caps_for_format_and_size:<v4l2sink0> Unknown frame interval type at YVYU@48x32: 0 0:00:00.595326610 32410 0x23b1e30 WARN v4l2bufferpool gstv4l2bufferpool.c:541:gst_v4l2_buffer_pool_set_config:<v4l2src0:pool:src> libv4l2 converter detected, disabling CREATE_BUFS 0:00:00.821482196 32410 0x23b1e30 ERROR v4l2allocator gstv4l2allocator.c:1299:gst_v4l2_allocator_dqbuf:<v4l2sink0:pool:sink:allocator> buffer 1 was not queued, this indicate a driver bug. 0:00:00.821571739 32410 0x23b1e30 WARN basesrc gstbasesrc.c:2943:gst_base_src_loop:<v4l2src0> error: Internal data flow error. 0:00:00.821609647 32410 0x23b1e30 WARN basesrc gstbasesrc.c:2943:gst_base_src_loop:<v4l2src0> error: streaming task paused, reason error (-5) ERROR: from element /GstPipeline:pipeline0/GstV4l2Src:v4l2src0: Internal data flow error. Additional debug info: gstbasesrc.c(2943): gst_base_src_loop (): /GstPipeline:pipeline0/GstV4l2Src:v4l2src0: streaming task paused, reason error (-5) Execution ended after 0:00:00.417011242 Setting pipeline to PAUSED ... Setting pipeline to READY ... Setting pipeline to NULL ... Freeing pipeline ...

如果我不包含 videoflip 过滤器,这将有效。我已经尝试过很多不同的帽子。我想我需要更新版本的 v4l2loopback 驱动程序,但我不确定。

0 投票
0 回答
285 浏览

android - Android RTSP 到 v4l2 设备

我创建了一个应用程序,它采用 RTSP 流并将其显示为 SurfaceView。这很简单。但是我想知道是否可以在 Android 中获取 RTSP 流并使用它来创建 v4l2 设备,就像在 /dev/video0 等位置连接网络摄像头一样。

这可以使用 FFMPEG for Android 的编译版本或者更简单的方法来完成吗?

对此的任何指导将不胜感激!

0 投票
0 回答
2073 浏览

c++ - 使用 OpenCV 写入虚拟视频流

我正在使用 OpenCV 和 v4l2loopback 库来模拟视频设备:

然后我检查我有哪些设备:

video0 是我的实际相机,我从中抓取帧,然后我计划通过 OpenCV 处理它们并将其写入 video2(我相信这是一个接收器)。

这是我尝试这样做的方法:

据我所知,视频输出格式应该是YUYV(相当于YUY2OpenCV 中的)。如果我错了,请纠正我。在我的代码中,我还没有写入outputVideo任何内容,只是试图打开它进行写入,但outputVideo.isOpened()==false由于某种原因,我不断得到,输出中没有其他错误/信息:

我将不胜感激有关如何调试/解决此问题的任何建议或帮助。先感谢您!

0 投票
0 回答
542 浏览

linux - 来自 v4l2loopback 和 gstreamer 的 Unity3D WebCamTexture

我没有尝试从 Unity3D 访问虚拟 v4l2 相机。

虚拟相机是使用 gstreamer 创建的

并在使用时像

v4l2-ctl 的输出

但是该应用程序 - 与 /dev/video0 上的网络摄像头本身配合得很好 - 当指向 /dev/video1 时,它什么也不显示。

在 ~/.config/unity3d 中查看 Player.log 我发现

我不确定如何从这里着手修复统一应用程序和/或 gstreamer 管道中的一些错误。

0 投票
1 回答
907 浏览

webrtc - 通过 gstreamer 和 v4l2sink 提供的虚拟相机的 WebRTC 视频冻结

我正在尝试使用 WebRTC 在我的网页中使用我的 IP 摄像头 (Vstarcam C7837WIP) 捕获的视频。

IP cam 通过以太网电缆直接连接到我的计算机,我设法使用cheeselinux 14.04 上的应用程序访问视频,gstreamerv4l2sink使用此命令

不幸的是,我在使用带有 WebRTC 的虚拟网络摄像头时遇到了问题(例如在https://webrtc.github.io/samples/src/content/getusermedia/gum/)。在 Firefox 中选择相机后,视频显示相机图片并立即冻结。

同样,如果我使用

gst-launch-1.0 videotestsrc ! tee ! v4l2sink device=/dev/video1

我在浏览器中只看到一张图片但没有视频流 - 尽管在奶酪中它可以工作。

任何线索我如何才能获得可用于 WebRTC 的视频流?

编辑:

我从https://github.com/umlaeute/v4l2loopback下载了 v0.10.0并创建了虚拟视频设备modprobe v4l2loopback exclusive_caps=0

编辑2:

如果我使用也会发生同样的情况

0 投票
1 回答
284 浏览

javascript - 如何多次在环回中切换模型的数据源?attachTo 不工作

我有一个模型,我需要随时切换数据源。为此,我在该模型上创建了一个远程方法并使用了attachTo()方法。

我第一次调用远程方法时,数据源会相应更改。

例如,datasource1附加到myModel,现在我用 调用远程方法datasource2。这将工作得很好。

但是,如果我调用这个远程方法,传递datasource1- 之前附加的那个myModel- 它不会工作。console.log(Model.getDataSource().settings.name)显示数据源已更改,但是当我使用模型及其数据源时,它仍然是前一个。

datasources.local.js上,我已经声明了我将不断地从我的模型中附加和分离的数据源Model

因此,似乎我无法将数据源更改为同一模型以前使用过的数据源...我注意到问题不是切换到新的数据源,而是尝试附加之前已附加的数据源同型号。

0 投票
0 回答
858 浏览

android - android如何安装v4l2loopback驱动?

今天,我在ubuntu 12.04上编译了android驱动——v4l2loopback,然后,我通过adb把这个v4l2loopback.ko推送到android,然后运行这个命令:insmod v4l2loopback,然后通过命令dmesg,我得到这个提示:

所以我想知道:这个 android 是我真正的 android 手机,我应该怎么做?如果我安装此驱动程序成功,我的相机会自动调用此驱动程序吗?

0 投票
1 回答
6060 浏览

linux - 无法将网络摄像头视频路由到 Linux 上的虚拟视频设备(通过 OpenCV)

我想通过 OpenCV 将视频叠加到传入的网络摄像头流上。作为第一步,我尝试将来自网络摄像头的传入视频流式传输到(v4l2loopback)/dev/video0的虚拟视频设备。/dev/video1不幸的是,我无法将网络摄像头流转发到 v4l2loopback 设备。

我找到了这个线程:如何写入/管道到由 V4L2loopback 模块创建的虚拟网络摄像头?但那里的链接并没有真正帮助我。

从网络摄像头获取和观看视频流与 OpenCV 页面中的一些小演示代码配合得很好。以及来自 v4l2loopback 页面的示例代码,例如播放静态视频文件/dev/video1效果很好。当我将 VLC 连接到/dev/video1

我已经读到 v4l2loopback 设备必须通过常规的 Linux 驱动程序命令(open、ioctl、write 等)来控制。因此,OpenCV 中没有用于写入环回设备的包装类。我的网络摄像头以 640x480 和 MJPG 格式传输。有趣的是,我可以用 VLC 连接到环回设备,当我按下播放时,我可以看到正确的分辨率、编解码器和 FPS。进度条上的时间计数器也开始运行。但屏幕仍然是黑色的(带有 VLC 标志)。

我大致在做的是这个(顺便说一句:代码可能无法编译......不想让这里的一切变得混乱......如果您需要更多详细信息,请告诉我):

如果有人能给我一个提示,我需要如何转换 wecam 数据以使其被 VLC 接受,那就太好了。

0 投票
1 回答
412 浏览

genymotion - Genymotion 和 v4l2loopback

我想在 Genymotion 上使用模拟网络摄像头。我已经在我的 Ubuntu 桌面上安装了 v4l2loopback,它工作正常(在网页或 Cheese 上),但 Genymotion 上没有相机。

也许是因为相机使用的是 v4l2 驱动程序?还是有一些精确的规格(像素格式,颜色......)来调整?

谢谢 :)

0 投票
1 回答
751 浏览

linux-device-driver - 使 linux 虚拟设备驱动程序与 udev 一起工作

我正在尝试修复v4l2loopback驱动程序以与 udev 一起使用(让 udev 自动分配稳定的设备名称)。

问题似乎是,设备驱动程序没有公开一些 udev 似乎需要正确使用标准的字段60-persistent-v4l.rules,即:

  • ID_BUS
  • ID_SERIAL
  • ID_PATH

此外,udevadm test-builtin path_id在设备上运行不会返回任何内容(退出代码为1)。

现在我在网上找到的任何示例都假定我想编写一个 USB 设备驱动程序。v4l2loopback不幸的是,对于作为设备的设备而言,情况并非如此virtual

所以问题是:

如何将PATH,SERIALBUS属性添加到虚拟设备驱动程序,以便udev查看它们?

注意:这个问题的真正目标是修复设备驱动程序,以便它与现有的 udev 规则很好地配合(而不是调整 udev 以便正确识别设备)。