v4l2非常简单的例子

26
我正在寻找一个关于在Linux中使用V4L2访问相机的简单示例。你知道哪里可以找到吗?最好是尽可能简单易懂的例子。

谢谢。

3个回答

23

可以尝试使用这里的uvccapture代码 -> http://staticwave.ca/source/uvccapture/ 它是一个非常小但非常具体的示例,使用了所有V4l2概念(open、set format、allocate memory、Request Buffer、Dqbuffer和Query-buffer - 所有ioclts项目)。

uvcgrab()函数是需要查找的函数,它使用了Dqbuffer和Query-buffer。

ioctl (vd->fd, VIDIOC_DQBUF, &vd->buf);

ioctl (vd->fd, VIDIOC_QBUF, &vd->buf)

在学习过程中,您可以查看此链接以便更好地理解ioctl的定义。


6
在API规范中,有一个示例,也可以下载为C文件。请参考此链接此链接

这个例子对我来说可以工作,但是有点复杂。我发现了这个 http://credentiality2.blogspot.com/2010/04/v4l2-example.html 但它不适用于我 :( 我得到了读取错误22,无效的参数。 - Alex Ivasyuv
链接已经失效。我猜这个是有效的 链接,它可以工作,但只会将图像帧输出到标准输出... - Déjà vu

4
我建议尝试使用v4l-utils。它具有一些易于使用的API调用,可用于对v4l设备进行操作,并且源代码中有一个基于qt的示例,可用于构建自定义视频设备界面。请访问http://linuxtv.org/downloads/v4l-utils/

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接