标签: v4l2

v4l2_buffer-> timestamp值从哪里开始计数?

我正在尝试使用v4l2_buffer的时间戳值(类型timeval)来将从UVC网络摄像头捕获的图像同步到外部事件.

但是时间戳与系统时间或运行时间等不同:

printf("image captured at %ld, %ld\n",
   buffer->timestamp.tv_sec, 
   buffer->timestamp.tv_usec);

struct timeval tv;
gettimeofday(&tv, 0);
printf("current time %ld, %ld\n", tv.tv_sec, tv.tv_usec);
Run Code Online (Sandbox Code Playgroud)

结果是

image captured at 367746, 476270
current time 1335083395, 11225
Run Code Online (Sandbox Code Playgroud)

我的正常运行时间是10天.

v4l2

3
推荐指数
1
解决办法
4310
查看次数

OpenCV是否支持v4l2?

我正在使用OpenCV编写Python程序,但我无法从v4l2摄像头捕获图像.

我尝试使用PS2 EyeToy和Droidcam(Android虚拟网络摄像头),它们都使用v4l2,但它们都不起作用:cv.CaptureFromCAM(0)只返回None.

我可以在其他程序中使用两个网络摄像头(尝试过VLC和Kamerka).

我想OpenCV只支持v4l,而不支持v4l2.

我怎么解决这个问题?是否存在v4l2-> v4l转换器?

编辑:我读过cv.CaptureFromFile使用ffmpeg来解码视频文件.是否可以手动指定格式,所以我可以使用ffmpeg的video4linux2demuxer?

opencv v4l2

3
推荐指数
1
解决办法
5902
查看次数

图书馆的未定义参考,那么我怎样才能找到正确的路径?

我想在Ubuntu中编译一个v4l2示例,但是我收到以下错误:

guilherme@notedev01:~/Downloads/V4l2_samples-0.4.1$ make
gcc -O2  -L/usr/include -lX11 -lXext -o viewer viewer.c
/tmp/ccUjnjWQ.o: In function `image_destroy':
viewer.c:(.text+0x234): undefined reference to `XDestroyImage'
viewer.c:(.text+0x256): undefined reference to `XFreeGC'
viewer.c:(.text+0x277): undefined reference to `XShmDetach'
viewer.c:(.text+0x2ac): undefined reference to `XFreePixmap'
/tmp/ccUjnjWQ.o: In function `image_create':
viewer.c:(.text+0x305): undefined reference to `XCreateGC'
viewer.c:(.text+0x31d): undefined reference to `XGetWindowAttributes'
viewer.c:(.text+0x39e): undefined reference to `XShmCreateImage'
viewer.c:(.text+0x3f5): undefined reference to `XShmAttach'
viewer.c:(.text+0x44e): undefined reference to `XCreateImage'
viewer.c:(.text+0x494): undefined reference to `XShmQueryExtension'
viewer.c:(.text+0x4b4): undefined reference to `XShmPixmapFormat'
viewer.c:(.text+0x4dc): undefined reference to `XShmCreatePixmap'
/tmp/ccUjnjWQ.o: …
Run Code Online (Sandbox Code Playgroud)

linux ubuntu v4l2

3
推荐指数
1
解决办法
6390
查看次数

运行两个具有各自属性的 v4l2loopback 设备

使用 v4l2loopback 设备我可以运行这两个虚拟设备:

a) 将佳能数码单反相机的预览图像通过 USB 通过 v4l2loopback 运行到 OBS 中:

modprobe v4l2loopback
gphoto2 --stdout --capture-movie | gst-launch-1.0 fdsrc fd=0 ! decodebin name=dec ! queue ! videoconvert ! tee ! v4l2sink device=/dev/video0
Run Code Online (Sandbox Code Playgroud)

找到here,它的工作原理。

b) 将 OBS 的输出流式传输到基于浏览器的会议系统中,如下所示:

modprobe v4l2loopback devices=1 video_nr=10 card_label="OBS Cam" exclusive_caps=1
Run Code Online (Sandbox Code Playgroud)

这里找到,这也有效。

但是,我需要运行两个a)和b)在同一时间,预期这是行不通的。他们在干扰,似乎他们正在使用相同的缓冲区,视频在两个制作人之间来回翻转。

我学到的和尝试的:内核模块只能加载一次。可以使用命令卸载 v4l2loopback 模块modprobe -r v4l2loopback。我不知道第二次加载它是否会被忽略或卸载前一次。

我尝试将模块devices=2作为选项以及不同的视频设备加载,但我找不到正确的语法。

v4l2 v4l2loopback

3
推荐指数
2
解决办法
3596
查看次数

如何使用 video4linux api 获取网络摄像头设备支持的帧大小和帧间隔列表?

我正在尝试使用 V4L2 api 枚举网络摄像头设备支持的帧大小和帧速率。我尝试使用以下代码来完成此操作,但没有成功。ioctl 函数始终返回 -1。

