- 1、本文档共12页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[特别推荐]视编程
Linux下视频编程 收藏
关于Linux的视频编程(v4l2编程)
Posted on 星期一, 2月 23rd, 2009 at 11:47 下午
前言:目前正在忙于ARM 平台的Linux 应用程序的开发(其实是刚刚起步学习啦)。底层的东西不用考虑了,开发板子提供了NAND Bootloader ,和Linux 2.6 的源码,而且都编译好了。自己编译的bootloader 可以用,但是Linux 编译后,文件很大,暂且就用人家编译的系统,先专心写应用程序 吧。。
正文:要做的任务是,把一块板子上的摄像头采集的图像和声卡采集的声音(貌似很啰嗦哈)通过TCP/IP 协议传输到另一块板子上。第一步,先把视频获取并且在本地LCD 上显示。看了板子提供的文档,视频传输需要用V4L2 的API 。
一. 什么是video4linux
Video4linux2 (简称V4L2), 是linux 中关于视频设备的内核驱动。在Linux 中,视频设备是设备文件,可以像访问普通文件一样对其进行读写,摄像头在/dev/video0 下。
二、一般操作流程(视频设备):
1. 打开设备文件。 int fd=open(”/dev/video0″,O_RDWR);
2. 取得设备的capability ,看看设备具有什么功能,比如是否具有视频输入, 或者音频输入输出等。VIDIOC_QUERYCAP,struct v4l2_capability
3. 选择视频输入,一个视频设备可以有多个视频输入。VIDIOC_S_INPUT,struct v4l2_input
4. 设置视频的制式和帧格式,制式包括PAL ,NTSC ,帧的格式个包括宽度和高度等。
VIDIOC_S_STD,VIDIOC_S_FMT,struct v4l2_std_id,struct v4l2_format
5. 向驱动申请帧缓冲,一般不超过5 个。struct v4l2_requestbuffers
6. 将申请到的帧缓冲映射到用户空间,这样就可以直接操作采集到的帧了,而不必去复制。mmap
7. 将申请到的帧缓冲全部入队列,以便存放采集到的数据.VIDIOC_QBUF,struct v4l2_buffer
8. 开始视频的采集。VIDIOC_STREAMON
9. 出队列以取得已采集数据的帧缓冲,取得原始采集数据。VIDIOC_DQBUF
10. 将缓冲重新入队列尾, 这样可以循环采集。VIDIOC_QBUF
11. 停止视频的采集。VIDIOC_STREAMOFF
12. 关闭视频设备。close(fd);
三、常用的结构体( 参见/usr/include/linux/videodev2.h) :
struct v4l2_requestbuffers reqbufs;// 向驱动申请帧缓冲的请求,里面包含申请的个数
struct v4l2_capability cap;// 这个设备的功能,比如是否是视频输入设备
struct v4l2_input input; // 视频输入
struct v4l2_standard std;// 视频的制式,比如PAL ,NTSC
struct v4l2_format fmt;// 帧的格式,比如宽度,高度等
struct v4l2_buffer buf;// 代表驱动中的一帧
v4l2_std_id stdid;// 视频制式,例如:V4L2_STD_PAL_B
struct v4l2_queryctrl query;// 查询的控制
struct v4l2_control control;// 具体控制的值
下面具体说明开发流程(网上找的啦,也在学习么)
打开视频设备
在V4L2 中,视频设备被看做一个文件。使用open 函数打开这个设备:
// 用非阻塞模式打开摄像头设备
int cameraFd ;
cameraFd = open (“/dev/video0″ , O_RDWR | O_NONBLOCK , 0);
// 如果用阻塞模式打开摄像头设备,上述代码变为:
//cameraFd = open(”/dev/video0″, O_RDWR, 0);
关于阻塞模式和非阻塞模式
应用程序能够使用阻塞模式或非阻塞模式打开视频设备,如果使用非阻塞模式调用视频设备,即使尚未捕获到信息,驱动依旧会把缓存(DQBUFF )里的东西返回给应用程序。
设定属性及采集方式
打开视频设备后,可以设置该视频设备的属性,例如裁剪、缩放等。这一步是可选的。在Linux 编程中,一般使用ioctl 函数来对设备的I/O 通道进行管理:
您可能关注的文档
- xx工程建设公劳务采购书范本模板.doc
- xx矿KBSG630变压器技术协议.doc
- XX项目需求调计划.doc
- Y029线公路验检测监理实施细则.doc
- y09-550激光尘埃粒子计数器和3887c尘埃粒子计数器价格.docx
- YA-VA倒瓶菌机和KL-BSSJJ50-500型巴氏鲜奶杀菌机价格.docx
- Yamaha雅哈AG03-AG06 DSP Controller 使用指南.doc
- YCM-30食多功能搅拌机和JB_300变频真空搅拌机价格.docx
- YLT系列氯压项目IPO上市咨询(2013年必威体育精装版细分市场+募投可研+招股书底稿)综合解决方案.docx
- Y系列电动机和相电动机价格.docx
- 10《那一年,面包飘香》教案.docx
- 13 花钟 教学设计-2023-2024学年三年级下册语文统编版.docx
- 2024-2025学年中职学校心理健康教育与霸凌预防的设计.docx
- 2024-2025学年中职生反思与行动的反霸凌教学设计.docx
- 2023-2024学年人教版小学数学一年级上册5.docx
- 4.1.1 线段、射线、直线 教学设计 2024-2025学年北师大版七年级数学上册.docx
- 川教版(2024)三年级上册 2.2在线导航选路线 教案.docx
- Unit 8 Dolls (教学设计)-2024-2025学年译林版(三起)英语四年级上册.docx
- 高一上学期体育与健康人教版 “贪吃蛇”耐久跑 教案.docx
- 第1课时 亿以内数的认识(教学设计)-2024-2025学年四年级上册数学人教版.docx
文档评论(0)