最近一直在忙基金申报,今天终于顺利提交了,剩下的就看缘分啦。今天有时间写写Video4linux 下视频编程的流程。
Video4linux(简称 V4L),是linux 中关于视频设备的内核驱动。现在已有Video4linux2,还未加入linux 内核,使用的时候要自己下载补丁,今天就讲讲Video4linux 下视频编程的流程。
Video4linux 支持的主要数据结构
video_capability
包含设备的基本信息,包含的成员:
name[32]; 设备名称
type; 是否能capture,彩色还是黑白,是否能裁剪等等。值如 VID_TYPE_CAPTURE 等
channels; 信号源个数
audios; 音频设备数目
maxwidth; 支持视频显示的宽度上限
maxheight; 视频显示的高度上限
minwidth;
minheight;
video_picture
设备采集的图象的各种属性,在应用程序中使用VIDIOCSPICT ioctl 来改变设备的此种属性。包含的成员:
brightness 亮度 0~65535
hue 色调
colour 颜色(彩色模式)
contrast 对比度
whiteness 白色度(灰度级模式)
depth 捕获深度(配合显示缓冲区的颜色深度)
palette 调色板信息
video_channel
关于各个信号源的属性,每种video4linux 视频或者音频设备可以从一个或者多个信号源捕获数据。调用的ioctl 接口是VDIOCGCHAN。调用前必须设置信号