#include <stdio.h>
#include <fcntl.h>
#include "linux/videodev2.h"
int main(int argc, char **argv) {
    int fd = open("/dev/video0", O_RDWR);
    struct v4l2_frmivalenum frmsize;
    memset(&frmsize, 0, sizeof (struct v4l2_frmsizeenum));
    ioctl(fd, VIDIOC_ENUM_FRAMEINTERVALS , &frmsize);
    printf("%u \n", frmsize.he);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c video4linux v4l2

2
推荐指数
1
解决办法
4762
查看次数

获得v4l2视频设备的最高分辨率

如何才能检测连接的视频设备能够提供的最大分辨率?

我不想捕获任何东西,只需从v4l2中检索此信息.

谢谢!

linux resolution video-capture v4l2

2
推荐指数
1
解决办法
3031
查看次数

当对象表示硬件组件时,我应该使用指向对象或对象的指针吗?

我有一个名为Camera的类,它在构造函数中打开带有v4l2_open等的摄像头.析构函数执行一些清理并使用v4l2_close关闭文件描述符.

当相机崩溃时,我所做的是删除对象,然后创建一个新对象:

Camera *camera = new Camera();
(...)
if (crash) {
  delete camera;
  camera = new Camera();
}
Run Code Online (Sandbox Code Playgroud)

这是C++中new/delete的正确用法吗?

c++ new-operator v4l2 delete-operator

2
推荐指数
1
解决办法
89
查看次数

通过 RTSP 发送 jpeg 图像(运动 jpeg) - gStreamer

您好,我正在尝试使用 gstreamer 构建视频流管道,但我很难使其工作。我有一个支持 MJPG 的相机,所以我想将 jpeg 图像传递给jpegparse并使用rtpjpegpay转换为 rtp 。

./test-launch --gst-debug=3 '(v4l2src device=/dev/video0 ! image/jpeg,width=800,height=600 ! jpegparse ! rtpjpegpay name=pay0 pt=96)'
Run Code Online (Sandbox Code Playgroud)

对于接收端,我尝试了 VLC 播放器,但没有成功打开文件。我不知道为什么 - 这是否意味着上面的语法不正确?

有人可以帮忙吗?

我试过

examples$ ./test-launch --gst-debug=3 '(v4l2src device=/dev/video0 ! image/jpeg,width=800,height=600 ! jpegparse ! rtpjpegpay name=pay0 pt=96)'
stream ready at rtsp://127.0.0.1:8554/test

0:00:05.121994463 207540 0x56458325ef60 ERROR           GST_PIPELINE grammar.y:453:gst_parse_element_set: could not set property "pt" in element "pay0" to "96)"
0:00:05.122054890 207540 0x56458325ef60 WARN                 default grammar.y:1137:priv_gst_parse_yyerror: Error during parsing: syntax error, unexpected $end
0:00:05.122069622 207540 0x56458325ef60 …
Run Code Online (Sandbox Code Playgroud)

rtsp gstreamer v4l2

2
推荐指数
1
解决办法
5574
查看次数

使用ffmpeg或OpenCV处理.Raw图像

阅读原始图像格式的维基百科页面后,这是任何图像的数字否定.

要观看或打印,必须处理相机图像传感器的输出,即转换为场景的照片渲染,然后以标准光栅图形格式(如JPEG)存储.无论是在相机内还是稍后在原始文件转换器中完成,该处理涉及许多操作,通常包括

我使用v4l2示例从我的Logitech c920中抓取了一些.raw文件但是当我显示图像时它看起来像这样: 原始框架文件 原始图像在其他帧中我可以看到我的影子

有谁知道如何处理这些文件以查看完整的框架?

这是原始.raw文件的链接

c opencv ffmpeg image-processing v4l2

1
推荐指数
1
解决办法
4627
查看次数

Gst-launch:在观看时保存视频流的每个图像

我目前正在尝试使用 gst-launch 将视频流保存到文件中,同时观看视频本身(使用 v4l2src)。到目前为止,我通过使用 ! multifilesink 同时拥有一个 tcl 脚本,它会自动显示 X 窗口中一个文件夹中的最新文件。这有效,但当然有一点我想减少的延迟。

是否有可能仅使用 gst-launch 来做到这一点?不幸的是,我对 gstreamer 不是很有经验。是否可以在使用 multifilesrc 显示文件的同时使用 multifilesink 保存文件?或者只有 gst-launch 是不可能的?

gstreamer v4l2 gst-launch

1
推荐指数
1
解决办法
4225
查看次数

v4l2-ctl - 参数列表?

我在互联网上找到了这个脚本,并尝试在 Google 上找到完整的参数列表,但没有成功:

# Record a video
v4l2-ctl --set-fmt-video=width=800,height=600,pixelformat=4
v4l2-ctl --stream-mmap=3 --stream-count=100 --stream-to=$1
exit
Run Code Online (Sandbox Code Playgroud)

你们知道如何旋转相机吗?

谢谢!

shell v4l2 raspberry-pi raspbian

0
推荐指数
1
解决办法
2万
查看次数