V4L2 摄像头应用

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

1.V4L2 是 Video for linux two 的简称是 Linux 内核中视频类设备的一套驱动框架为视频类设备驱动开发和应用层提供了一套统一的接口规范。

2.使用 V4L2 设备驱动框架注册的设备会在 Linux 系统/dev/目录下生成对应的设备节点文件设备节点的名称通常为 videoXX 标准一个数字编号 0、 1、 2、 3……每一个 videoX 设备文件就代表一个视频类设备。应用程序通过对 videoX 设备文件进行 I/O 操作来配置、使用设备类设备。

3.摄像头设备应用流程

1) 首先是打开摄像头设备

2) 查询设备的属性或功能

3) 设置设备的参数譬如像素格式、 帧大小、 帧率

4) 申请帧缓冲、 内存映射

5) 帧缓冲入队

6) 开启视频采集

7) 帧缓冲出队、对采集的数据进行处理

8) 处理完后再次将帧缓冲入队往复

9) 结束采集。

4.列出所有摄像头设备

使用v4l2-ctl --list-devices命令来获取当前开发板下都有哪些摄像头设备以及设备节点名称如下所示我们使用的是USB摄像头对应的设备节点为 /dev/video1

5.查看摄像头详细信息

使用 v4l2-ctl -L命令来列出摄像头设备的详细信息使用-d /dev/video1来指定查看的摄像头设备为/dev/video1

6.查看摄像头支持的像素格式和分辨率

使用v4l2-ctl --list-formats-ext命令来获取列出摄像头支持的像素格式分辨率大小以及帧率都有哪些使用 -d /dev/video1命令来指定获取的设备为/dev/video1。

7.使用mjpg_streamer预览摄像头数据

可选的-h查询帮助信息、-v查询版本信息、-b后台执行。

输入so插件包含input_uvc.so、input_testpicture.so、(input_file.so、input_ptp2.so、input_http.so)

输出so插件包含output_http.so、(output_file.so、output_udp.so、output_rtsp.so、output_viewer.so)

7.1执行mjpg_streamer获取摄像头数据

如下所示我们使用

-i参数指定输入的摄像头数据类型为uvc类型

-d参数指定使用的摄像头设备为/dev/video1

-r参数指定输入分辨率为640x480

-q参数指定uvc数据质量为90

-n参数说明不要初始化Linux-UVC驱动程序的dynctrls

-o参数指定输出类型为http方式

-w指定网站目录为 /usr/share/mjpg-streamer/www/

mjpg_streamer -i "/usr/lib/mjpg-streamer/input_uvc.so -d /dev/video1  -r 640x480 -f 30 -q 90 -n" -o "/usr/lib/mjpg-streamer/output_http.so -w /usr/share/mjpg-streamer/www/"

mjpg_streamer -i "/usr/lib/mjpg-streamer/input_uvc.so -d /dev/video1 -f 30 -q 90 -n" -o "/usr/lib/mjpg-streamer/output_http.so -w /usr/share/mjpg-streamer/www"

8.浏览器打开并查看摄像头数据

开发板IP地址为192.168.1.30 ,使用电脑浏览器打开如下地址即可预览摄像头数据。

192.168.1.30:8080

9.遇到问题

使用Buildroot配置选择MJPG-streamer直接编译生成映象文件

cd Buildroot_2020.02.x/
make menuconfig  //图形界面
/mjpg            //搜索mjpg
选择y,保存退出
make //进行编译

198M就可以比较流程的传输视频内容。

文件源码所在目录

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6