问题标签 [video4linux]

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 投票
0 回答
875 浏览

gstreamer - 缺少 gstreamer 插件

我以前从未使用过 gstreamer,但我正在尝试使用它和 video4linuxloopback 将我的 iPad 变成一个陪审团操纵的网络摄像头。我有一个应用程序,可以将摄像机中的视频输出到本地网络上的 IP,但无论我做什么,我都一直从“pipeline0”获取 EOS。当尝试使用 decodebin 运行它以查看它是否可以自动检测所需内容时,它说它需要一个 text/html 插件,但我似乎找不到它,假设它存在。这是完整的日志

0 投票
0 回答
69 浏览

c++ - 有没有办法使用 C++ 在 linux 中获取视频设备的数量及其名称?

目前我使用ls -ltrh /dev/video*列出终端中的所有视频设备,或者在终端cat /sys/class/video4linux/video0/name中显示该视频设备的名称。我想知道有没有办法在 C++ 中调用一些 api 来获取这些信息?谢谢。

0 投票
0 回答
992 浏览

ffmpeg - 需要帮助配置 FFMPEG 以使用网络摄像头 h264 流

我一直在尝试从 H264 USB 网络摄像头获取 H264 流,但我没有取得太大进展,所以我希望有人比我更了解 FFMPEG!

SO上有几十个问题/答案,但没有一个能解决我的问题。

简而言之,我得到了一个非常像素化(或有时大部分是绿色)的屏幕。我正在使用 VLC 来测试来自 RTSP 服务器的流。我正在使用 FFMPEG 将网络摄像头流复制到本地 RTSP 服务器。

网络摄像头还支持我可以开始工作的 YUYV - 它只是 h264 流给我带来了问题。

所以这就是设备的呈现方式:

/dev/video0 是 YUYV 和 MPEG 流 /dev/video2 是具有以下功能的 h264 流:

我已经尝试了各种分辨率,较小的分辨率会稍微减少像素化图像,但没有一个是可用的,并且绝对不能与 YUYV 高分辨率结果相比。

这个(YUYV)命令有效:

这两个 h264 选项不起作用:

对于最后一个命令,FFMPEG 输出如下所示:

这个问题看起来与带宽相关或正在使用的设备缺乏处理能力但是YUYV 以高分辨率工作并且(采用完全不同的方法,即不使用 FFMPEG)我可以得到一个非常体面的 MPEG 流在相同的设备。

那么有任何 FFMPEG 专家可以帮助我获得正确的 h264 流参数吗?

0 投票
0 回答
28 浏览

bash - 如何将我的 USB 网络摄像头录制为 mp4 格式?

我已经尝试了几个小时将我的 USB 网络摄像头录制为 .mp4 文件格式。目前唯一有效的格式是 .avi。我在使用 video4linux2 的 RPi 上。

此代码不起作用:

打开文件时,我的视频播放器出现错误。我也尝试添加“-f mp4”,但这也不起作用。请帮忙。谢谢!

0 投票
1 回答
990 浏览

nginx - 使用 nginx 和 ffmpeg 的 RaspberryPi HLS 流式传输;v4l2 错误:ioctl(VIDIOC_STREAMON):协议错误

我正在尝试使用 Raspberry Pi(型号 4B,4GB RAM)和普通网络摄像头(带集成麦克风)来实现婴儿监控。我遵循了本教程:https ://github.com/DeTeam/webcam-stream/blob/master/Tutorial.md

简要说明:

  1. 我安装并配置了一个启用了 rtmp 模块的 nginx 服务器。
  2. 我用这个配置安装了ffmpeg --enable-gpl --enable-nonfree --enable-mmal --enable-omx-rpi
  3. 我试图流式传输;)

nginx 的配置似乎正在工作(有时流工作,服务器启动没有任何复杂性,当服务器启动并运行时,会显示网页)。ffmpeg 的配置似乎也很好,因为流媒体有时可以工作......

我正在尝试几个不同的 ffmpeg-commands;所有这些有时都在工作,有时会导致错误。该命令如下所示:

注意:我重新排列了代码以使其更易于阅读。在终端中,一切都在一条线上。-f video4linux2注意:使用代替时没有区别-f v4l2

摄像头被系统识别:

仅使用-i /dev/video0时,音频传输从未起作用。的输出arecord -L是:

这就是我添加的原因-i hw:CARD=Camera,DEV=0

如上所述,使用此配置和命令多次运行良好。但很多时候,我在开始流式传输时收到以下错误消息:

当我切换到/dev/video1(因为这也是 的输出v4l2-ctl --list-devices)时,我收到以下错误消息:

使用video0输入时,识别访问的网络摄像头 LED 常亮。使用时video1不。

经过数小时和数天的谷歌搜索、眼泪和威士忌,为了我的肝脏、我的婚姻和我的身心健康,我非常真诚地寻求你的帮助......我这样做是为了让它工作???

