宋国柱
摘要:基于J2ME体系框架,结合MMAPI技术,设计并实现了一个移动媒体播放器。重点阐述了MMAPI技术及播放器类的设计。
关键词:J2ME;MMAPI;视频技术;播放器
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2014)07-1556-03
1 概述
随着移动媒体技术的发展,J2ME在手机、PDA等移动设备上的到了广泛的应用,目前已成为手机开发的主流平台之一,该文首先介绍了J2ME层次结构,MMAPI框架。然后对视频播放器的功能要求做了分析,搭建开发平台,设计了并实现了一款基于J2ME的移动媒体播放器。
2 技术分析
2.1 J2ME体系框架概述
J2ME平台有一系列技术规范组成。J2ME主要由配置(configuration)、简表(profile)和可选包(层)三部分组成。J2ME体系框架结构如图1所示。
2.2 MMAPI框架分析
移动媒体API(Mobile Media API,MMAPI)是JSR135定义的可选包,处于J2ME体系框架的可选包层。提供了一个功能强大,使用简单的多媒体框架。开发人员可以使用这个多媒体框架在移动设备上处理音频和视频数据。MMAPI框架有一个管理器、一个数据源、一个播放器和若干个控制器组成,其中播放器是MMAPI的核心。他们之间的关系如图2所示。
现对MMAPI框架中的各个组件说明如下:(1)数据源(DataSource):数据源由抽象类javax.microedition.media.protocol.DataSource描述,负责把多媒体数据从原始位置传输到播放器。多媒体数据可以存储在各种不同的位置。如文件、远程服务器或者记录管理系统等。根据多媒体数据的存储位置,数据源采用不同的传输协议。(2)播放器(player):播放器是MMAPI框架的核心,负责和解码数据源提供的多媒体数据,并把解析后的数据发送到输出设备的缓冲区中。Java.microediton.media.Player接口定义了管理器播放器生命周期、控制媒体重放和同步的方法。(3)控制器(Control):控制器负责改变播放器的行为。如声音控制器可以调整音频播发器的声音大小。(4)管理器(Manager):管理器又javax.microedition.media.Manager类实现,负责创建播放器和数据源。它提供了创建播放器的静态方法createPlayer。
2.3 使用MMAPI
视频播放的基本流程是:首先通过一定的网络协议或本地的位置获取传递来的流数据,然后将这些流数据传输给DataSource类进行处理,DataSource类将读取视频流和音频流数据并将它们提供给Player类,最后由Player类解析和解码数据以及识别媒体数据类型和传送媒体数据到相应的输出设备缓冲中,Player通过同步机制使用音频和视频设备实现视频和音频的播放。
播放器在其生命周期中有5种状态,图3描述了播放器的生命周期。播放器被创建成功,此时播放器处于unrealized状态。调用realized()方法初始化数据传输,当从该方法返回时,播放器处于realized状态。然后调用prefetch()方法获取音频设备、视频设备等专用资源,直到成功获取这些资源,播放器进入prefetched状态。此时播放器就可以调用start()方法开始播放媒体数据,播放器进入started状态。而在任何一种状态下,都可以调用close( )方法使播放器处于closed状态。如果播放器unrealized状态直接调用start()方法,系统将自动调用中间的realized()方法和prefetch()方法。
3 实例应用
3.1 设计要求
设计一款视频播放器能够播放MPEG格式的视频文件。具体要求如下:(1)当用户选择“打开视频文件”选项时,在屏幕上显示一个文件对话框。在文件对话框中列出了当前目录下所有的子目录和MPEG格式的视频文件。用户可以选择打开一个视频文件,也可以选择进入目录或者上一级目录。文件对话框第一次显示时,将列出移动设备中所有文件系统的根目录。(2)当用户打开一个视頻文件时,将启动播放器,在屏幕上播放选择的视频文件。在播放视频的过程中,用户可以通过屏幕上的命令暂时播放和继续播放视频。用户还可以通过按下方向键改变音。(3)用户尅停止播放视频,返回播放器的主菜单,再次打开文件对话框,打开新的视频文件。
3.2 类设计
移动视频播放器共包含4个类和一个接口。一个控制器类MobilPlayerMIDlet;一个视图类VedioCanvas;一个视频播放器类VedioPlayer以及一个文件对话框类VedioFileDialog和文件对话框命令的处理接口VedioFileDialogListener。图4显示了它们之间的关系。
1)控制器类MobilPlayerMIDlet:该类是应用程序主类,实现了MIDlet的生命周期控制方法。该类实现了PlayerListener接口,能够监视播放器的变化。同时,该类还实现了CommandListener接口,处理播放、暂停等命令。2)播放器类VedioPlayer:该类描述了视频播放过程。为了避免播放视频阻塞用户界面线程,视频的播放过程在一个线程中完成。
3.3 实例实现
移动视频播放器在eclispeME+SDK平台下,采用Sun公司的WTK进行模拟,通过实验达到了预期的效果。以下是运行的效果,如图5所示。
4 结束语
移动媒体的软件开发是当前研究的热点。该文阐述了J2ME的系统架构,分析了MMAPI框架,采用该技术设计实现了一款手机视频播放器。通过实验,取得了预期的效果。
参考文献:
[1] 卢军.J2ME移动软件程序设计[M].北京:水利水电出版社,2010.
[2] 傅伟.基于J2ME的手机掼蛋网络游戏的研究[J].计算机应用软件,2013(3).
[3] 黄志宏.基于J2ME的流媒体视频服务系统的设计与实现[J].计算机工程与设计,2010,31(19).
[4] 王庆鹃,张星明.基于J2ME的手机视频捕获方法的实现[J].电脑与电信,2009(3):81-83.
[5] 徐成,谷吉芳.基于RTP的流媒体传输系统框架研究[J].计算机工程与应用,2009,45(8):76-79.