您的位置: 嵌入式在线 > 技术中心 > Java > 基于Java的嵌入式网络视频服务器

基于Java的嵌入式网络视频服务器

2007-06-06      嵌入式在线      收藏 | 打印
  网络视频服务器采用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的网络视频服务器的解决方案,结合实际应用再进行功能扩展,可应用到众多的有线或无线视频监控领域。
 
 
本文来源:兵工自动化    作者:宋乔 叶念渝 田俊
热点资讯(一周点击率)
热评博文
评一评已有 0 位网友对此文发表了看法。  我也来评一下

验证码:  看不清?换一张

 

快乐大本营

    无线时代来临,移动产业生态系统将发生一些根本变化。今日头条推荐“芯片是嵌入式4G技术的关键 产业生态系统将发生变化”。

    想了解嵌入式开发工具的市场情况吗?先来体验下我们的在线调查吧!填写调查问卷

工程师之星
朱礼昆
电子信息工程专业,擅长硬件编程
  • 胡菲菲  技术专长:嵌入式系统linux
  • 柳如峰  技术专长:模电,电源
热门招聘
论坛热贴