基于JAVA的远程视频监控系统设计(4)

2019-04-21 17:20

Android应用程序的四个组成部分之间是相互独立的,互相之间的调用和协调工作主要是由Intent协助完成的。Intent 负责对具体应用中的一次操作动作、动作所涉及的数据、附加数据等进行相应的描述,Android则根据此Intent 的相关描述,负责找到与之对应的组件,并将Intent传递给调用的组件,完成 组件的调用过程。

在Intent 的描述结构中,有两个最重要的部分,动作和动作对应的数据以及一个表示这个数据的URI 。Android使用了Intent这个特殊类,用于描述一个 应用将会做什么事,实现Activity与Activity之间的相互切换。 (3) Service

Service是运行在系统后台的生命周期长却没有用户界面的应用程序。例如 在一个多媒体播放器的应用过程中,会有多个让使用者可以选择歌曲并播放歌 曲的Activity 。然而,对于音乐重新播放这个功能并没有设置对应的Activity, 因为使用者会默认在导航到其它界面时音乐应该还会在继续播放的。媒体播放 器在工作的过程中,Activity会使用Context.startService ()来启动一个Service进程,用以保持音乐在后台的连续播放。与此同时,系统也会自动保持这个Service 一直执行,直到这个Service运行结束为止。为了使多媒体媒体播放器可以进行暂停、重播等操作功能,还可以通过使用Context.bindService ()方法,将其连接到一个Service上 (如果这个Service还没有运行将启动它),当连接到一个Service之后,还可以用Service提供的接口与其进行通讯。 (4) Content Provider

Content Provider可以保证应用数据与其他的应用进行共享,将应用程序中的数据保存到SQL数据库中、文件中、甚至是任何的有效设备中 。Content Provider是一个特殊的存储数据的类型,实现了一组标准的处理方法,提供了

一套标准的接口来获取和操作应用数据应用程序可以通过唯一的Content Resolver界面来使用某个具体的Content Provider ,Content Resolver提供的方法包括query ()、insert ()、update ()等,能够让其他的应用保存或者读取该Content Provider处理的各种数据的类型。在Android系统平台中,每一个应用程序都运行在各自的进程中,当一个应用程序要访问其他应用程序的数据时,就需要数据在不同虚拟机之间传递,这时候就需要Content Provider来解决不同应用包之间的数据共享。

2.4本章小结

本章主要对远程监控系统的网络结构进行了介绍并采用C/S结构,总体结构进行了设计,并对开发环境eclipse进行了搭建。阐明了eclipse开发环境的优点。重点介绍了Android平台的优点与应用程序的结构。

13

第三章 本地受控模块软件设计与实现

视频数据的采集是视频监控系统实现的第一步,也是视频压缩和视频传输的基础。本系统软件由JMF框架提供视频信息,在传输中,图片是不能直接传的,因此需要把图片变为字节数组,然后传输比较方便;再通过socket通信传输到手机上。

3.1JAVA媒体框架(JMF)

JMF 为JAVA语言程序的一个类包,拥有处理媒体的能力,对于JAVA平台的功能进行了扩展。主要能够实现的功能有:媒体捕获、压缩、流传、回放,对各种媒体形式和编码的支持,例如IBM 的HotMedia 和Beatniks 的Rich Media

Format(RMF)、Macromedias Flash、H.263、M-JPG、MP3、RTP/RTSP(实时传送协议和实时流转协议)等。Quicktime、Microsofts AVI 和MPEG-1 等媒体类型JMF2.11都可以支持。

了解JMF 的体系架构,是开发JMF 应用程序之前所必须要做的事情。接口和类是必须了解的。JMF系统架构和一般家用的摄像机系统类似。首先,摄像机拍摄到画面与声音,然后将拍摄到的画面与声音刻录在录像带中,录像带可以在播放机中播放,播放机将视频信号传输给显示设备,音频信号传输给音响设备,如此我们就可以在显示设备上看到画面,音响中听到声音。JMF API提供了相同的模型。

