OCAP入门,第一部分:运行OCAPRI-概念和应用程序

开放有线电视应用平台(OpenCable Application Platform,OCAP)是一个针对有线电视行业的平台。OCAP 以 机顶盒和电视为目标,为增强消费者有线电视体验的交互式应用程序提供了一个标准的、独立于硬件的基础。OCAP 面向消费者的名称是 tru2way;tru2way 证书包括消费者电子市场上的许多知名公司。

OCAP 规范由 CableLabs 行业协会制定。此文档公开在 CableLabs Web 站点上,同时随附了许多相关规范说明。 OCAP 1.1.2 文档长达 667 页,与任何其他好的规范说明一样,它构建于许多其他文档基础之上。这个平台的复杂性使那些将 要成为 OCAP 开发人员的人无从下手。这个由三篇文章组成的系列旨在使 Java™ 开发人员对构建针对这一 平台的用程序感兴趣,并使用 OCAP 参考实现(Reference Implementation,RI)进行有效的开发工作。在这个第 一部分中,您会了解有关 OCAP 的许多知识,下载并安装 RI,同时在这个 RI 中运行一些应用程序。在第二部分 ,我将介绍如何创建您自己的 OCAP 应用程序:使用命令行或 Eclipse IDE。最后,第三部分将进行深入介绍,使 您能自行构建 OCAP RI。这部分还包括一个针对源代码的高级指南。

注意: 目前只有 Microsoft® Windows® 分发和支持 OCAP RI。但是,您也可以在 Linux® 上构建此 RI,我将在第三部分介绍相关内容 。

OCAP 堆栈

从应用程序的角度而言,将 OCAP 考虑成一个 API 集合比较有用。这包括屏幕上显示的图形 化 API、查找和显示电视频道的解调器 API,以及许多其他 API。不过,尽管将 OCAP 想象成一个 API 堆栈比较 有用,但这过于简单了。OCAP 规定了许多其他行为,如一台设备至少应该有几个解调器,以及一台 OCAP 设备应 该配备多大磁盘空间。

至于 API,OCAP 构建在标准的 Java ME 技术之上。图 1 显示的是 OCAP 堆栈:

图 1. OCAP 堆栈

关于蓝光

另一种基于 Java 技术的堆栈已经成为电视世界的主流技术。所有蓝光播放器都有一个软件堆栈,即 BD-J,它 是 OCAP 堆栈的 “表兄”。OCAP 和 BD-J 共享 CDC/FP/PBP 基础技术和其他 API(如 Java TV)。总而言之,这 两个堆栈是不 相同的,因此大部分应用程序如果不修改是无法同时在两个堆栈上运行的。

OCAP 堆栈由来已久,也就是说,它是由许多片段组成的。它包含许多名称(如 DAVIC 和HAVi)和组件(如图 1 所示):

Java TV 是由 Sun Microsystems 公司开发的一个标准。

JMF 是 Java 媒体框架(Java Media Framework),这是一个渲染视频和其他媒体的 API。

MHP(DVB Multimedia Home Platform,DVB 多媒体主平台)是另一个电视标准。

CDC 是 Java ME 的连接设备配置。它构成了 Java 技术堆栈的基础。如果您认为台式机上的 Java 技术大,手 机上的 Java 技术小,那么 CDC 就是中等。它针对的是电视机顶盒、便携式计算机和其他中型计算机之类的设备 。

Foundation Profile(FP)和 Personal Basis Profile(PBP) 是使用其他 API 的 CDC,包括面向用户界面 和图形界面的 API。

CDC 应用程序和标准桌面 Java 应用程序之间的重要区别之一是应用程序模型。CDC 应用程序是 Xlet,它与 applet、servlet(在企业 Java 技术方面)、MIDlet(在移动 Java 技术方面)一样具有托管生命周期。

OCAP 内部

严格来讲,OCAP 只是一种规范,所以应该由设备制造商来实现它。要掌握这一规范,可以使用 RI。

OCAP RI 是一个如何实现 OCAP 堆栈的例子。它的出现使设备制造商变得更轻松,因为它提供了一个起始点 — 可以在多种设备中使用的堆栈的知名工作实现。它也使应用程序编程人员更轻松,因为它是一个在台式机(在这里 ,可以在将应用程序部署到实际设备上之前运行和调试它们)上运行的工作 OCAP 堆栈。

因为 OCAP RI 服务于多种观众,所以它具有几种形式:

一个简单的安装程序,在 Windows 计算机上放置二进制数据。运行这个堆栈时,它就会包含一个模拟 TV 屏幕 、一个字体面板显示、一个远程控件和控制台输出。如果您想使用最少的安装运行这个 OCAP 堆栈,这将非常有用 。本文将使用这个版本。

一个 Eclipse 插件,支持使用 Eclipse IDE 创建 OCAP 应用程序和在 OCAP RI 上对这些应用程序进行测试。 本系列的第二部分将介绍 Eclipse 插件。