谢谢大家 :)

更新 1:

  1. 使用 ffmpeg 的完整路径不会改变任何东西......
  2. /dev/video0 和 /dev/video1 对每个人都有访问权限
  3. sudo ffmpeg ...也没有改变任何东西
  4. 问题似乎处于“早期阶段”。剥离命令会ffmpeg -i /dev/video0导致同样的问题

更新 2:
当我第一次启动另一个需要访问网络摄像头然后 ffmpeg 的应用程序时,似乎一切正常lsmod......在我开始应用程序之后......仍然感谢任何帮助......

更新 3:
我正在检查dmesg.
当我开始第一个应用程序时,我收到了这条消息:
uvcvideo: Failed to query (GET_DEF) UVC control 12 on unit 2: -32 (exp. 4).
当我开始时ffmpeg,什么也没发生,但一切正常......

0 投票
0 回答
207 浏览

linux - ffmpeg:视频中的单帧是高度过度曝光的图像

我在 Raspberry Pi 400 上使用 ffmpeg,连接到摄像头阵列以从每个摄像头捕获一张图像。

生成的大多数图像都高度过度曝光和褪色。我试图了解我应该设置哪些命令行选项来防止这种过度暴露。
样本严重过度曝光的图像

是否需要为相机设置选项以自动设置正确的曝光,或者以某种方式设置曝光长度而不仅仅是“帧”?

此外,每张图像大约需要 3 到 4 秒才能捕捉到。我只想捕获第一个可能的帧,仅此而已。是否有一组选项可以减少捕获图像的时间?

0 投票
1 回答
819 浏览

python - 错误 (893) 无法通过索引、python 和 jupyter notebook 打开相机

编码:

jupyter-notebook 窗口中的错误:

17 引发 IOError("无法打开网络摄像头")

OSError:无法打开网络摄像头

我有两个设备,一个内置网络摄像头/dev/video0和一个 USB 网络摄像头/dev/video1.

它们都出现在列表中ls -ltrh /dev/video*

两台相机都可以正常工作guvcview

我使用 jupyter-notebook 来运行上面的代码。

当我使用它时cap= cv2.VideoCapture(0),它工作正常。但是当我对 USB 摄像头使用 cap= cv2.VideoCapture(1) 时,我在终端中收到下一个错误:

[警告:0]全局/tmp/pip-req-build-ms668fyv/opencv/modules/videoio/src/cap_v4l.cpp(893)打开VIDEOIO(V4L2:/dev/video1):无法按索引打开摄像机

我试图将所有权限授予/dev/video1,sudo chmod 777 /dev/video1.

我正在使用linux mint。

0 投票
0 回答
121 浏览

image - 图像质量差,Raspberry Pi 3 V4L USB 摄像头 MJPG OpenCV

我有一个连接到 Raspberry Pi 3 的 4K USB 摄像头和 RPi 4 上相同型号的摄像头。通过 OpenCV 捕获图像后:

放大图像,20x100 像素

这是 RPi3 上图像的 100px 部分上的 20px,在 RPi4 上看起来更好。那些具有硬边框的奇怪块 auf 像素的原因是什么?会不会是驱动的问题?RPi3 没有互联网,因此没有进行 apt-get 更新。是压缩问题吗?v4l2-compliance 可能有用吗?

0 投票
0 回答
88 浏览

linux - Linux 上的自动 /dev/video* 分配

我需要将多个 USB 摄像头连接到我的 linux 系统。在任何时候,摄像机都可以与系统连接或断开。它们都与 video4linux 兼容,因此连接的在 /dev/video* (* 为 0,1,2...)。

有没有办法以将每个摄像机分配给特定的方式来设置系统/dev/video*

例如:

我有cam0 、cam1、cam2,希望/dev/video0 /dev/video1 /dev/video2将它们分别cam1分配分配给)/dev/video1/dev/video0

0 投票
0 回答
24 浏览

linux-kernel - v4l2 在使用 async kapi 时控制子设备上的继承

我目前正在研究嵌入式系统。我有一个设备树和 v4l2 设备/子设备,其中驱动程序“A”依赖于驱动程序“B”,驱动程序“B”依赖于驱动程序“C”。我想让驱动程序“B”先等待驱动程序“C”,然后驱动程序“B”注册到“A”。目前,我已将依赖项“A”<->“B”和“B”<->“C”映射到异步 kapi。到目前为止,这工作正常,除了在加载“C”之前“B”已经注册到“A”。这导致驱动程序“C”的控件在驱动程序“A”中不可见(使用 ctrl_handler 注册时,控件被转移到父驱动程序)。

我的问题:在这种情况下的一般方法是什么。我相信关键是在驱动程序“B”的探测函数中返回-EPROBE_DEFER。但是,我不清楚如何检查 DeviceTree 中的连接节点是否已加载其驱动程序。