×
嵌入式开发 > 详情

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

发布时间:2020-06-19 发布时间:
|

引言
随着科学技术的不断进步和发展,人们对生活质量也提出了更高的要求。家庭网络作为一个新生体越来越近的开始走进人们的生活,它将家庭单元作为一个节点加入了网络的大家庭,其中作为连接家庭内部与Internet的桥梁的家庭网关起了举足轻重的作用。嵌入式网关的主要功能如下:
远程控制:客户通过Internet上连接的任意一台PC机的浏览器,都可以访问家庭网络的服务器;家庭网络中的设备状态将以HTML文件的方式显示在客户端的浏览器中;客户通过对HTML页面上相应设备的点击以实现对家庭网络中设备的远程控制,操作的结果同样以HTML页面的方式刷新客户端的浏览器。
远程监视:客户通过Internet上连接的任意一台PC机的浏览器,都可以访问家庭网络的服务器,在HTML页面上通过点击控件按钮来实现视频工具的自动下载和所要求视频文件的自动播放,从而可以显示多个摄像头中的视频信息。
远程维护:当HomeNetServer的后台数据库需要维护,或者家庭网络中设备的HTML描述文件有了更新,甚至系统的网络管理系统需要升级为新版本时,管理员都可以通过Internet远程对家庭网络中的服务器做维护和更新。
基于这些基本要求和嵌入式系统自身资源有限的特点,系统选择了S3C4510芯片,并对其进行外围电路扩展如图1:

l,boa.conf和mine.type复制到/boas下,将CGI程序复制到/boas/cgixad_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;im_nDevice;i++)
{pObject=new M878Object(i,m_strDisk+m_str VideoDir);
If(!pObjectGetDataFormFile())
pObject->InitData();
m_obArray.Add(pObject);
}
数据采集:
for(i=0;im_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=/zixunimg/eepwimg/www.myhome.com/videodisplay/MFCControl.ocx>#Version=1,0,0,1>
PARAMNAME=AlighmentVALUE=1>
PARAMNAME=CaptionPropVALUE=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控件完成视频数据的接收、解码和显示工作。而这样做的好处是,不需对客户端做任何设置,就可以完成控件的自动下载和视频文件的实时播放。



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
NXP推出Wi-Fi 6E三频段SOC 充分释放6GHz频谱潜力