Linux下面的视频捕获,主要用的是v4l,或者v4l2.
原理:
首先调用用open打开设备,利用ioctl可以对设备进行控制,比如设置视频数据流格式,视频尺寸,访问模式等等。然后根据不同的访问模式,采用不同的 方法读取视频数据,比如一般的read方法,内存映射mmap,或者userptr。,然后将读取的数据,根据设置的不同格式进行解码,v4l定义了不同 的格式,不如RGB24,SRGB,YUMK,当然,我们最终所获取的数据都得转化为RGB24格式,不过其他格式也有各自的优点,根据不同的场合需要选 择不同的格式。当然,设备支持的数据格式,跟驱动的实现有关,驱动程序并不一定支持所有的数据格式。在使用ioctl进行设置的时候,如果设备不支持,就 会返回错误。
原理:
首先调用用open打开设备,利用ioctl可以对设备进行控制,比如设置视频数据流格式,视频尺寸,访问模式等等。然后根据不同的访问模式,采用不同的 方法读取视频数据,比如一般的read方法,内存映射mmap,或者userptr。,然后将读取的数据,根据设置的不同格式进行解码,v4l定义了不同 的格式,不如RGB24,SRGB,YUMK,当然,我们最终所获取的数据都得转化为RGB24格式,不过其他格式也有各自的优点,根据不同的场合需要选 择不同的格式。当然,设备支持的数据格式,跟驱动的实现有关,驱动程序并不一定支持所有的数据格式。在使用ioctl进行设置的时候,如果设备不支持,就 会返回错误。