如果您想自行构建 OCAP RI,那么可以使用完整的源代码。这对于试图在实际设备上实现 OCAP 的人以及任何 认为从大量源代码开始比较有趣的人而言,是很有帮助的。本系列第三部分将介绍如何构建这种 OCAP RI。

获取并运行

首先 下载 针对 Windows 的安装程序。在撰写本文时,最新版本是 1.1.3RelA。如果这个链接不可用,则启动 OCAP RI 页面并单击此 OCAP RI 发行版的链接。

这个下载文件比较大 — 约 155M。获取之后,运行这个安装程序并响应提示。您无需做太多的选择,不过您如 果想知道自己在做什么,可以参考 OCAP RI 项目的维基页面。

完成安装后,桌面上将出现一个图标,双击它。此时将弹出一个命令行窗口,紧接着是 OCAP RI 窗口,如图 2 所示:

图 2. OCAP RI 已经可用

我们运行的是一个名为 CirclesXlet 的应用程序,我称之为球应用程序。下面开始。您可以通过单击远程控件 上的键控制球的数量和大小。

如何终止 OCAP RI

要关闭 OCAP RI,找到并选择命令行窗口,然后按 Ctrl+C 组合键。如果是 Windows 系统,则会询问:终止批 处理工作(Y/N)? 输入 n 并按 Enter 键。此时 OCAP RI 窗口和命令行窗口都将消失。

输入 n 是因为 VLC。 VLC 是 Internet 上的宝贵资源之一,它是一个高度可用的开放源码应用程序。您可以 使用它来播放视频、转换视频代码和播放流格式视频。 OCAP RI 使用 VLC 模拟传入视频。当您关闭 OCAP RI 时 ,也会有一个脚本(批处理文件)试图关闭 VLC。在提示是否终止批处理工作时输入 n 可以使这个脚本发挥作用 ,关闭 VLC。

再一次从命令行启动

尽管从桌面图标启动 OCAP RI 很方便,但您也可以从命令行启动它,这在有些情况下是很方便的。

在 Windows 命令行(Start > All Programs > Accessories > Command Prompt)中,切换到安装了 OCAP RI 的 ocap-ri 子目录。如果当时接受了默认安装位置,则按照如下方式更改目录:

C:/>cd CableLabs/tru2way/ocap-ri

现在通过在命令提示符下输入 runRI.bat 并按 Enter 键来运行 runRI.bat 脚本。当然,这与双击桌面图标运 行的脚本相同。完成球的处理后,按照前面的方法关闭 OCAP RI:在命令行窗口中,按 Ctrl+C 组合键,然后在提 示符下输入 n。

在 OCAP RI 上处理应用程序

有时候,您不只要运行 CirclesXlet 这一个应用程序。首先,您应该理解 OCAP RI 是如何确定运行哪一个应 用程序的。然后,您应该稍微了解一下控制台输出的存储位置。

应用程序的存储位置

OCAP RI 使用两个主要的文件查找应用程序。第一个是 mpeenv.ini,它是一个重要的配置文件,位于安装 OCAP RI 的目录下的 ocap/bin/CableLabs/simulaTor/Win32/debug/env/ 路径中。在文本编辑器中打开这个文件 并观察它。这个文件包含许多设置。

现在要关注的是针对 JVM 的类路径。它位于文件顶部附近,名为 VMOPT.0。它实际上是一个命令行参数。 VMOPT.0 的定义如下:

VMOPT.0=-Djava.class.path=/syscwd/sys/ocap-classes.jar;              /syscwd/sys/ocap-rez.jar;              /syscwd/sys/support.jar;              /syscwd/qa/ocap-test.jar;              /syscwd/qa/support-test.jar;              /syscwd;              /syscwd/usr;              /syscwd/apps/eas

VMOPT.0 定义实际上是一长条,但这里我为了清楚显示,把它分成了几段。在 OCAP RI 世界里, /syscwd 表 示当前工作目录,在本例中即是 mpeenv.ini 的位置。

OCAP RI 在此类路径中搜寻每个条目,查找 hostapps.properties 文件。然后启动此文件中描绘的应用程序。 明白这一点后,就可以弄清 CirclesXlet 的运行方式了。

这个类路径中的前 5 个条目是 JAR 文件,它们没有对应的 hostapps.properties。然后紧接着的一个条目是 /syscwd。查看 ocap/bin/CableLabs/simulaTor/Win32/debug/env/(在 OCAP 领域中,这实际上是 /syscwd), 您将发现一个 hostapps.properties 文件。在文本编辑器中打开 hostapps.properties。它定义了几个字段并提 供一个应用程序类名称。在本例中,它是 com.cablelabs.circlesxlet.CirclesXlet。

看电视

