程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> OCAP入門,第一部分: 運行OCAP RI - 概念和應用程序

OCAP入門,第一部分: 運行OCAP RI - 概念和應用程序

編輯:關於JAVA

開放有線電視應用平台(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=0x000000015205
app.0.application_control_code=AUTOSTART
app.0.visibility=VISIBLE
app.0.priority=220
app.0.base_directory=/syscwd/qa/xlet
#app.0.application_name=Circles
#app.0.initial_class_name=com.cablelabs.circlesxlet.CirclesXlet
app.0.application_name=TuneTest
app.0.initial_class_name=org.cablelabs.xlet.TuneTest.TuneTestXlet
app.0.args.0=config_file=config_tunetest.properties
app.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 本身的內部結構。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved