问题标签 [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.
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 驱动程序,但我不确定。
android - Android RTSP 到 v4l2 设备
我创建了一个应用程序,它采用 RTSP 流并将其显示为 SurfaceView。这很简单。但是我想知道是否可以在 Android 中获取 RTSP 流并使用它来创建 v4l2 设备,就像在 /dev/video0 等位置连接网络摄像头一样。
这可以使用 FFMPEG for Android 的编译版本或者更简单的方法来完成吗?
对此的任何指导将不胜感激!
c++ - 使用 OpenCV 写入虚拟视频流
我正在使用 OpenCV 和 v4l2loopback 库来模拟视频设备:
然后我检查我有哪些设备:
video0 是我的实际相机,我从中抓取帧,然后我计划通过 OpenCV 处理它们并将其写入 video2(我相信这是一个接收器)。
这是我尝试这样做的方法:
据我所知,视频输出格式应该是YUYV
(相当于YUY2
OpenCV 中的)。如果我错了,请纠正我。在我的代码中,我还没有写入outputVideo
任何内容,只是试图打开它进行写入,但outputVideo.isOpened()==false
由于某种原因,我不断得到,输出中没有其他错误/信息:
我将不胜感激有关如何调试/解决此问题的任何建议或帮助。先感谢您!
linux - 来自 v4l2loopback 和 gstreamer 的 Unity3D WebCamTexture
我没有尝试从 Unity3D 访问虚拟 v4l2 相机。
虚拟相机是使用 gstreamer 创建的
并在使用时像
v4l2-ctl 的输出
但是该应用程序 - 与 /dev/video0 上的网络摄像头本身配合得很好 - 当指向 /dev/video1 时,它什么也不显示。
在 ~/.config/unity3d 中查看 Player.log 我发现
我不确定如何从这里着手修复统一应用程序和/或 gstreamer 管道中的一些错误。
webrtc - 通过 gstreamer 和 v4l2sink 提供的虚拟相机的 WebRTC 视频冻结
我正在尝试使用 WebRTC 在我的网页中使用我的 IP 摄像头 (Vstarcam C7837WIP) 捕获的视频。
IP cam 通过以太网电缆直接连接到我的计算机,我设法使用cheese
linux 14.04 上的应用程序访问视频,gstreamer
并v4l2sink
使用此命令
不幸的是,我在使用带有 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:
如果我使用也会发生同样的情况
javascript - 如何多次在环回中切换模型的数据源?attachTo 不工作
我有一个模型,我需要随时切换数据源。为此,我在该模型上创建了一个远程方法并使用了attachTo()方法。
我第一次调用远程方法时,数据源会相应更改。
例如,datasource1
附加到myModel
,现在我用 调用远程方法datasource2
。这将工作得很好。
但是,如果我调用这个远程方法,传递datasource1
- 之前附加的那个myModel
- 它不会工作。console.log(Model.getDataSource().settings.name)显示数据源已更改,但是当我使用模型及其数据源时,它仍然是前一个。
在datasources.local.js上,我已经声明了我将不断地从我的模型中附加和分离的数据源Model
。
因此,似乎我无法将数据源更改为同一模型以前使用过的数据源...我注意到问题不是切换到新的数据源,而是尝试附加之前已附加的数据源同型号。
android - android如何安装v4l2loopback驱动?
今天,我在ubuntu 12.04上编译了android驱动——v4l2loopback,然后,我通过adb把这个v4l2loopback.ko推送到android,然后运行这个命令:insmod v4l2loopback,然后通过命令dmesg,我得到这个提示:
所以我想知道:这个 android 是我真正的 android 手机,我应该怎么做?如果我安装此驱动程序成功,我的相机会自动调用此驱动程序吗?
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 接受,那就太好了。
genymotion - Genymotion 和 v4l2loopback
我想在 Genymotion 上使用模拟网络摄像头。我已经在我的 Ubuntu 桌面上安装了 v4l2loopback,它工作正常(在网页或 Cheese 上),但 Genymotion 上没有相机。
也许是因为相机使用的是 v4l2 驱动程序?还是有一些精确的规格(像素格式,颜色......)来调整?
谢谢 :)
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
,SERIAL
和BUS
属性添加到虚拟设备驱动程序,以便udev
查看它们?
注意:这个问题的真正目标是修复设备驱动程序,以便它与现有的 udev 规则很好地配合(而不是调整 udev 以便正确识别设备)。