基于motion的视频压缩的实时监控系统

项目说明:监控报警系统


涉及到的技术:

1.OSS/ALSA 声卡驱动的配置

2.Madplay嵌入式播放器移植

3.实现V4L2图像采集程序

4.移动监控主系统motion的移植

5.移植嵌入式web服务器boa


遇到的问题:

在移植madplay的时候,提示找不到madplay。

解决的办法:

通过arm-linux-readelf -d madplay 命令查看madplay需要的动态库,然后在/lib里找是否有这几个动态库。将缺少的动态库拷贝到linux系统的/lib下。

(madplay 播放器程序依赖于  zlib  libid3tag  libmad  这三个库,编译、安装三个库之后要将生成的动态库拷贝到linux系统中的/lib下。)



V4L2工作流程:打开设备->检查和设置设备属性->设置帧格式->设置一种输入输出方法(缓冲区管理)->循环获取数据->关闭设备。


应用程序通过V4L2接口采集视频数据分为5个步骤:

1.打开视频设备文件,进行视频采集的参数初始化,通过V4L2接口设置视频图像的采集窗口、采集的点阵大小和格式。

2.申请若干视频采集的帧缓冲区,并将这些帧缓冲区从内核空间映射到用户空间(使用mmap函数将申请的缓冲帧映射到应用程序),便于应用程序读取/处理视频数据。

3.将申请到的帧缓冲区在视频采集输入队列排队、并启动视频采集。

4.驱动开始视频数据的采集,应用程序从视频采集输出队列取出帧缓冲区,处理完后,将帧缓冲区重新放入视频采集输入队列,循环往复采集连续的视频数据。

5.停止视频采集

enum v4l2_buf_tpye *type

检查和设置设备属性:ioctl(intfd,VIDIOC_QUERYCAP,struct v4l2_capability *argp)

设置帧格式:ioctl(intfd,VIDIOC_S_FMT,struct v4l2_format *argp)

申请缓冲区:ioctl(intfd,VIDIOC_REQBUFS,struct v4l2_requestbuffers *argp)

将帧缓冲全部放入到输出队列中:ioctl(intfd,VIDIOC_QBUF,&buf)

从缓冲区中取出一个帧:ioctl(intfd,VIDIOC_DQBUF,&buf)

开始视频流数据的采集:ioctl(intfd,VIDIOC_STREAMON,&enum v4l2_buf_tpye *type)

停止视频的采集;ioctl(intfd,VIDIOC_STREAMOFF,enum v4l2_buf_tpye *type)







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值