频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

使用J2ME MMAPI开发移动多媒体应用技术

来源:赛迪网 作者:dxaw 出处:巧巧读书 2007-12-10 进入讨论组

一、引言

在当前世面上存在着大量的不同媒体格式,并且还有许多新的媒体格式即将被建立。为了存储和传输这些不同的媒体格式,存在着了许多不同格式的存储设备和传输协议,例如大家常使用的媒体存储设备(如CD、VCD以及DVD),有线传输协议(如UDP、HTTP),无线传输协议(如WAP)。

为了使移动装置能够访问这些不同格式的媒体数据,必须为其设计一个规范化的、强大的和可扩充的应用接口。J2ME中就提供了一套为规范的播放和录制音频或视频接口,即Mobile Media API (MMAPI)。

二、MMAPI体系结构

一般情况下,可以将媒体处理过程分解为两个过程:

◆处理媒体数据的传输协议的过程。
◆处理媒体数据内容的过程。

1、处理媒体数据的传输协议的过程

处理传输协议的过程是指从数据源(如一个文件、一个捕获装置或一个流服务)上读取媒体数据内容后,将其传送到媒体数据内容处理的过程。

MMAPI使用Data Source来处理媒体数据的传输协议的过程。一个Data Source知道如何从它的原始位置读取媒体数据并传送给媒体数据处理(Player)。媒体数据可以被保存在不同的位置,从远程服务器到资源文件或者RMS数据库。媒体数据可以从原始位置通过HTTP,像RTP一样的流式传输协议,或者其他机制传输到媒体数据处理(Player)。图一展示了Data Source的工作过程。

使用J2ME MMAPI开发移动多媒体应用技术(图一)

图1:Data Source工作过程

javax.microedition.media.protocol.DataSource提供了MMAPI的Data Source的支持。

2、处理媒体数据内容的过程

处理媒体数据内容的过程通常需要对媒体数据进行解释和解码,并且还需要认别该媒体的输出设置的类型,如是音频设置或者视频设置。举个例子,当DataSource从某媒体数据源上获取一MP3媒体数据,并将其传送给处理媒体数据内容过程,此过程首先对这个MP3媒体数据进行解析和解码,同时检测该MP3媒体为音频数据,打开装置的音频设备,将解析和解码后的媒体数据直接传送到装置的音频设备缓冲中,由该音频设备根据缓冲区中的数据内容产生音频信号。

MMAPI使用Player来处理媒体数据内容。一个Player是javax.microedition.media.Player接口的一个实现实例,它从Data Source中读取媒体数据、解析和解码数据以及识别媒体输出设备和传送媒体数据到输出设备等。Player提供了一套方法去控制媒体的重放和同步。

MMAPI还提供了一个或多个Controls来调整player的行为,可以在player从媒体转换数据的时候从一个player实例取得并且使用Controls。我们可以通过Player中提供的一些特殊的Controls访问一些特殊的媒体类型。Controls由javax.microedition.media.Control接口实现。

3、Manager

J2ME为了实现对DataSource和Player有效管理,使用了工厂机制,由Manager来负责创建Player和DataSource。这样的机制在JAVA中到处可见,如JDBC中的DriverManager,这里我就不对这种机制进行介绍了。Manager不仅可以从DataSource中创建Player,而且还可以从本地或InputStream中创建Player。图二展示了MMAPI整体结构图。

使用J2ME MMAPI开发移动多媒体应用技术(图二)

图2:MMAPI整体结构图

三、使用MMAPI

MMAPI提供的类和接口都在javax.microedition.media中,在程序中使用MMAPI时,首先应该引用这些包,否则程序无法编译。

每个MMAPI程序都需要创建一个Player对象,前面我们已经介绍过,MMAPI使用Manager的CreatePlayer函数来创建Player对象,该函数有三个版本,其格式如下:

public static Player createPlayer(String locator)
throws IOException, MediaException
public static Player createPlayer(DataSource source)
throws IOException, MediaException
public static Player createPlayer(InputStream stream, String type)
throws IOException, MediaException

第一个版本实现通过URL字符串指定的协议和数据位置的信息创建一个Player对象,其中locator的格式如下:

Manager将对createPlayer函数中提供的URL字符串参数进行分析,创建一个Data Source对象,由该对象完成对媒体数据的传输工作,并从数据中获取该媒体的数据内容类型,Manager将根据这个媒体数据类型创建相应的Player对象,如果Manager无法确定DataSource的内容类型,它将抛出一个MediaException异常。

例:创建一个控制某网站MP3音频的Player对象。

Player pMP3 = Manager.createPlayer( "http://www.XXX.com/111.mp3");

第二版本实现通过已知的DataSource对象创建Player对象。

第三版本实现通过InputStream流创建Player对象。

更多文章 更多内容请看多媒体应用解决方案J2ME开发教程J2ME游戏开发应用专题,或进入讨论组讨论。
更多专题 【深 度 阅 读】 相 关 文 章
    收藏此文】【 】【打印】【关闭
    相关图文阅读
    频道图文推荐
    健 康 咨 询
    时 尚 咨 询
    巧巧读书宗旨
    相关专题
    讨论组问题推荐
    站内各频道最新更新文档
    站内最新制作专题
    热门关键字导读
    Photoshop教 程照片处理 照片制作 PS快捷键 抠图
    计 算 机 故 障XP系统修复
    艺 术 与 设 计设计 流媒体 设计欣赏 边框
    计 算 机 安 全ARP
    站内频道文章精选
    巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章