【Java开源代码栏目提醒】:网学会员鉴于大家对Java开源代码十分关注,论文会员在此为大家搜集整理了“跨平台java多媒体显示系统创建研究 - 期刊论文”一文,供大家参考学习
第17卷第8期 计算机技术与发展 V01.17 NO.8 2007年8月 COⅣ旷UTFR TECHNOLOGY AND DEVEI.OPMENT Aug. 2007 跨平台Java多媒体显示系统创建研究 单振,舒平 (东南大学计算机学院,江苏南京210096) 摘要:随着LED大屏及等离子大屏技术的成熟,大屏幕多媒体显示在各种场合被越来越多地使用。
虽然已经有很多大 屏显示系统被开发,但现时并没有太多使用Java开发的LED大屏多媒体播放系统,它们一般都存在无法跨平台使用的问 题。
简介了一个使用Java开发的具有跨平台性能的多媒体播放系统,图示了整个系统的基本构架;并对其中的一些关键 技术,如:屏幕分割、分层显示、系统对事件监听的处理、文字处理框、数据库连接及同步、表格显示等进行了阐述。
关键词:大屏幕显示;屏幕分割;事件监听;分层显示;数据库连接及同步 中图分类号:TN919.85 文献标识码:A 文章编号:1673—629X(2007)08—0212—03 Research on Construction of Platform Independent Multimedia System Based on Java SHAN Zhen,SHU Ping (School of Computer Science&Engineering,Southeast University,Nanjing 210096,China) Abstract:With development of LED and plasma display unit,rllore and more large screens are used in media.Though alot of systems were developedforthem,few ofthemweredevelopedwithJava andSo sufferedfromtheproblemthatthey can’tbe usedindifferent platform. This text introduced a new media show syStem that was developed with Java.It visualizes the main stmeture and alSO outlines some key technology such as;screen cut,multi~layer show,system eventslistening andtextureediting,database connectionandtable. Key words:linage screen show;screen separation;event listening;hierarchical display;database connection and synchronizationO引 言 子大屏作为显示各种银行信息之用。
为此需要一个全 所谓多媒体,就是将文字、图像、视频等连接起来, 新的大屏显示系统,其媒体显示的基本的要求是要处完成表示信息和传播信息的载体。
现在的多媒体显示 理带有图片背景的多媒体播放,需要诸如滚动字幕和方面,在多种媒体的组合和应用方面,做得比较好的是 活动广告图片的显示、根据最新数据库信息进行的动Macromedia公司的Hash动画,它成功地将文字、各种 态利率显示、各种广告视频的播放等。
同时,由于基于格式的图像和声音等组合起来,并可以对其定义多种 Windows并不是一种
开源免费平台,为了降低开发和动作和处理,甚至可以编写脚本程序来简化定义,或完 应用的成本,需要该系统具有跨平台开发和处理的能成各种输入信息地处理。
而且,Hash还很好地处理了 力,以便信息中心可以在Windows平台上进行多媒体最后文件的压缩处理问题。
但是Flash也有一些问 编辑,然后再在Linux平台上(大屏端)进行播放。
题,比如不能很方便地在Linu)【平台上运行,同时它只 在之前类似的多媒体系统,已经由多家公司进行是一个小程序,不能进行远端控制和更新,不能连接数 了开发,如常州金石开公司等。
但是这些系统都是使据库等。
用C或者Basic等语言开发的Windows平台专用系 统,不具备跨平台性。
为了使系统具有跨平台性,一般1多媒体显示
设计概述 有两种方法:使用一般编程语言编写,然后经过修改, 2005年中国银行苏州分行开始在各处安装等离 在不同平台下进行编译,使用这种方法可以找到很多 已有的成熟控件,开发十分便捷,但只可以使相同的程 序在不同的系统上运行,而跨平台之间程序
通信、调收稿日期:2006—10—12作者简介:单振(1981一),男,江苏苏州人,硕士研究生,研究方向 用,和文件的传输、格式处理等问题很难解决。
第二种为计算机图像、图形学等;舒平,副教授,硕士生导师,研究方向为 方法就是使用Java这种具有跨平台性能的编程语言
计算机软件理论、计算机操作
系统、汁算机图形学等。
进行编写,虽然没有现成的控件可以使用,但是只要开 万方数据 第8期 单振等:跨平台Java多媒体显示系统创建研究 ·213·发成功,便可以很简单地解决所有跨平台问题。
2.3屏幕分割类ShowArea 为了达到上述的各种基本要求,本系统的主要问 (1)使用多线程支持动作处理。
题有如下几个:文字、图片以及声音和视频的显示和播 考虑到在大屏显示时常常会将屏幕进行分割显放问题;多媒体显示的层次问题;文字、图片、视频等的 示,比如在屏幕的右上方显示时间,下方显示滚动字各种动作的定义和实现
问题;序列化问题,即如何将新 幕,这个屏幕分割的任务,由ShowArea来实现,它是一编辑的多媒体文件保存下来并通过网络传播;数据库 个JPanel类的派生类L1 J,可以在ShowArea区域放置各访问、显示及其容错问题。
种实际的媒体显示类(如TextAread,TableArea等)。
虽然多线程已经成了现代编程的流行方式,每个子媒 体显示类可以定义各自的动作和设置,然后由各自产 生线程来负责处理,但是考虑到本系统在一个单一页 面上可以定义多个媒体显示类,这样会构成十几个甚 至几十个线程。
如果一个系统有太多的线程也是不太 合适的,除了资源开销外,还会有诸如数据同步等多种 问题,所以,本系统决定将动作的处理由ShowArea类 生成单一线程集中处理。
其所有的子类,拥有一个指 r下18下鼍觚 向所属ShowArea类的引用,每当新建一个动作,便通 过该引用向其父类进行
注册。
父类计算所有这些动作 l l L仙~I 的总起始和结束时间,使用单一线程通过一个while C—han…ge_T~ext_Si—ze№ 循环来处理所有这些动作的执行。
(2)显示的分层实现。
¨E蔓一一 ShowArea类另一个需要处理的问题是媒体类的 分层显示。
本系统使用了jbuilder2005的XYgayout类 作为布局控制,由于在
java(1.4)的Panel类中的布局 中不存在分层显示的概念恻2,所以必须开发
代码来实 I 亡S二howFiled2N 现,本系统采用了重写panel类的add方法类来实现, 将每一层所有的panel保存在单独的矢量(Vector类) 1 数组中(咒,~咒9),并在每次调用add类时,ShowArea 类首先查询新加入媒体类子窗口的所属的层数,z,,以 及其坐标和大小,然后
查询将层数722=,z1+1的矢 量,对其中保存的每个媒体类子窗口,根据其坐标及大 小,确定其与新添加在窗口是否有覆盖关系,如果有则 将其保存在一个单独的矢量中,并从ShowArea中移 除,之后,调用Panel类的add方法将新添的媒体类窗口 加入ShowArea中,然后,再将刚移除的媒体类、子窗口 重新加回ShowArea中。
值得注意的是,如果是要在最 底层71,加入新的媒体类,那么该方法会引起一系歹O的 计算(从//,层到,z。
层的一系列添加和删除)。
暂时没 有其它更好的方法。
所幸,一般底层都可作为静态背景 使用,调用一次add后一般不会再次调用。
2.4使用JMF实现音频和视频的播放 VideoArea和AudioArea分别是处理视频和音频 的类,它们只是简单地应用了JMF,Java多媒体框架 (JMF)中包含了许多用于处理多媒体的API。
它是一 个相当复杂的系统,完全了解这个系统可能需要花上 几周的时间,但是对于一般应用而言只需知道几个核 万方数据 ·214· 汁算机技术与发展 第17卷心接口和类,现在有很多介绍这方面的文章,只要稍微 服务器端收到
报告后,回一个消息给客户端,决定是否看一下,便能用很少的
代码编写出很好的多媒体组件, 停止该表格数据的显示。
本系统只是简单进行了应用,借鉴一个网上现成的媒 2.7媒体文件的序列化体播放组件,在其中新添了自己的鼠标右键弹出式菜 由于这个多媒体文件是由一系列的文件集合而单,通过新添鼠标事件的监听,来实现通过鼠标拖动进 成,所以其保存比较麻烦,笔者采用将所有的动作定义行视频窗口的缩放功能L3 J。
和文本文件序列化成单独的文件,并将其和所有的文2.5文字处理类TextArea 件(图片、音乐和视频)全部打包成一个zip文件,然后 ’FextArea类作为文字显示类,在Java中已有现成 自动通过网络发送到每一个在线的客户端,再由客户的类,但不能对其进行鼠标拖动,相应方便的是使用图 端解包并装载。
由于压缩和解
压缩需要大量计算,所形界面进行文字字体格式的设置。
为此,在通过继承 有如果一个多媒体片断由多个视频文件组成的话,保在Java已有的JTextField类上进行改进,新添了对鼠 存和打开文件可能会花一定的时间心j。
标的拖动以及鼠标右键弹出式选单的监听,可以对文 2.8最后实现本区域进行缩放和移位;由于Java不支持鼠标双击事 在服务器编辑模式下,系统运行的大致窗口为:件,所以通过一个变量,旧的记录鼠标单击事件发生的时间,并于新事件发生的时间进行比较来确定是否发生了双击事件i 4|。
如果发生了双击,则开始进入编辑模式,激活主窗口上的文字格式显示器,并将一个自身的引用传给它,使其对该编辑区域的文 字设定字体格式等,同时通过去除鼠标事件的监听,以关闭文本区域鼠标拖动的相应位置,使该文本区处于固定状态;通过新添对焦点事件(focus—Listener)的监听,在编辑完毕后,只需在文本区域外任意点击,使该文本区域失去焦点,引起一个事件响应,重新将鼠标拖动以及进行鼠标右键弹 图2基本运行外貌出式选单的监听,并通知主窗口文字格式显示器,使其失效,便可取消编辑模式,进入一般模式。
3总 结2.6数据库表格处理显示类TableArea Java是一个功能强大的编程工具,但是现今,使用 Java本身具有一个处理数表格的类JTable,但由 Java创建多媒体系统还只是一个开始,仍然有许多值于其显示格式单调,丽银行不但要显示数值数据,还要 得研究的地方。
本系统使用Java编程语言,应用分层 构架模式,实现了自动网络文件传输、屏幕分割、各种可以根据数值进行绘图,所以.通过重写paint函数自 媒体信息的分层显示、数据库表格处理,构建了一整套行绘制表格和图形。
另一方面,由于涉及数据库的远 文字处理控件、实现图片、音乐和视频整合编辑功能,程访问,可能会有各种情况(如远程数据库不可访问 以及实现了对所有媒体进行各种动作的设定,并以多等),也必须添加
代码来处理,由于Java有很好的违例 线程的方法进行了实现。
差错控制,只需要简单地在数据库访问
代码的catch中添加处理方法即可(5|。
一般有两种处理方法:立即停 参考文献:止数据的显示,或先使用旧的数据,并在屏幕上写字提 【1〕Eckel B.Thinking in Java〔M〕.2nd Edition.New York:Pear。
醒。
son Education,2001. 远程数据库访问失效,一般有两种情况:远程数据 〔2〕吴益华,陈志远.Java技术手册〔M〕.北京:中国电力出版库故障和
网络故障。
通过一个简单的网络Socket函 社,2002.数,可以将故障发送到服务器端,如果不是网络故障, (下转第218页) 万方数据 ·218· 计算机技术与发展 第17卷 int engClose(Engine*ep)。
/1℃ID0:Add control notification handler code here your 在上述
程序中若启用engClose函数,由于该函数Engine“ep; 在程序执行完成后迅速释放资源,Matlab窗口显示的if(!(ep=engOpen(NULL)))// 图像压缩处理结果将会马上消失。
因此,为了更好地 观察程序运行结果,在程序执行前可以先注释掉该行MessageBox(“Can’t start Maflab engine”);
代码。
return; .