对于JMF结构的详细解析,我们可以做一个简单的比喻利用立体音响。CD唱片中所录制的数据是在录音棚中利用麦克风或者其他设备所录制下来的,当播放CD唱片时,唱片会将录制的数据提供给系统,播放机会将数据中包含的音乐信号传输到系统音箱中。在上述的例子中,音频截取设备为麦克风,数据源为CD唱片,输出设备为音箱。JMF的结构与立体音响类似,JMF的组成部分主要为以下术语: 数据源(Data source) 截取设备(Capture Device,包括视频和音频截取设备) 播放器(Player)处理器(Processor)数据格式(Format)管理器(Manager) 简单介绍下术语的意义。 1.数据源

数据源中拥有媒体数据流,就像CD唱片中所包含的歌曲一样。DataSource对象为数据源,可以为多媒体文件或者是数据流从互联网上下载而来。如果确定DataSource对象的位置和类型,多媒体的位置信息和能够播放该多媒体的软件信息就存在与对象中。DataSource对象被创建后,会被送入到Player对象中,Player对象不在乎DataSource中的多媒体是获得途径,以及格式。

14

在一些特殊情况下,需要将多个数据源合并成一个数据源。例如,需要将音频数据源和视频数据源合并在一起,制作一段录像。JMF支持数据源合并,在后面将介绍这一点。 2.截取设备

截取设备是指能够截取视频或者音频的硬件设备,如摄像机、麦克风等。Player对象可以处理截取到的数据。 3.播放器

在JMF中Player是对应播放器的接口。音频/视频数据流被Player对象作为输入,数据流被输出到音箱或者屏幕上,跟CD播放器能够读取唱片中的歌曲,然后信号被送到音箱上一样。在JMF中Player对象有六种状态,在一般正常状态下Player对象需要逐步经历每个状态,才能播放多媒体。对这些状态下面作简要说明。

● Unrealized:一般在此种状态下,Player对象已经被实例化,但是对于需要播放的多媒体信息却不知道。

● Realizing:当realize()方法被调用时,Player对象的状态从Unrealized转变为Realizing。在目前状态下,Player对象正在确定需要占用的资源。

● Realized:在此状态下Player对象已经确定所需要的资源,并且也确定播放的多媒体的类型。

● Prefetching:当prefectch()方法被调用时,Player对象的状态从Realized变为Prefetching。在此种状态下的Player对象正在为播放多媒体做准备工作,例如获得需要独占的资源,加载多媒体数据等。这个过程被称为预取(Prefetch)。 ● Prefetched:该状态为Player对象完成了预取操作后就到达。

● Started:当start()方法被调用后,Player对象就进入了该状态并播放多媒体。 4.处理器

Processor为处理器对应的接口,是一种播放器。在JMF API中,Processor接口继承了Player接口。 Processor对象不仅能够支持Player对象所支持的所有功能,而且能够控制输入的多媒体数据流进行的处理类型,通过数据源向其他的Processor对象或Player对象输出数据。

除了以上提到的六种状态外,Processor 对象还有两种新的状态,这两种状态是在Unrealized状态之后,但是在Realizing状态之前。

● Configuring:当configure()方法被调用后,Processor对象进入该状态。在此种状态下,Processor对象能够连接到数据源并获取输入数据的格式信息。 ● Configured:完成数据源连接,并获得输入数据格式的信息后,Processor对象就处于Configured状态。 5.数据格式

15

Format对象中能够保存多媒体的格式信息。此类对象中本身并没有记录多媒体编码的相关信息,但是保存了编码的名称。Format的子类包括AudioFormat和VideoFormat类,ViedeoFomat又有六个子类:H261Format、H263Format、IndexedColorFormat、JPEGFormat、RGBFormat和YUVFormat类。 6.管理器

JMF提供了下面四种管理器:

