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

v4l2loopback - 如何在设备(v4l2loopback)下提供多种分辨率?

如何在设备(v4l2loopback)下提供多种分辨率?想法是,根据请求读取流的内容,将运行不同的命令。背景是 v42loopback 由其他流提供,并且将从浏览器级别使用,并且浏览器动态更改分辨率(Jitsi)或用户将选择它。

因此优选地,如果请求即1920x1080,则源向v4l2loopback设备馈送这样的流,如果其他,则调整参数。同时对 v4l2loopback 设备(/dev/video42 或任何数字)的请求可能是 640x480,当时没有理由为 loopback 设备提供 FHD。

这可能更多是 RFE,因为可能需要更改一些代码。必须传递分辨率并使用参数调用脚本。同时,可以请求流的类型,即 h264、VP8 等,显然不可能将这样的多个流并行馈送到环回设备。

由于带宽/ cpu 功率,不可能提供具有多个资源的连续馈送,因此需要。

0 投票
2 回答
4126 浏览

ffmpeg - Chrome 检测到 v4l2loopback 设备,Zoom 或 Firefox 看不到

我正在尝试从我的网络摄像头创建一个环回设备,以便可以从 Zoom 和浏览器访问。我创建了三个 v4l2loopback 设备:

其次是:

Chrome 检测到这两种设备,但 Zoom 和 Firefox 都看不到。按照关于 stackoverflow 其他问题的建议,我尝试使用 v4l2loopback-ctl 设置设备属性,使用v4l2loopback-ctl set-caps "video/x-raw,format=UYVY,width=640,height=480" /dev/video10,并得到回应:

将管道设置为 PAUSED ... 错误:管道不想暂停。错误:来自元素 /GstPipeline:pipeline0/GstV4l2Sink:v4l2sink0:设备“/dev/video10”不是输出设备。附加调试信息:v4l2_calls.c(636):gst_v4l2_open ():/GstPipeline:pipeline0/GstV4l2Sink:v4l2sink0: Capabilities: 0x85208000 Setting pipeline to NULL ... Freeing pipeline ... output to /dev/video10 failed

我也尝试使用 gst-launch-1.0:

这告诉我 /dev/video10 不是输出设备:

将管道设置为 PAUSED ... 错误:管道不想暂停。错误:来自元素 /GstPipeline:pipeline0/GstV4l2Sink:v4l2sink0:设备“/dev/video10”不是输出设备。附加调试信息:v4l2_calls.c(636): gst_v4l2_open (): /GstPipeline:pipeline0/GstV4l2Sink:v4l2sink0: Capabilities: 0x85208000 Setting pipeline to NULL ...释放管道...

我正在运行 Xubuntu 20.04,内核版本 5.4.0-52-generic,带有 v4l2loopback-dkms v.0.12.3-1ubuntu0.1 和 v4l2loopback-utils。

我的目标是让桌面 Node.js 服务器使用一个设备,该服务器将使用xdg-open(因此需要 Chrome 和 Firefox)打开一个 Web 应用程序,这将输出一个可以被视频使用的经过处理的视频流聊天应用程序,例如 Zoom 或 Jitsi。

任何帮助将不胜感激。

0 投票
1 回答
222 浏览

python-3.x - How to use stdout.write in python3 when piping to ffmpeg?

My main goal for this project I'm working on is to use a python script to get any webcam footage, edit it with opencv, and then pipe the edited video frames with ffmpeg to a dummy webcam from v4l2loopback. Here's the sample code I made that runs exactly as I want to on python 2.7:

and then run it with

However, I want it to work with python3 instead of 2.7, and I found a way to make it work where I replace the "sys.stdout..." line with

This works well, except that it only runs at 14 fps while the 2.7 code could run at 30. I'm kind of at a loss as to how to fix this issue/ what this issue exactly is. I'm running this on a raspberry pi if that helps. Thanks so much!

0 投票
1 回答
1241 浏览

linux - 使用带有 v4l2 插件、ffmpeg 或 gstreamer 的 obs 将静态图像流式传输到 v4l2loopback

我想将静态图像流式传输到 android studio 模拟器。为此,我在 linux ubuntu 20.04 中使用 v4l2loopback v.12.5 创建了一个虚拟相机。虚拟摄像机在 /dev/video2 中创建。我可以使用 obs 和插件、ffmpeg 或 gstreamer 进行流式传输,但每个都有不同的问题。我不在乎哪个软件可以工作……我总是使用分辨率为 1920x1080 的图像来测试它。

OBS:我在这里 按照本教程安装了 obs 插件。它解释了如何安装 v4l2loopback 并将插件添加到 obs。该插件名为 obs-v4l2sink。我使用以下命令启动 v4l2loopback:

接着:

然后我用基本画布 1920x1080 启动 Obs 并输出 1920x1080。在插件中,我选择 NV12 作为视频格式,/dev/video2 作为 V4L2 设备。图像已成功发送到模拟器,但分辨率错误。使用 ffplay 我收到此消息:

