4 基于B/S模式的用户视频监控端实现
系统采用B/S模式,相比C/S模式,用户不需要做任何维护,这对用户人力、物力、时间、费用的节省是显而易见的,并且可以跨平台操作,真正方便了用户。
系统通过开发Java Applet应用程序,并嵌入网页中,网页名称设为Boa Web服务器默认主页名,把它们保存在/www中,用户在浏览器地址栏中输入视频服务器的IP地址,就能在网页里显示摄像头的监控图像。通过Java Applet与视频服务器进行交互,实现对视频数据的控制、传输和播放。Java Applet程序中主要功能步骤和主要函数可描述为:
(1)创建套接字、输入流和输出流。
connection=new Socket(m_strServer,port);
in=connection.getInputStream();
ut=connection.getOutputStream();
IP地址及端口都是由嵌入在HTML中…部分的参数传入的,并创建此Socket对象的输入流和输出流。
(2)分配接收缓冲区:byte[]buffer=new byte[512*1024];
(3)发送一个用户控制信息。它由用户用鼠标点击图标而生成。当用户点击浏览器中的视频窗口时,在上方会显示亮度等图标,通过点击图标两侧的“+”和“-”而写入控制信息;当点击图标以外的地方,图标就会消失,实现全窗口的视频,便于监控,操作简单。
Public void mouse(MouseEvent evt) {…};
out.write(b);//b是包含控制信息的字符数组名
(4)读取一帧图像头信息,确认图像数据的正确性和获取图像数据的大小。
n=in.read(buffer,0,HDRLEN);//HDRLEN为图像信息头长度,设置为50 B
对头信息中包含的约定字符进行判断,若正确就可以继续接收图像数据,不正确则返回(3)。
(5)读取图像数据,把头信息后的图像数据写入缓冲区,以供播放显示。
r=in.read(buffer,HDRLEN,buffer.length-HDRLEN);
(6)实现图像显示。由于缓冲区中包含图像头信息,为单独使用图像数据,需把图像数据拷贝到另一缓冲区buffer2中。
BufferedImage image= ImageIO.read(new ByteArrayInputStream(buffer2));
ImageIcon ii=new ImageIcon(image);
m_label.setIcon(ii);//显示图像
通过以上(3)到(6)的不断循环运行,用户从监控网页上可以看到连续动态的图像,效果很好,画面流畅,不存在明显的延时,实现了视频监控。
本文提出的这种基于B/S的嵌入式视频监控系统相比传统C/S模式,真正实现了用户零维护,可以跨平台监控,方便用户。采用嵌入式处理器和Linux操作系统相结合,很好地体现了本监控系统具有集成化、网络化、功耗低等优点,可广泛扩展应用在工业控制、可视电话、交通管理等诸多领域。
4 基于B/S模式的用户视频监控端实现
系统采用B/S模式,相比C/S模式,用户不需要做任何维护,这对用户人力、物力、时间、费用的节省是显而易见的,并且可以跨平台操作,真正方便了用户。
系统通过开发Java Applet应用程序,并嵌入网页中,网页名称设为Boa Web服务器默认主页名,把它们保存在/www中,用户在浏览器地址栏中输入视频服务器的IP地址,就能在网页里显示摄像头的监控图像。通过Java Applet与视频服务器进行交互,实现对视频数据的控制、传输和播放。Java Applet程序中主要功能步骤和主要函数可描述为:
(1)创建套接字、输入流和输出流。
connection=new Socket(m_strServer,port);
in=connection.getInputStream();
ut=connection.getOutputStream();
IP地址及端口都是由嵌入在HTML中…部分的参数传入的,并创建此Socket对象的输入流和输出流。
(2)分配接收缓冲区:byte[]buffer=new byte[512*1024];
(3)发送一个用户控制信息。它由用户用鼠标点击图标而生成。当用户点击浏览器中的视频窗口时,在上方会显示亮度等图标,通过点击图标两侧的“+”和“-”而写入控制信息;当点击图标以外的地方,图标就会消失,实现全窗口的视频,便于监控,操作简单。
Public void mouse(MouseEvent evt) {…};
out.write(b);//b是包含控制信息的字符数组名
(4)读取一帧图像头信息,确认图像数据的正确性和获取图像数据的大小。
n=in.read(buffer,0,HDRLEN);//HDRLEN为图像信息头长度,设置为50 B
对头信息中包含的约定字符进行判断,若正确就可以继续接收图像数据,不正确则返回(3)。
(5)读取图像数据,把头信息后的图像数据写入缓冲区,以供播放显示。
r=in.read(buffer,HDRLEN,buffer.length-HDRLEN);
(6)实现图像显示。由于缓冲区中包含图像头信息,为单独使用图像数据,需把图像数据拷贝到另一缓冲区buffer2中。
BufferedImage image= ImageIO.read(new ByteArrayInputStream(buffer2));
ImageIcon ii=new ImageIcon(image);
m_label.setIcon(ii);//显示图像
通过以上(3)到(6)的不断循环运行,用户从监控网页上可以看到连续动态的图像,效果很好,画面流畅,不存在明显的延时,实现了视频监控。
本文提出的这种基于B/S的嵌入式视频监控系统相比传统C/S模式,真正实现了用户零维护,可以跨平台监控,方便用户。采用嵌入式处理器和Linux操作系统相结合,很好地体现了本监控系统具有集成化、网络化、功耗低等优点,可广泛扩展应用在工业控制、可视电话、交通管理等诸多领域。
举报