首页 >> 视频通信 >> 技术 >> 正文
 
基于OMAP5912远程视频监控系统的设计
http://www.cww.net.cn   2009年8月10日 09:58    电子产品世界    
作 者:刘明兰 罗伟 武汉理工大学

    (2)视频采集

    设计使用Video4Linux模块[5]提供的API函数进行视频采集,主要函数包括:

    ①dev?=?open(Camera_Open?,O_?RDWR);打开视频捕获设备。

    ②ioctl?(dev?,?VIDIOCGCAP?,?&vid_

    caps)?获取该视频设备的相关性能。

    ③ioctl?(dev?,?VIDIOCGCHAN?,?&vid_

    chnl);获取摄像头通道的相关参数。

    ④ioctl?(dev?,?VIDIOCGFBUF?,?&vid_

    buf)?;获取帧缓冲的属性。

    ⑤ioctl?(dev?,?VIDIOCGPICT?,?&vid_pi);获取图片采集的设置。

    ⑥ioctl?(dev?,?VIDIOCSPICT?,?&vid_pic);设置图片采集的相关参数,包括颜色深度、调色板类型、亮度、对比度等。

    ⑦ioctl?(dev?,?VIDIOCSWIN?,?&vid_win);设置图像采集的视区参数。

    ⑧fwrite?(m_buf?,1?,230400?,p)?;采集的数据存入。

    ⑨ioctl?(?dev?,?VIDIOCMCAPTURE?,?

    &vid_mmap);开始俘获一帧。

    设计中使用内存映射mmap()[3]方式截取视频帧,即先使用ioctl()函数获得摄像头存储缓冲区的帧信息,之后修改video_mmap中的设置,接着使用mmap()把摄像头对应设备文件映射到内存区,完成视频采集。

    (3)视频编码

    设计采用OMAP5912的DSP核进行视频编码,能充分发挥OMAP5912的双核优势。在编码器的选择上,考虑到H.264和以前的视频编码标准(如H.263和MPEG-4)相比,在压缩性能上有较大的提高,本设计选择适合嵌入式系统的x264-20060612版本H.264编码器。考虑到监控视频场景的特点,选择如下编码方案:

    ①H.264的baseline,不采用B帧编码和CABAC;

    ②搜索范围选取16;

    ③量化参数选取32;

    ④1/2像素插值;

    ⑤只使用1个参考帧;

    ⑥编码P帧宏块的时只采用16×16,16×8,8×16,8×8,Intra16×16五种模式。

    H.264编码器经过一系列优化后即可用于本系统,其工作流程如图3所示。

    3)视频网络传输

    考虑到B/S模式拓展性好、维护和升级容易、安全度较高等优点,系统采用B/S模式。用户只需要在远程客户机的网页地址栏内输入服务器的IP地址,通过浏览器就能实时查看现场视频画面。

    系统网络通信程序的设计包括服务端和监控端的设计,其中监控端采用通用的IE浏览器即可,主要是服务器部分的设计,包括构建WEB服务器[4](主要涉及BOAWebServer的移植及配置,CGI脚本的创建)、C语言实现CGI(通用网关接口)、实现嵌入式数据库和制作简单网页等。其中,CGI为WEB服务器和应用程序的接口,如通过CGI程序对远程设备的进行参数设置;采用嵌入式数据库MSQL用于存取系统的重要信息,如用户的帐号、密码,摄像头参数等。采用B/S模式后,服务器和监控端的通信程序结构图如图4所示。

    图4服务器和监控端的通信程序结构图

    嵌入式WEB服务器部分程序如下。

    //创建TCP套接字连接TCP网络

    if((sock_fd=socket(AF_INET,SOCK_STREAM,0))==-1)

    {

    perror("sock_fderror");

    exit(1);

    }

    setsockopt(sock_fd,SOL_SOCKET,SO_REUSEADDR,&on,sizeof(on));

    //为套接字分配HTTP协议地址

    my_addr.sin_family=AF_INET;

    ddr.sin_port=htons(80);

    my_addr.sin_addr.s_addr=htons(INADDR_ANY);

    if(bind(sock_fd,(structsockaddr*)&my_addr,sizeof(their_addr))==-1)

    {

    perror("binderrorn");

    exit(1);

    }

    ……

    if(!fork())

    {

    recv(new_fd,http_rec,2048,0);//接收用户端控制命令

    //捕捉图像

    image=videograb(320,240,brightness,contrast,colour,hue);

    ……

    }

    系统充分发挥了OMAP5912的双核优势,实现了视频实时采集、存储、编码及网络传输。视频监控用户界面效果图如图5所示。

    结语

    设计和实现了基于OMAP5912的远程视频监控系统,系统充分发挥了OMAP5912的双核优势,实现了服务器端进行视频的实时采集、存储、编码及网络传输,而监控端的PC机可以通过IE浏览器查看监测点的视频,也可以设置视频的分辨率、亮度、对比度等参数。经实际运行表明,系统运行稳定,视频流畅,能够满足远程视频监控的要求。

  

[1]  [2]  编 辑:石美君
关键字搜索:视频监控  编码  
相关新闻
每日新闻排行
企业黄页
会议活动