关于Linux下的视频编程
2010-08-19 03:17
295 查看
1. video4liinux2(v4l2)是视频设备的内核驱动,摄像头在/dev/video0下
2. 视频设备的操作流程
A 打开 fb = open("/dev/video0", O_RDWR)
B 得到设备的capability,包括设备的功能,比如视频输入或者音频输入输出
C 选择视频输入
D 设置视频制式(PAL,NTSC)和帧格式(宽度和高度)
E 申请帧缓冲
F 帧缓冲映射到用户空间后直接操作帧
G 帧缓冲全部入队列存放采集到的数据
H 开始采集视频
I 出对列取得已采集数据的帧缓冲
J 缓冲重新入队列尾,循环采集
K 停止视频采集
L 关闭视频设备
3. 打开视频设备
open("/dev/video0", O_RDWR | O_NONBLOCK, 0); // 阻塞方式打开
open("/dev/video0", O_RDWR, 0); // 非阻塞方式打开,即使没有捕捉到信息也会把缓存里的东西返回到应用程序
4. 设定属性和采集方式
v4l2开发中ioctl方法的一些常用命令包括:
VIDIOC_REQBUFS
:分配内存
VIDIOC_QUERYBUF
:把VIDIOC_REQBUFS
中分配的数据缓存转换成物理地址
VIDIOC_QUERYCAP
:获得当前设备的各个树形,查看设备对各项功能的支持程度
VIDIOC_ENUM_FMT
:获取当前驱动支持的视频格式
VIDIOC_S_FMT
:设置当前驱动的频捕获格式
VIDIOC_G_FMT
:读取当前驱动的频捕获格式
VIDIOC_TRY_FMT
:验证当前驱动的显示格式
VIDIOC_CROPCAP
:查询驱动的修剪能力
VIDIOC_S_CROP
:设置视频信号的边框
VIDIOC_G_CROP
:读取视频信号的边框
VIDIOC_QBUF
:把数据从缓存中读取出来
VIDIOC_DQBUF
:把数据放回缓存队列
VIDIOC_STREAMON
:开始视频显示函数
VIDIOC_STREAMOFF
:结束视频显示函数
VIDIOC_QUERYSTD
:检查当前视频设备支持的标准,例如PAL
或NTSC
5. 通过VIDIOC_ENUMINPUT和VIDIOC_ENUMOUTPUT分别列举一个input和output的信息存放在v4l2_input结构体变量中,该结构体中的index用来指定所要查询的是第几个input/output。
2. 视频设备的操作流程
A 打开 fb = open("/dev/video0", O_RDWR)
B 得到设备的capability,包括设备的功能,比如视频输入或者音频输入输出
C 选择视频输入
D 设置视频制式(PAL,NTSC)和帧格式(宽度和高度)
E 申请帧缓冲
F 帧缓冲映射到用户空间后直接操作帧
G 帧缓冲全部入队列存放采集到的数据
H 开始采集视频
I 出对列取得已采集数据的帧缓冲
J 缓冲重新入队列尾,循环采集
K 停止视频采集
L 关闭视频设备
3. 打开视频设备
open("/dev/video0", O_RDWR | O_NONBLOCK, 0); // 阻塞方式打开
open("/dev/video0", O_RDWR, 0); // 非阻塞方式打开,即使没有捕捉到信息也会把缓存里的东西返回到应用程序
4. 设定属性和采集方式
v4l2开发中ioctl方法的一些常用命令包括:
VIDIOC_REQBUFS
:分配内存
VIDIOC_QUERYBUF
:把VIDIOC_REQBUFS
中分配的数据缓存转换成物理地址
VIDIOC_QUERYCAP
:获得当前设备的各个树形,查看设备对各项功能的支持程度
VIDIOC_ENUM_FMT
:获取当前驱动支持的视频格式
VIDIOC_S_FMT
:设置当前驱动的频捕获格式
VIDIOC_G_FMT
:读取当前驱动的频捕获格式
VIDIOC_TRY_FMT
:验证当前驱动的显示格式
VIDIOC_CROPCAP
:查询驱动的修剪能力
VIDIOC_S_CROP
:设置视频信号的边框
VIDIOC_G_CROP
:读取视频信号的边框
VIDIOC_QBUF
:把数据从缓存中读取出来
VIDIOC_DQBUF
:把数据放回缓存队列
VIDIOC_STREAMON
:开始视频显示函数
VIDIOC_STREAMOFF
:结束视频显示函数
VIDIOC_QUERYSTD
:检查当前视频设备支持的标准,例如PAL
或NTSC
5. 通过VIDIOC_ENUMINPUT和VIDIOC_ENUMOUTPUT分别列举一个input和output的信息存放在v4l2_input结构体变量中,该结构体中的index用来指定所要查询的是第几个input/output。
相关文章推荐
- 关于Linux的视频编程(v4l2编程)
- 关于Linux的视频编程(v4l2编程)
- 关于Linux的视频编程(v4l2编程)
- 关于Linux的视频编程(v4l2编程)
- 关于Linux的视频编程(v4l2编程)
- 关于Linux的视频编程(v4l2编程)
- 关于Linux的视频编程(v4l2编程)
- 关于Linux的视频编程(v4l2编程)
- 关于Linux的视频编程(v4l2编程)
- 关于Linux的视频编程(v4l2编程)
- 关于Linux下的视频编程
- 关于Linux的视频编程(v4l2编程)
- 关于Linux的视频编程(v4l2编程)
- 关于Linux的视频编程
- 关于Linux的视频编程(v4l2编程)
- 关于Linux的视频编程(v4l2编程)
- 关于Linux的视频编程(v4l2编程) .
- 关于Linux的视频编程(v4l2编程)
- 关于Linux的视频编程(v4l2编程)
- 关于Linux的视频编程(v4l2编程)