
如果你想存成AVI的,那么你得了解AVI文件格式。avi是一种RIFF的实现balabalabala......
总之你大概在初始化的时候就把avi的文件头写好(strh strl之类的,具体看手册),然后第九步
的时候取出一帧数据,把长度和偏移连同这帧数据写入文件,同时保存下索引。
当写入全部的视频帧后再把索引写入文件,最后关闭录像文件,停止视频采集。
如果觉得自己实现麻烦,就移植个ffmpeg啥的,直接支持v4l2和avi容器,一条命令就搞定了
源码中:fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_YUYV
fmt.fmt.pix.field = V4L2_FIELD_INTERLACED
ioctl (fd, VIDIOC_S_FMT, &fmt)
指定了采集图像的格式为YUYV格式。
要像采集成JPEG图像,得查询一下摄像头是否有相应功能,如果没有相应功能即使将fmt设置为jpeg最终采集到的还是yuyv格式。
yuyv可以转换为bmp数据,然后调用jpeglib库转换为jpg图像,稍稍有些麻烦,但没办法硬件不足就要用软件来弥补了。
至于你说的read没读到数据,我现在没有开发环境,没法测试。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)