首页 > 范文大全 > 正文

基于ARM的家庭视频服务器的研究

开篇:润墨网以专业的文秘视角,为您筛选了一篇基于ARM的家庭视频服务器的研究范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘 要 针对家庭网关的最重要功能:远程监控功能,本文设计了一个基于arm平台的嵌入式家庭网关服务器平台。平台中集成了boa服务器和家庭网络服务器及视频服务器于一体,通过通用网关接口程序cgi,实现了远程用户和家庭内部网络的动态交互。本文中研究的数据信息主要是摄像头视频信息,采用了将视频信息通过activex控件解码,发送的方式在,boa.conf和mine.type复制到/boas下,将cgi程序复制到/boas/cgi­_bin下。至此建立了boa运行的基本环境,使用?>boa c/boas/&?命令就可以运行boa. 2 系统设计描述 在嵌入式网关的设计中,网关程序与家庭网络的http服务器和家庭网络内部服务器位于同一物理设备(基于s3c4510的硬件平台)之上,负责连接http服务器与后台数据库,完成http服务器与homenetserver之间的信息交互。 在家庭网关的设计中,根据功能描述,网关应能提供远程监视、远程控制、远程维护功能。网关内部工作流程如下: 若客户发送的http请求,经过http服务器接收和解析后,得知要求的是设备状态信息时,http服务器从存储设备状态信息的静态文件中取出设备状态,并封装为http响应消息发送回客户端。 若客户发送的http请求,经过http服务器接收和解析后,得知请求的消息是对设备的设置(操作),则通cgi函数将消息内容转换为家庭网络协议传递给家庭网络服务器,由家庭网络服务器对家庭内部设备的管理和控制,并将处理结果以消息形式传递给cgi程序,并封装为http响应消息的形式,发送回客户端。 若客户发送的http请求,经过http服务器接收和解析后,得知请求的页面是提供实时视频服务时,http服务器将调用cgi函数向视频数据处理模块发送消息,通过视频数据处理模块来控制视频压缩卡完成视频数据的采集,压缩和发送等功能。 若客户发送的http请求,经过http服务器接收和解析后,得知请求的消息包含对云台设备及镜头的控制命令时,http服务器通过cgi函数向云镜解码器直接发送控制指令以实现对云台和镜头的控制。

图3 家庭网关软件结构框图 3 实时视频传输部分设计

