Loading
新闻中心库存中心价格中心PDF中心图片中心
ICGLE 电子技术支持中心,为电气人员和相关企业提供全面的信息(IC技术\IC库存\IC图片\PDF资料等)服务
总线设计PCB设计单片机DSPARM
JAVA驱动设计C/C++汇编J2EE网络协议中间件技术嵌入式系统无线通信通信网络模拟技术接口电路显示光电传感与控制EDA/PLD
气流体控制电子产品电机及工具通信设备仪器仪表电线电缆建筑电气低压电器高压电器电源工控自动化广电设备医疗器械More..
电源设计仪器仪表技术专递电路图片电子专栏储存技术汽车电子测量测试音响技术家用电器
成功方案市场分析行业标准应用前沿芯片应用综合专区
基于Java的嵌入式网络视频服务器
来源:兵工自动化   作者:宋乔 叶念渝 田俊
字体大小:[大][中][小]

  网络视频服务器采用TCP/IP协议,将音、视频数据由内嵌服务器经局域网或Internet送到客户端,用户可使用IE浏览器或客户端软件对网络视频设备进行访问,观看实时图像。

  故以SAMSUNG公司S3C2410为核心电路开发板上扩展外围接口,结合Java和WEB技术实现嵌入式视频监控设备。

1 系统的硬件结构


    系统以S3C2410为中心,外接存储设备包括2片32M的SDRAM、64M的NAND Flash和2M的NOR Flash。外围接口包括串行口、JTAG调试接口和USB接口,其中USB接口连接摄像头负责视频数据的采集,视频采集设备硬件结构如图1。

2 网络视频服务器的架构与实现

  基于WEB技术的流媒体系统主要包括:提供流媒体服务的服务器端和采用浏览器进行监控的客户端。服务器和客户浏览器通过HTTP协议进行通信,如图2。其中流媒体服务器主要由3层结构组成:WEB服务器、网络服务接口和驱动模块。

2.1 底层驱动的实现

   USB摄像头驱动程序介于视频采集应用程序与Linux内核中USB核心间的中间层。其一,USB摄像头驱动向USB核心注册本身的信息,并调用USB核心提供的API函数来为上层服务;其二,应用程序通过调用USB摄像头驱动的一套接口函数来进行视频采集和调整摄像头参数等操作。图3是以USB驱动程序的关键数据结构usb_driver为入口的驱动程序主要数据结构和函数。

2.2 流媒体服务进程的实现

  该进程用于开放某个服务器端口,并不断监听端口,如有连接请求则建立连接,建立后流媒体服务进程将不断向端口提供采集到的图像数据流同时也接收客户端发送过来的图像调节命令参数。其主程序流程如图4。其中最关键的实现包括:

(1)初始化VdIn结构

  VdIn中描述摄像头设备的完整信息,包括V4L标准中定义所有函数接口和数据结构,同时也附加一些用于图像采集参数。初始化VdIn函数如下:
init_videoIn(& videoIn,videodevice,width,height,format,grabmethod)
该函数将videodevice,width,height,format,grabmethod等传递给VdIn结构videoIn中。

(2)创建图像采集线程

  图像采集采用单独的线程实现,在主线程中创建采集线程的方法如下:
pthread_create(&w1,NULL,(void*)grab,NULL);
其中由pthread_create创建的grab线程则是图像采集的实现部分。

(3)socket连接初始化

  在进行socket通信前必须对socket初始化:
serv_sock=open_sock(serverport);
在open_sock函数中包括:创建socket、绑定socket和端口号、开始监听端口等步骤。其实现过程和面向连接的socket通信相同。

(4)创建socket服务线程

  当监听产生后服务主进程负责不断循环的监听接收到的请求并建立新的客户连接socket,创建针对此socket的通信进程。
new_sock=accept
(serv_sock,(struct sockaddr*)&their_addr,&sin_size));
pthread_create(&server_th,NULL,(void*)service,&new_sock);

(5)创建网络通信线程

  在网络通信线程中包括:图像数据发送和客户端图像调节参数的接受2部分。客户端发送的图像调节参数包括图像亮度和对比度,为此规定通信数据格式,用1个字节的不同位表示亮度和对比度,对应位为0或1表示减少或增加亮度或对比度的值。通过socket的read函数来接收客户端发送的调节参数,并保存在message中:
ret=read(sock,(unsigned char*)&message,sizeof(stmct client_t));
通过socket的write函数向客户端写图像数据帧,下面headerframe是待发送的图像帧:
ret=write_sock(sock,(unsigned char*)headerframe,sizeof(struct frame_t));

2.3 Java Applet的应用 

  本系统Java Applet实现3个功能:图像通过socket传送到客户端显示;将客户端调节图像参数发送到服务器;将客户端点击的运动控制参数发送到服务器。图5描绘基本多线程socket通信框架。其中init和start函数在Applet开始执行时调用,通过start创建2个线程:①用于socket通信;②提供用户界面显示图像和相应用户操作。用户界面设计用到Sun的SwingWorker类库。

  在客户端的浏览器窗口输入移动监控设备的IP地址并连接,如果是第1次连接移动监控设备中的Web服务器将会出现1个下载Java Applet,并且会提示该Applet的有关授权文件安全性的问题。

3 结语

  基于Web浏览器和Java Applet技术的客户控制界面,无需专用监控软件,使用方便。系统通过ARM9 CPU直接进行视频处理和传输,简化了电路设计和成本开支。基于Java Applet的网络视频服务器的解决方案,结合实际应用再进行功能扩展,可应用到众多的有线或无线视频监控领域。 

 

Upload by 小刘(2007-6-7)
IC
IC
推荐技术文章:
IC
IC

©2007 版权归ICGLE所有   页面执行时间:62.500毫秒