基于JMF的远程视频监控系统.pdf
《基于JMF的远程视频监控系统.pdf》由会员分享,可在线阅读,更多相关《基于JMF的远程视频监控系统.pdf(6页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、http:/-1-基于基于 JMF 的远程视频监控系统的远程视频监控系统1 熊利祥,吕锋 武汉理工大学信息工程学院,武汉(430070)E-mail: 摘摘 要:要:本文基于 Java 和 JMF 技术,提出并实现了一种远程视频监控系统。该系统是基于java 语言开发的,可移植性好,系统包括远程监控模块和本地模块。远程监控模块通过摄像头采集视频图象形成流媒体,并通过 JMF 的 RTP API 实现流媒体的传输。本地模块通过 JMF的 RTP API 接受到流媒体,然后在本地播放出来,从而实现对远程的视频监控。本文对整体模型、本地模块和远程模块的设计思想与代码进行了详细分析。经过测试,该系统实
2、现了远程监控的功能,视频流畅,画面清晰,达到了预期的效果。关键词:关键词:Java 媒体框架;流媒体;RTP 协议 中图分类号:中图分类号:1引言引言 在人类社会进入信息化社会的今天,电信网络和计算机网络的发展极大地改变着全社会人们的生活方式。接入网宽带化的发展推动了新业务需求的产生和发展。远程监控就是其中之一。远程监控过去只有银行金融机构、博物馆等企事业单位才会有此业务需求,多为基于传统接入方式,在银行金融机构及电信营运商的通信机房进行机房的远程集中监控等。而现在随着接入网的宽带化,通过视频头的捕获和互联网的传输就能实现本地对远端视频的监控。考虑到视频实时传输的各种关键问题,在视频传输的解决
3、方案的选择上,对微软的开发平台比较熟悉的开发人员也许会选择采用 DirectShow 技术。这确实是一个不错的解决方案,因为它不仅能较好地实现视频的传输,而且能节省大量的费用,有较理想的成本效益。但有一个缺点就是他会使软件的应用环境对操作系统有很大的依赖性,且可移植性差,不能跨平台使用。SUN 公司针对网络多媒体实时应用推出了基于 JAVA 的 JMF(Java Media Framework)API,由于 JAVA 语言与平台无关的优良特性,JMF 技术无疑是一种很好的解决方案。2Java媒体框架(媒体框架(JMF)JMF 实际上是 Java 的一个类包,它提供了先进的媒体处理能力,从而扩展
4、了 Java 平台的功能。它的主要功能包括:媒体捕获、压缩、流传、回放,以及对各种主要媒体形式和编码的支持,如 MJPG、H.263、MP3、RTP/RTSP(实时传送协议和实时流转协议)、Macromedias Flash、IBM 的 HotMedia 和 Beatniks 的 Rich Media Format(RMF)等。JMF2.11 还支持广受欢迎的媒体类型,如 Quicktime、Microsofts AVI 和 MPEG1 等。1 在开发 JMF 应用程序之前,必须先了解 JMF 的体系架构、接口和类。JMF 系统架构与家用摄像机系统相似。首先,用摄像机拍摄内容,拍摄下来的内容录
5、制在 DV 带中。DV 带可以放在放像机里播放、放像机提供视频信号给电视机,提供音频信号给音箱,这样我们就可以在电视机上看到画面,从音箱听到声音。JMF API 提供了同样的模型。1本课题得到教育部重点实验室开放基金(项目编号:TKLJ0203)的资助。http:/-2-3JMF RTP API对对RTP的支持的支持 RTP(Real-time Transport Protocol,实时传输协议)是 IETF 的 AVT(Audio-Video Transport,音视频传输)工作组在 1996 年制定的适用于传输诸如音频、视频等实时数据的Internet 标准。与传统的注重可靠传输的协议相比
6、,RTP 更侧重数据传输的实时性。RTP 支持多播,可将一份媒体数据同时传送给多个用户而丝毫不浪费网络带宽。2JMF 的 RTP API对 RTP 媒体流的回放和传输提供了全面的支持:一方面,JMF 可以对接收到的 RTP 媒体流进行本地播放、存为文件等多种处理;另一方面,JMF 也可将采集到的或者存储于本地的媒体流以 RTP 媒体流的形式通过网络发送出去。在 JMF 中,RTP 会话是由 Session Manager(会话管理器)来协调的,它负责监控会话中的所有参与者与 RTP 媒体流。Session Manager从本地参与者的角度维护着会话状态,实际上,它是 RTP 会话这一分布式实体
7、的本地化表现形式。Session Manager 定义了初始化会话、启动会话、移除 RTP 媒体流、关闭会话等一系列方法供开发人员使用。4基于基于JMF 的的RTP/RTCP 传输模型的整体设计传输模型的整体设计 该系统分为客户端程序和服务器端程序。服务端程序安装在远端计算机上,实现视频的截取与传输,客户端程序安装在本地计算机上,实现视频流的接收与播放。该系统的硬件包括相互联网的远端计算机,本地计算机和一个普通的视频头。该视频头安装在远程计算机上,实时的截取远端图像,并生成视频媒体流。远端计算机对视频流进行处理后通过网络向本地计算机发送视频流,本地计算机接收到视频流之后,在本地计算机的屏幕上显
8、示出来。系统整体模型如图 1 所示。3 4.1 捕获与传输捕获与传输 RTP 媒体数据流媒体数据流 Capture Devive Data Source Processor Session Manager Internet Player Screen Data SourceData Source图 1 基于 JMF 的 RTP/RTCP 传输模型的整体设计 在网上传输一 RTP 流必须使用处理器和 RTP 编码的数据源,并构建一会话管理器或数据汇集点来控制传输。处理器的输入是视频头捕获的数据。捕获数 据源作为处理器输入使用。共有两种方法传输 RTP 流:用MediaLocator构建RTP数据
9、汇集点。用会话管理器为传输内容创建传输流,并控制传输。如果利用MediaI ocator来构建RTP DataSink,则只能传输Data Source中的第一个流。如希望在一个会话中传输多个RTP流或监控统计会话。则需直接使用SessionManager。无论选择何种方式传输RTP流,必须做到为数据源建立一处理器该数据源指向要传送的数据、配置处理器来输出RTP编码的数据以及获得处理器的输出作为数据源。http:/-3-传输RTP媒体数据流步骤如下:4 建立、初始化并启动SessionManager对象。讲数据源构成为Processor对象。设定Processor对象的输出为RTP格式。从Pr
10、ocessor对象获取输出的数据源。调用SessionManager.CreateSendStream()方法,并把经过Processor处理过的数据源传递给它。实现代码如下:/从驱动管理器中获得驱动,这里使用MicroOS默认的驱动 String str=”vfw:Microsoft WDM Image Capture(win32):0”;/获取捕获设备 CaptureDeviceInfo di=CaptureDeviceManager.getDevice(str);MediaLocator ml=di.getLocator();/为指定的 MediaLocator 创建数据源 DataSo
11、urce ds=Manager.createDataSource(ml);/为数据源创建处理器 Processor processor=Manager.createProcessor(ds);/配置处理器 processor.configure();processor.realize();/获得处理器的输出作为数据源 DataSource dataoutput=processor.getDataOutput();/为发送数据源定义 RTPManager PushBufferDataSource pbds=(PushBufferDataSource)dataoutput;/获取 Push 数据流
12、 PushBufferStream pbss=pbds.getStreams();RTPManager rtpMgrs=new RTPManagerpbss.length;for(int i=0;ipbss.length;i+)/RTP 管理器实例化 rtpMgrsi=RTPManager.newInstance();/获得目的地址的 IP 地址 ipAddr=InetAddress.getByName(59.64.84.243);/获取本机 IP 地址 localAddr=new SessionAddress(InetAddress.getLocalHost(),port);/获取目的机 I
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 JMF 远程 视频 监控 系统
限制150内