(以下資料歡迎轉載,請著名出處)
HbbTV架構瀏覽器應用層,解析接收的DSM-CC事件的呈現是採用JavaScript的API,因此底下介紹TS 102 796使用到的相關JavaScript API,包含增加和移除串流事件聆聽者(event listener)、Carousel物件存取XMLHttpRequest和內容購買之延伸application/oipfDrmAgent嵌入物件。
其中[內容購買之延伸application/oipfDrmAgent嵌入物件]應用操作程序部分由下集介紹 :P
定義JavaScript的API – 獲取DSM-CC事件串流
1. 增加和移除串流事件聆聽者(event listener)
下表在視訊/廣播物件(定義於OIPE DAE的規格書[2])增加的方法,應支援廣播同步事件。
表 1 增加與移除DSM-CC StreamEvent物件的操作程序
表 1 增加與移除DSM-CC StreamEvent物件的操作程序
Void addStreamEventListener(String targetURL, String eventName, EventListener listener)
|
||
描述
|
為特定DSM-CC串流事件,加入listener。當發現此事件,StreamEvent事件發送(dispatch)和傳遞(pass)StreamEvent類型給事件listener,且如果發生錯誤時應發送事件。 當廣播傳送搭載相同事件(event)之MPEG私有資料段(含版本號),只有只有單純一個事件應被傳送。而當廣播傳送使用相同事件名稱的不同事件(也就是使用不同版本號),事件應根據每個不同接收事件而發送。
|
|
參數(arguments)
|
targetURL
|
為URL,用來敘述事件表示DSM-CC StreamEvent物件或事件描述檔 |
eventName
|
加入事件名稱(指DSM-CC StreamEvent 物件) | |
listener | 該事件的listener | |
Void removeStreamEventListener(String wvwntURL, String eventName, EventListener listener)
|
||
描述 | 為特定DSM-CC串流事件名稱,移除串流事件listener。 | |
參數(arguments)
|
targetURL
|
為URL,用來敘述事件表示DSM-CC StreamEvent物件或事件描述檔 |
eventName
|
移除事件名稱(指DSM-CC StreamEvent 物件) | |
listener | 該事件的listener |
(資料來源:ETSI)
表 2 DSM-CC StreamEvent事件的操作程序
Interface StreamEvent : Event{
readonly attribute String name;
readonly attribute String data;
readonly attribute String text;
readonly attribute DOMString status;
}
|
||
性質(properties)
|
Name | DSM-CC StreamEvent的事件名稱 |
data
|
DSM-CC StreamEvent的事件 - 16進位編碼數據 例如:0A10B81033(長度為5 bytes) | |
text
|
DSM-CC StreamEvent的事件- 文本數據,如:UTF-8編碼之DSM-CC StreamEvent的事件字串,不能略過轉碼字元 | |
status
|
當錯誤發生,發送trigger事件回應error串流,也就是為不存在的事件增加一個listener,或者當一個StreamEvent物件於註冊的listener,並從carousel移除的時候。 可能發送錯誤狀況的事件,
A. 指StreamEvent物件,從carousel或透過寬頻連結皆找不到targetURL
B. 指StreamEvent物件的targetURL,沒有包含特定事件的eventName參數
C. Carousel不能掛載(mount)
D. 基本串流含StreamEvent事件表示,沒有常常被監控,是因為被另一個監測要求或從PMT內消失
一旦發送錯誤,listener自動透過終端註銷。
|
(資料來源:ETSI)
表 3 內部事件onStreamEvent對照使用到的DOM2事件與性質
內部事件 (intrinsic
event) |
相關的DOM2事件
|
DOM2事件性質(properties)
|
onStreamEvent
|
StreamEvent
|
Bubbles: NO Cancelable: NO
Context Info: name, data, text, status
|
(資料來源:ETSI)
2. Carousel物件存取XMLHttpRequest
為了存取carousel file的內容,XMLHttpRequest物件採取下列的限制:
-
通過open()方法的參數:
-
method: 應設為GET
-
url:相關(在carousel檔案系統的目前所在頁面)或絕對的dvb:URL
-
async:應設為true
-
user和password:為忽略(Ignored)
-
status:當發現DSM-CC物件設為200,若設為404,表示沒有出現在carousel或已註銷carousel(因另一個要求)
-
statusText:設為空字串
-
檔頭沒有關聯於carousel存取:
-
忽略呼叫setRequestHeader()
-
getResponseHeader()和getAllResponseHeaders()回傳一個空字串
-
responseText和responseXML數值顯示於下表
表 4 responseText和responseXML數值
DSM-CC物件
|
URL例子
|
responseText
|
responseXML
|
File
|
/weather/data.xml
|
回傳test response entity body [3] |
若副檔名已存在.xml,則回傳XML response entity body [3] |
Directory
|
/weather
|
字典內逗號分隔的物件清單 | null |
Stream Event
|
/weather/main/streamEvt1
|
逗號分隔的事件清單 | null |
(資料來源:ETSI)
舉例dvb:URL使用XMLHttpRequest物件/weather/data.xml:
dvb://tf1.B8/weather/data.xml (0xB8是個元件標籤(component tag)
1. ETSI TS 102 796 (V1.1.1) Hybrid Broadcast Broadband TV
2. Open IPTV Forum Release 2 specification, volume 5 (V2.0): “Declarative Application Environment”. NOTE: Available at http://www.openiptvforum.org/specifications.html
3. W3C Working Draft 19 November 2009: "XMLHTTPRequest". NOTE: Available athttp://www.w3.org/TR/XMLHttpRequest/.
來源:
http://fungsiong.blogspot.tw/2010/11/hbbtv-javescript-api-dsm-cc-stream.html
全站熱搜
留言列表