• 基于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)

  • 相关阅读:
    记账本微信小程序开发三
    记账本微信小程序开发二
    记账本微信小程序开发一
    一个Java系统测试
    河北省重大技术需求征集系统(5)
    河北省重大技术需求征集系统(4)
    河北省重大技术需求征集系统(3)
    河北省重大技术需求征集系统(2)
    《软件需求工程》阅读笔记02
    通过API操作HBase数据库
  • 原文地址:https://www.cnblogs.com/china-sdd/p/6171978.html
Copyright © 2020-2023  润新知