要了解所有这些程序如何协调工作,则需要将 hostapps.properties 改为运行 TuneTest。TuneTest 是一个比 较简单的演示程序,用于试验 OCAP 的电视调台 API。

首先,在 CirclesXlet 的 application_name 和 initial_class_name 行前面分别输入一个井字符(#)来注 释这些行。然后,取消 注释 TuneTest 的 4 个条目。完成之后,hostapps.properties 应该如下所示:

app.0.application_identifier=0x000000015205app.0.application_control_code=AUTOSTARTapp.0.visibility=VISIBLEapp.0.priority=220app.0.base_direcTory=/syscwd/qa/xlet#app.0.application_name=Circles#app.0.initial_class_name=com.cablelabs.circlesxlet.CirclesXletapp.0.application_name=TuneTestapp.0.initial_class_name=org.cablelabs.xlet.TuneTest.TuneTestXletapp.0.args.0=config_file=config_tunetest.propertiesapp.0.args.1=java_tv_channel_map=true

马上就可以再次启动 OCAP RI 了,不过在此之前要妥善处理好几件事情。首先,您需要为 TuneTest 提供一个 配置文件。其次,您必须在视频流软件中打断。

查看 hostapps.properties 中的app.0.args.0 条目。它指定了 TuneTest 期望找到的配置文件的名称。您需 要将这个文件放在正确的位置。

该配置文件位于 OCAP RI 安装目录下的 extras 中,即 c:/CableLabs/tru2way/ocap-ri/extras(如果您使用 默认安装目录的话)。复制 config_tunetest.properties 并将它放在 ocap/bin/CableLabs/simulaTor/Win32 /debug/env/qa/xlet 中, 这与 /syscwd/qa/xlet 相同,您会发现它被指定为 hostapps.properties 中的基目录 。

因为 TuneTest 显示传入视频,所以 OCAP RI 将使用 VLC。与新的棒球手套一样,VLC 在使用之前需要被打开 。第一次运行 VLC 时,它表示一个具有私人设置的对话。当 OCAP RI 试图运行 VLC 时,它将在此对话处受阻( 不可见),不能用于展示视频。

要打开 VLC,打开一个命令行窗口。导航至 OCAP RI 安装目录中的 ricommon/resources/Win32/VLC 中。然后 输入 vlc 并按 Enter 键。此时会立即返回命令提示符,几秒钟之后,您会看到 VLC 的私人设置对话,如图 3 所 示:

图 3. VLC 的私人设置对话

您所需做的只是单击 OK。对话框随即消失,您将看到 VLC 的主窗口,如图 4 所示:

图 4. VLC 的主窗口

您现在可以退出 VLC 了。如果再次运行它,就会直接进入主窗口。现在 VLC 便可以自动从 OCAP RI 运行了。

现在一切妥当了。使用 runRI.bat 命令再次启动 OCAP RI。恭喜您!您现在可以观看模拟电视了!图 5 显示 了播放效果:

图 5. 喝啤酒吃爆米花

在最好的情况下,视频播放也会出现断断续续的现象,而且切换频道足足要花 20 秒(如果您的硬件比我的快 ,得到的结果可能会好一些)。但是不管怎么说,对于使用 OCAP 执行播放电视之类的事情而言,TuneTest 是一 个比较好的例子。

检查内部情况

您可能会发现,OCAP RI 在它所运行的命令行窗口中生成了数量惊人的输出。有时通过调试检查这些输出是很 有帮助的。

OCAP RI 在运行时,会自动在 RILog.txt 文件中存储一个输出日志。随便使用一种文本编辑器打开它,看看实 际情况如何。如果想查看某些具体的内容,那么在文本编辑器中查找比在控制台上滚动要简单些。

mpeenv.ini 中的一些设置控制日志输出。以 LOG.MPE 打头的条目控制输出的具体类型。LOG.MPE.DEFAULT 的 ALL 设置打开所有消息。您可以将它更改为 NONE,然后选择性地启用其他类型的日志记录以得到更具体的输出。

另请注意,ALL 与 ALL DEBUG 不同。使用 ALL DEBUG 会得到更多控制台消息。

第一部分总结

至此,您已经了解了 OCAP RI 的炫酷功能。对于希望为下一代电视设备创建应用程序的开发人员而言,OCAP RI 是一个强大的工具。如您所见,OCAP RI 是一个用于运行 OCAP 应用程序的可访问工具,只能在 Windows 计算 机上使用。您可以创建用户界面并测试高级功能(如调台),而无需专门的硬件或有用的电视广播环境。

在本系列的第二部分,我将介绍如何创建可以在 OCAP RI 和其他 OCAP 设备上运行的应用程序。最后,在第三 部分,我将介绍 OCAP RI 本身的内部结构。

即使是不成熟的尝试,也胜于胎死腹中的策略。

OCAP入门,第一部分:运行OCAPRI-概念和应用程序

相关文章:

你感兴趣的文章:

标签云: