图1 系统总体框架图
系统硬件包括监控设备、服务器主机、传输网络和客户端四个部分。监控设备主要是指摄像头,用于采集监控现场的视频图像信息,并传输给服务器主机。服务器主机是一台PC机,用于控制摄像头、接收采集信息、编码压缩,并接收客户端的请求,进行网络传输和控制。传输网络主要是指Internet,提供客户端和服务器之间的信息通道。客户端是一台连接到Internet的PC机,它通过网络与服务器主机通信,可以使客户随时观看现场情况。
4.2 系统软件设计
4.2.1 视频图像的捕获
视频捕捉是基于JMF(Java Media Framework)来实现的,JMF是Sun联合Intel、Silicon Graphics等公司共同开发的一套在Java应用和applet中显示和处理多媒体数据的类集合。利用JMF可以很容易地创建、显示、捕获、操作和存储时间媒体的Java应用和Applet[3]。
JMF通过CaptureDeviceManager类的get Device(java. lang.String device Name)函数来返回一个Capture Device Info对象再通过Capture Device Info对象的方法getLocator()返回一个媒体定位器来获得数据源。
4.2.2 视频图像的发送
在JMF中,使用RTPManager类来实现视频实时数据的传输。通过RTPManager传输视频数据的实现步骤为:
(1)产生一个JMF处理器,为每一种RTP格式(视频)设置相应的编码方式。
(2)从处理器中获取输出数据源。
(3)RTP Manager产生一个发送数据流,即以数据源和序号作为参数调用RTP Manager的CreateSendStream()方法。
(4)开始会话传输。
(5)监听ControllerEvent事件控制会话过程。
4.2.3 视频图像的接收与播放
在实时接收网络媒体数据流的应用程序中,实时接收网络媒体数据流是通过javax.media包中定义的各种RTP事件监听器和RTP事件处理类来处理和控制的,使用javax.media包中的Player接口可以播放实时网络多媒体数据流,javax.media包中的处理媒体流的接收完成了整个接收RTP数据的过程。
具体实现利用RTP协议在网络中实时接收并播放媒体数据流的步骤如下[4]:
(1)实现ReceiveStreamListener监听接口,监听NewReceiveStreamEvent事件。
(2)当接收到NewReceiveStreamEvent事件后,通过事件获取接收媒体数据流(ReceiveStream),然后通过接收媒体数据流获取RTP数据源(DataSource)。
(3)将数据源传给Manager.createPlayer()产生一个播放器。
(4)给播放器添加监听器,等到播放器实现后,即可显示播放数据。
5 实验结果
本文所实现的是在JDK1.6+JMF2.1.1e环境下,所运行的点到点智能家居视频监控系统。运行结果如图2、图3所示。
图2 发送端界面
图3 接收端界面
6 结束语
本文通过对JMF和流媒体技术的研究,实现了在Internet环境下,基于Java和JMF技术的智能家居视频监控系统的软件设计。该监控系统的视频压缩与解压缩均采用软件实现,可以降低系统成本,并且由于Java语言的平台无关性,此系统能运行于任何平台。视频压缩编解码采用H.263,并采用RTP协议传输,所以提供了一定的QoS保证,并在实验中取得了令人满意的效果。但是,由于该系统是用Java编程,系统的启动初始化过程稍微长一点,相信随着处理器速度不断提高和Java新的实时编译器和快速虚拟机的推出,Java速度慢的问题将被会有效解决。
参考文献
[1] 彭波.Java多媒体技术[M].北京:清华大学出版社,2005:218
[2] 王彦丽,陈明,陈华,王旭仁.基于RTP/RTCP的数字视频监控系统的设计与实现[J].计算机工程与科学,2009(03):58
[3] 刘宏飞.基于JMF的视频医疗系统的设计与实现[D].硕士学位论文,西北大学,2004
[4] 飞思科技产品研发中心.Java2应用开发指南[M].北京:电子工业出版社,2004
作者: 李小路 时间: 2020-10-1 18:07
谢谢分享!
欢迎光临 DIY编程器网 (http://diybcq.com./) |
Powered by Discuz! X3.2 |