基于http的boa服务器负责接收和响应客户端的http请求,当请求的是视频信息时,此请求通过cgi函数向视频数据处理模块发送消息,从而向视频设备发送事件以允许实时视频发送任务进入运行队列。 视频数据处理模块主要包括视频图像的实时捕捉(借助mpeg-4视频压缩卡完成)、动态存储和实时播放,图像的实时播放可以和图像的实时捕捉存储同时进行。 初始化视频压缩卡: m878object*pobject=null; for(int i=0;i<m_ndevice;i++) {pobject=new m878object(i,m_strdisk+m_str videodir); if(!pobjectgetdataformfile()) pobject->initdata(); m_obarray.add(pobject); } 数据采集: for(i=0;i<m_ndevice;i++) { opendev(i); //打开指定卡号的设备,分配相应系统资源 pobject=( m878object*)m_obarray[i]; outmpegbuff(i,onmpeg4write); //采集视频数据流 registervisaveexceptionproc(i,(visaveerrcallback) vierrcallback); pobject->setparamtodevice(); //设定参数 } 停止设备: 当不再使用设备时,调用viuninit()关闭视频压缩采集卡并卸载系统资源。 数据发送模块: outmpegbuff(i,onmpeg4write); void callback onmpge4write(dword dwcard,byte *pbuff,dword dwsize, bool iskeyfrom) { if(dwcard>=g_dwdevice) return; g_vstrminfo[dwcard]+=dwsize/26; mtawritevideo((byte)dwcard,pbuff,(long)dwsize,iskeyfrm) } 发送模块负责向地址表中的地址发送经过编码处理的实时视频数据,并修改地址表中的信息。地址表用来保存请求实时视频服务的用户的ip地址,视频发送任务根据地址表中的地址来发送视频包。 数据接收模块: 该模块主要完成视频数据的接收、解码和显示工作。用户通过浏览器实现对远程设备的监控,服务器返回的信息通过浏览器显示。浏览器可以使用微软公司的internet exploer或netscape公司的netscape navigator等。对于普通的文本及html文件支持的gif、jpeg等格式的图片,普通浏览器都可以显示。但对于实时视频数据,首先,与http链接不同,不是使用流套接字而是使用数据报套接字接收,然后还需解码和显示,这些工作浏览器都无法完成。为使用户能通过浏览器观看视频,本系统采用在web页面中嵌入activex控件,由activex控件完成视频数据的接收、解码和显示工作。而activexinternet技术的一个重要方面是安全的下载和安装activex控件和需要的支持文件。microsoft internet explore通过在html文档中使用internet component download方法自动下载并安装activex控件3。 (1)客户端控件的嵌入 在web服务器的html文件中嵌入activex属性,针对客户端使用最多的ie浏览器,html代码可使用的mfccontrol控件如下: <html> <head> <title>videopage</title> </head> <body> <object> id=?mpge4control ? width=100 height=51 classid=clsid:a119846-2e75-11d0-bdb2-000000000000? codebase=/videodisplay/mfccontrol.ocx>#version=1,0,0,1> <paramname=?alighment?value=?1?> <paramname=?captionprop?value=?sample?> </object> </body> </html> 其中id标志控件命名,提供访问控件的html代码。classid标志是唯一的uuid给控件赋值的指令,告诉ie哪个对象被装载。在html页面实现控件的自动下载,使用<object>标志的codebase属性,该属性告诉ie要下载和安装的控件版本和找到和下载控件及其支持文件的地址。 (2)客户端控件的注册 控件编写完成后,需要在客户端注册,关于控件的信息记录在注册表中。客户端从服务器端接收到嵌有控件的html页面后,将根据object标签中的信息通过注册表使用对应的空间完成接收,解码和显示。 4 远程控制部分设计 在远程控制部分设计中,根据性能最优化和实时性考虑,将控制部分分为两部分:云台控制部分,主要是通过串口进行通信;信息家电远程控制,通过内部家庭网络协议对相应设备进行控制,控制信号的物理载体是家庭网络内部总线。(由于篇幅有限,本文仅讨论前者)。 云台控制模块设计 该模块是个相对独立的模块,负责控制云台的上下左右旋转以及镜头的焦距和光圈的调整。当服务器接受到的请求中含有对云台设备以及镜头的控制命令时,将通过cgi函数向云台解码器发送控制指令以实现对云台,镜头的控制。在室内,采用cda2000室内万能解码器4直接通过rs-232串行口与嵌入式网关通信,云台控制电压~24v、~220v 可选,镜头控制电压可在 5v-12v 之间无级调节。

图4 云台控制系统硬件连接框图 在云镜控制模块中,解码器起着核心的地位,设计云镜控制模块主要解决的问题是将各项操作如上下旋转,镜头调焦等操作进行编码,但本系统采用的解码器封装了底层硬件程序的编写,因此所做的工作是利用解码器开发商提供的协议,通过rs232串行口向解码器发送指令。 linux对串口的操作是通过设备文件进行访问的,只需打开相应的串口文件,然后通过调用设备相关函数来打开串口(open()),设置串口参数(tcgetattr(),cfsetispeed(), cfsetospeed()),设置输入输出模式(options.c_iflag和options.c_oflag),恢复串口属性,关闭串口(close())等即可。

图5 串行通信流程 5 结论 本系统的特点是基于嵌入式微处理器有限的系统资源之上,为客户提供视频服务。本系统采用的是?boa服务器+cgi+家庭网络服务器?的模式来实现对信息家电的控制,但由于篇幅有限,不做论述。鉴于实时视频服务的特殊性,采用了?boa服务器+cgi+视频接收和控制模块(视频服务器)?的模式实现对视频数据的捕获、采集、发送等操作,并通过串行口通信方式对云台和镜头进行直接的控制,视频的接收问题一直以来是研究的重点,本系统采用的是在web页面中嵌入activex控件的方式,由activex控件完成视频数据的接收、解码和显示工作。而这样做的好处是,不需对客户端做任何设置,就可以完成控件的自动下载和视频文件的实时播放。 参考文献 [1] 张大波等编著.嵌入式系统原理、设计及应用,第二版,2005.1,机械工业出版社[m] [2] 李现勇等编著.visual c++串口通信技术与工程实践,第二版,2004.7,人民邮电出版社[m] [3] 李驹光等.arm应用系统开发详解——基于s3c4510b的系统设计,2003.12,清华大学出版社[m] [4] 李善平等.linux与嵌入式系统,第二版,2006.10清华大学出版社[m] [5] 刘峥嵘等.嵌入式linux应用开发详解,第一版,2004.7机械工业出版社[m]