“输入#0,video4linux2,v4l2,来自'/dev/video2':B sq= 0B f=0/0 持续时间:N/A,开始:1650.347834,比特率:27648 kb/s 流#0:0:视频: rawvideo (NV12 / 0x3231564E), nv12, 320x240, 27648 kb/s, 30 fps, 30 tbr, 1000k tbn, 1000k tbc"

看来,分辨率缩小到 320x240,我不知道为什么。

ffmpeg: 我可以使用以下命令通过 ffmpeg 流式传输到 /dev/video2:

但我在 ffplay 中只得到错误的像素,输出如下:

[video4linux2, v4l2 @ 0x7fb494000bc0] 出队的 v4l2 缓冲区包含 118784 字节,但预期为 115200。标志:0x00000001。

Gstreamer: Gstreamer 仅在我在 modprobe 之后不使用以下命令时才有效(如果我使用它,则管道被 Gstreamer 阻塞):

相反,我调用这个命令:

使用 ffplay 我在 1920x1080 中看到了我想要的图像,一切看起来都很好,但在 android studio 模拟器中我只得到一个奇怪的绿屏。我之前得到了这个绿屏,我认为它与错误的分辨率有关。我真的不知道这里有什么问题。模拟器多次显示这些日志:

我正在使用的 avd 是 Pixel2 1920x1080 Android 11 x86 64,我正在使用以下命令启动它:

0 投票
2 回答
416 浏览

google-chrome - 谷歌浏览器无法检测到 v4l2loopback 设备

我正在尝试使用ffmpegv4l2loopback传输我的屏幕,在运行命令时更多:

sudo modprobe v4l2loopback devices=1 video_nr=2 card_label="Camera Loopback"

ffmpeg -f x11grab -framerate 30 -video_size 1366x768 -i :0.0 -f v4l2 /dev/video2

chrome 没有检测到设备:/dev/video2,我尝试了一切让它工作,但 chrome 没有检测到它,我尝试添加过滤器:

-vf 格式=pix_fmts=yuv420p

但仍然没有。

Chrome:87.0.4280.66(64 位)
操作系统:LinuxMint 19.3
v4l2loopback:0.12.3

如果有人可以帮助我,请提前感谢您!

0 投票
1 回答
615 浏览

ffmpeg - 如何在将流编码到 v4l2-loopback 设备时将相机录制到文件?

所以我有这个罗技 c920 相机 1920x1080 h264 功能,我想将相机记录到文件中,同时将流复制/编码到环回设备,这样相机仍然可以被其他应用程序使用。这是我到目前为止得到的代码:

错误:

/dev/video0(loopbackdevice) 上的一些信息:

/dev/video1 中关于我的相机的一些信息

如果我删除脚本的第 3 行,相机会将视频和声音流完美地记录到文件中。我在第 3 行尝试了不同的东西,如 -vcodec 和与 pix-format 标志到 YUYV 相关的东西,但没有成功。是否可以仅通过一个 ffmpeg 进程来实现这一目标?声音是否也可用于环回设备?如何将其转码为环回设备使用的正确像素格式?

0 投票
0 回答
604 浏览

docker - Modprobe v4l2loopback docker build 失败

尝试构建安装了 v4l2loopback 的 docker 映像,但在安装后无法对其进行 modprobe。

尝试使用 buildx 构建后出现此错误

FATAL: Module v4l2loopback not found in directory /lib/modules/5.4.0-1038-aws

我也尝试从源代码构建

但无法构建它 make[1]: *** /lib/modules/5.4.0-1038-aws/build: No such file or directory.

0 投票
1 回答
270 浏览

amazon-web-services - 在 AWS EC2 上使用 v4l2loopback

我一直在尝试在 EC2 实例上设置 v4l2loopback 并收到错误modprobe: FATAL: Module v4l2loopback not found in directory /lib/modules/5.4.0-1041-aws消息sudo modprobe v4l2loopback

尝试使用加载 videodevsudo modprobe videodev也会返回相同的模块未找到错误。

我尝试为此安装 Linux 头文件,但没有成功。有什么线索吗?

0 投票
0 回答
201 浏览

c++ - 使用 v4l2loopback 和 openframeworks 创建一个虚拟相机

我想创建一个虚拟网络摄像头。当我运行我的程序时,我遇到了这个错误:

我用这个命令设置了我的虚拟相机:

我使用了 ofxGstV4L2Sink的一个分支,你可以在这里找到

这是命令的输出:

如果我这样做:

或者那个:

它工作得很好,我不知道为什么我的代码不能按预期工作。

谢谢你的帮助

0 投票
0 回答
191 浏览

gstreamer - 需要使用 gstreamer 将 RTSP 流解码为 V4l2loopback

我正在尝试将 RTSP 流解码到树莓派零上的 V4L2 设备。

首先我以这种方式创建一个环回设备..

然后我尝试将 RTSP 流解码为虚拟 V4L2 设备。如果我能把它变成 YUYV 格式,我会更喜欢..

当我用这个检查 V4L2 设备时......

v4l2-ctl -d 25 --list-formats ,我明白了……

当我尝试用 VLC 播放它时,没有任何反应。

我怀疑 gstreamer 管道不正确。我是 gstreamer 的新手,我在黑暗中摸索了一下。

有人可以给我一些关于我在这里做错了什么的提示吗?