|
||||
面向数据电视的Java |
|
中国科学院计算技术研究所 牛锦中 杨红 Java技术1991年发源,1994年兴起,最初在消费电子领域"怀才不遇",后来由于Inter net的风靡而名声大振。近来Java又杀"回马枪",以简单、安全、可靠和跨平台特性,重新 在消费电子中找到了自己的位置。作为信息电器的代表,新一代数据电视接收机应当集消 费电子与网络功能为一体,Java为它提供了量身裁制的方案——Personal Java和JavaTV 。 面向新一代数据广播和交互业务的许多标准或规范,如MHP、DAVIC和DASE等,均以Ja vaTV为核心。目前,JavaTV虽然仅公布了API规范,但由于以下原因,使它在电视应用领域 占有重要地位: ●是一个全新的标准,不像其他组织的相应标准需要继承很多传统的东西。 ●对底层抽象简洁,层次清楚,直接面向上层应用,而其他标准则相对庞杂。 ●全面发扬了Java技术优势,其他标准均或多或少地借鉴甚至照搬了JavaTV中的思想 或概念。根据对当前及今后基于电视接收机的各种应用的分析和估计,可以将电视接收机 分为三类:增强广播型(Enhanced Broadcast)、交互广播型(Interactive Broadcast)和 网络接入型(Multi-Network)。在Personal Java和JavaTV的支持下,能够开发的典型应用 包括电子节目单(Electronic Program Guides,EPG)、节目相关应用(Program-Specific Applications)、独立应用(Stand-alone Applications)和广告应用(Advertisements, 主要考虑广告播出时间非常短暂的特点)。 解决方案 在新一代数字电视接收机之中,JavaTV与PersonalJava应用环境相结合,处在实时操 作系统(RTOS)的上层。RTOS和硬件细节对程序员开发的应用完全是透明的。下面描述应 用环境和JavaTV API所要求的硬件和软件环境模型。 1. 硬件环境 数字接收机从广播流中获取视频、音频和数据,并对它们进行解析。对此,接收机中 引入广播媒体管道的概念。一个典型的管道中按照媒体流经的次序包含如下子系统:数字 调谐器、解复用器、条件访问模块、系列媒体解码器和呈现(Presentation)子系统。Ja vaTV API并不要求上述所有子系统均存在,但每个接收机必须至少要有一个广播管道。J avaTV API则为该硬件环境提供了一个抽象。 图1说明了一个典型的管道构成及RF信号经过它的处理过程: @@1925900.JPG;图1@@ · 调谐RF信号; ●调谐后的RF信号被调制成数字信号,一般是MPE-2传输流; ●传输流经过一个解复用器变成多个流(通常是音频、视频或数据); ●视频和音频流进入条件访问子系统,它决定了用户的接收权限,并进行需要的解密 ●解密后的音频和视频流进入复用器,转换成适合视频和音频输出设备接收的信号。 2. 软件环境 图2所示为基于JavaTV的数字电视接收机上的软件栈体系结构。其中PersonalJava应 用环境和JavaTV API是核心。 @@1925901.JPG;图2@@ 最高层的各种应用使用下一层——Java层中JavaTV API和各种Java包。RTOS则为Ja va VM和Java包提供系统级支持。RTOS和针对设备的库通过一系列设备驱动程序来对接收 机进行控制。 PersonalJava应用环境面向内存有限的设备而设计开发,可为广播接收机上的应用提 供支持。其中: ●java.io包提供了对基于流的、基于文件的I/O和各种缓冲机制的抽象。若环境中 支持系统返回或错误流,还可以提供给业务提供者各个接收机的状态信息。 ●java.net基于java.io,可以用来访问和管理IP包返回信道或基于MPEG的IP信道。 ●JavaTV API中并没有定义安全模型或给出一个具体实现,这使网络管理商和各种组 织可以自由地加入自己的安全机制。 ●AWT提供了一系列的用户界面(UI)构件,称为widget(窗口小部件)。与应用相关的 widget还可以随应用下载到客户端。 视频信息可以被封装成java.awt.Component对象,通过Java Media Framework (JMF )来获取。这样GUI构件和视频构件即可以复合形式出现在屏幕上。 JavaTV API是基于PersonalJava应用环境的应用编程接口(API),是Java平台面向电 视接收机的扩展。它提供了对电视接收机特有功能的控制手段,包括对业务信息数据库的 访问、业务选择、TV上的媒体播放器控制和对以模拟或数字形式广播的数据的访问。Ja vaTV API仅针对电视接收机的特有功能,而不包括其他消费电子设备共有的API。由于Ja vaTV API是独立于硬件和物理线缆传输协议的更抽象的高层协议,故可以在现存的一些标 准中方便使用。 Java TV API使用Xlet应用模型来定义数字广播接收机上各种应用的生命周期。这些 应用称为Xlet。Xlet运行时会进行资源的申请和释放,显示内容的存取及发现和选择业务 (即电视节目)。 PersonalJava PersonalJava是专为构建可连接网络的消费类电子设备而设计的Java应用环境(JAE )。该环境主要用于家庭、办公室和移动性应用及产品的设计与实现,适合PersonalJava 应用环境的消费类电子设备包括手持移动设备(如PDA、HPC等)、数字机顶盒和游戏操作 台等。 1. 构成 PersonalJava平台主要包括以下几个部分: ●Java虚拟机 (JVM):包括字节码解释器、字节码校验器、类加载器及垃圾收集机; 支持Unicode文本、32位和64位整型数、多维数组、浮点数、线程和异常处理。支持Jav aBeans、Java Applet和支持数字签名。 ●必要的Java类:包括输入/输出、语言支持和实用工具类。 ●国际化(I18N)支持:产品使用时在本地整体包装,以便支持开发者选择的语言,因此 保证了空间和存储器的有效利用。 ●面向消费类产品的AWT版本:提供图形和窗口显示特征,支持低分辨率的显示和多变 的输入设备,可以扩展到没有标准的鼠标和键盘的设备。 2. 运行环境 PersonalJava目标环境要求如下: ● 处理器:32位,50MHz以上; ●ROM(只是API需要的空间,不包括操作系统、应用代码和数据):小于2M; ●RAM(同上):最小值为512K~1M; ●具有连接网络能力; ●键盘或其他输入方式,如远程控制和触摸屏; ●支持Applet下载,以便运行通用的Applet; ●能运行在业界领先的实时操作系统上,如Acorn、Chorus Systems、Geoworks、Lu cent Technologies、Microtec、Microware Systems、QNX、U.S. Software和Wind Riv er Systems等。 JavaTV JavaTV API是一个编程接口,面向交互电视应用或数字广播接收机上其他软件应用的 开发。它提供了如下的机制:确定当前已有的广播业务,选择一个特定的广播业务,控制广 播内容流和支持EPG来控制一个应用的整个生命周期。 1. 业务和业务信息 业务(Service)是指呈现在接收机上的各种元素,是可选择的其中有表示其特征的对 应业务信息(Service Information,SI),存放在SI库中。SI表达关于布局和视音频/数据 流内容(如MPE-2传输流)的信息。现在有多种不同标准的SI在使用。但是如果基于JavaT V API,各种应用就不需知道实际使用的SI格式怎么样,因为底层是透明的。 SI库对象模型为应用提供该库的多视图。通过指定一个特定的视图,应用可以仅关心 SI库的一部分。SI库的视图有工具(Util)、导航(Navigation)、指南(Guide)和传输(Tr ansport)。 图3显示了各视图之间的关系。工具视图提供对一般对象和辅助对象(如事件和异常 等)实例化的手段。导航视图提供的对象用于在业务中导航;指南视图表达与EPG相关的对 象,包括节目安排、单个节目事件和节目广播频率等;传输视图表达MPE-2传输流。 @@1925902.JPG;图3@@ 2. 业务选择 业务选择API支持应用以简单高级的方式控制业务的呈现,而不需要了解业务的内部 细节,也不必知道是否有应用与该业务绑定,将多个繁琐的操作封装在一些简单的方法调 用之中。 业务呈现所基于的环境,称为业务呈现环境(Service Context),用ServiceContext类 来表达。ServiceContext类的select()方法可以用来呈现一个业务。该选择是异步的,操 作的完成通过事件机制来通知,失败时则出现异常。接收机可以对支持的ServiceContex t类实例数目施加限制。 3. JMF(Java Media Framework)和广播管道 JavaTV API使用JMF来管理广播媒体管道。JMF API定义了一系列的API和框架,用来 显示基于时间、独立于传输机制、传输协议和媒体类型的媒体。 JMF定义了javax.media.Player来处理基于时间的媒体数据。一个Player对象封装了 一个状态机,可用来获取资源和管理基于时间媒体流的呈现。从Player对象还可以访问以 GUI对象形式包装的视频流。 JMF提供了两种不同的部件:协议操作部件(Protocol Handlers)和媒体操作部件(Me dia Handlers)。协议操作部件是数据的提供者,而媒体操作部件是数据的处理者。Play er便是一种媒体操作部件。协议操作部件完全依赖于具体的数据传输机制,并进行了抽象 。 4. 广播数据API JavaTV API支持以如下三种基本格式访问电视广播的数据: ●DSM-CC 对象和数据轮,是java.io的扩展。 JavaTV API通过java.io中的文件访问机制支持对DSM-CC对象轮和数据轮的访问。与 DSM-CC协议的大多数交互是由JavaTV API来完成的。这样,熟悉的接口方式和底层透明使 应用的开发非常容易且便于移植。 ●IP数据报封装,是java.net的扩展 如果底层支持,Java TV API通过java.net包中的传统数据报机制提供对封装在广播 流中的IP包的访问。 ●PES(MPE-2 Packetized Elementary Stream)格式的流数据,是javax.media.proc otol的扩展。 5. 应用生命周期 为了对接收机上应用的生命周期进行描述,与Applet类似,引入了Xlet。 @@1925903.JPG;图4@@ Xlet是在数字电视接收机上执行的(通常是下载的)Java应用。只有Xlet自己知道它 是否能提供服务并负责通知应用管理器。任何一个Xlet都不能觉察其他的Xlets或应用。 Xlet的状态由其自己控制,即只有它自己知道什么时候状态发生变化。Xlet的状态机如图 4所示。应用管理器(application manager)是数字电视接收机上管理Java 应用的软件操 作环境。Xlets通过回调机制将其状态变化通知应用管理器。 以上简要介绍了基于Java的数据电视软硬件解决方案。近期有不少关于信息家电的 不同观点出现,都是人们对不同技术路线的探索。不论采取何种方案,贴近生活,方便家庭 环境的使用是智能化家电产品的根本,而Java必将在其中扮演重要角色。 |
周报全文频道联系方式:010-68130909 |
||||||
| 【关于我们】 【广告服务】 【周报发行】 【投稿指南】 【投稿声明】 【联系方式】 【法律声明】 【媒体手册】 【编读往来】 |
||||||
| Copyright© ccw.com.cn,All rights reserved | ||||||
| 中国计算机世界出版服务公司版权所有 | ||||||