● Manager:Manager相当于两个类之间的接口。例如需要播放一个DataSource对象,便可以通过使用Manager对象创建一个Player对象来播放。Manager对象可以创建Processor、Player、DataSink和DataSource对象。

● PackageManager:此类管理器中保存了JMF类注册信息。 ● CaptureDeviceManager:该管理器中保存了截取设备的注册信息。

● PlugInManager:该管理器中保存了JMF插件的注册信息。 示例一:创建一个Player对象

在JMF编程中,最常见的工作就是创建一个Player对象。可以通过Manager类的createPlayer()方法创建Player对象。Manager对象使用多媒体的URL或MediaLocator对象来创建Player对象。当获得了一个Player对象后,可以通过调用getVisualComponent()方法得到Player对象的图像部件(Visual Component,在图像部件上可以播放多媒体的图像)。然后将图像部件加入到应用程序或Applet的界面上。Player对象还包含一个控制面板,在上面可以控制媒体的播放、停止和暂停等。 Player类中的很多方法只有在Player对象处于Realized的状态下才会被调用。为了保证Player对象已经到达了该状态,需要使用Manager的createRealizePlayer()方法来获得Player对象。另一种方法,利用start()方法,可以在Player对象到达Prefetched状态之前调用该方法,此方法可以自动将Player的状态转换到Started状态。 示例二:截取多媒体数据

在JMF程序中多媒体数据的截取是另一个非常重要的功能。可以按照下面的步骤截取数据:

● CaptureDevieceManager可以查询获得所希望使用的截取设备。 ● 获得该设备对应的CaptureDeviceInfo对象。

● 从CaptureDeviecInfo对象中获得MediaLocator对象,然后利用它创建一个DataSource对象。

● 使用DataSource对象创建Player对象或Processor对象。 ● 调用start()方法,开始截取多媒体数据。

可以使用CaptureDeviceManager对象获得系统中可用的视频和音频截取设备。通过调用getDeviceList()方法你可以获得设备的列表。每个设备都对应一个

16

CaptrueDeviceInfo对象。也可以通过调用CaptureDevieceManager对象的getDevice()方法来获得特定的CaptureDeviceInfo对象。在使用设备截取多媒体数据前,还需要从CaptureDeviceInfo对象中获得设备对应的MediaLocator对象。然后你可以直接使用MediaLocator来构造Player或Processor的实例,也可以用MediaLocator构造一个DataSource对象,然后将DataSource对象送入Player或Processor对象中。最后调用start()方法来截取多媒体数据。

3.2基于JMF的传输模型的整体设计

该系统分为客户端程序和服务器端程序。服务端程序安装在本地受控计算机上,实现视频的截取与传输,客户端程序安装在远程手机上,实现视频流的接收与播放。该系统的硬件包括相互联网的远程手机,本地计算机和一个普通的视频头。该视频头安装在本地受控计算机上,实时的截取图像,并生成视频媒体流。本地受控程序对视频流进行处理后通过网络向远程手机发送视频流,远程手机接收到视频流之后,在手机的屏幕上显示出来。系统整体模型如图3.1 所示。 捕获设备 数据源 图像处理 Internet 数据编码程数据源 数据源 数据编码图3.1 JMF的传输模型的整体模型 手机屏幕显示 3.2.1视频采集

通过JMF来获取视频信息,进行图像采集的程序实现流程图如图3.2 程序具体实现视频采集过程如下: 1.打开视频设备获取摄像头数据流 具体步骤如下:

先把所有的捕获设备调出来,所有的视频捕获设备的名字都是以vfw开头的,所以取得捕获设备列表中以vfw 开头的设备名字就是视频捕获设备。定位所需要用的捕获设备,可以通过查询CaptureDeviceManager来定位。CaptureDeviceManager是可在JMF中使用的全部捕获设备的注册中心。可以通过调用CaptureDeviceManager的getDeviceList方法获取可用的捕获设备列表。

17


基于JAVA的远程视频监控系统设计(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:二年级下第一单元练习题

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: