MHP 物件輪播HTML應用解析與實現

2021-06-16 16:33:54 字數 3531 閱讀 8094

提要:本文以乙個具體的dvb資料廣播應用例子,介紹了如何從dvb廣播中獲取應用資料。

1.dvb的oc 物件傳送

dvb mhp標準中將物件輪播作為其傳輸標準,乙個dvb物件輪播代表乙個由dsm-cc u-u物件集合而成的特殊服務,物件傳輸使用目錄物件、檔案物件和流物件,物件傳輸方式是將一組結構化的物件進行周期性地廣播,它使伺服器端向終端使用者傳遞一組結構化資料變得十分方便。

2.物件輪播中的dsm-cc訊息

)。主要使用的訊息分類:見表一

download control message

(table_id

值為0x3b)

和download data message

(table_id

值為0x3c)。

download control message

包括: ll

l: l

3.物件輪播中使用的物件:

在dvb的物件輪播過程中,使用了一系列物件來表示所傳送資料的層次關係。它包括:

(1)業務閘道器物件(service gateway object).

(2)目錄物件(directory object).

(3)檔案物件(file object).

(4)流物件(stream object).

(5)流事件物件(stream event object).

在物件輪播中。伺服器按照一定的方式迴圈的傳送這些物件。而接收端接收到這些物件之後,從物件中還原資料,並恢復資料之間的層次結構。dsm-cc標準中規定了物件的語法結構以及封裝的方式,每個物件都統一按照biop(broadcast inter orb protocol)訊息的方式,被封裝到乙個biop訊息中。biop訊息分為訊息頭(message header)、子訊息頭(message subheader)和通用物件訊息(generic object message)三個部分。在訊息頭中包含biop訊息的長度、同步位元組等資料。在子訊息頭中包含被封裝的物件的型別(object kind)和鍵值(object key)字段。object kind用來表示物件的型別,而object key可以在乙個物件輪播集中唯一地標識這個物件。通用物件訊息中包含的是物件的資料,它根據物件種類的不同而有所區別。

l目錄物件

簡稱dir物件。在物件輪播中,它的作用是描述繫結在該目錄下面的物件的資訊。就像電腦上的資料夾,乙個目錄(也就是資料夾)下面可以包含多個檔案和子目錄(子資料夾),每乙個子目錄又可以包含多個檔案和更低一級的子目錄。這種目錄和檔案、子目錄的包含關係,在dir物件中被描述為繫結(binding)。在dir物件中會標明該目錄所包含的繫結個數,乙個繫結對應乙個檔案或子資料夾。每個繫結由名稱(binding name)、型別(binding type)、物件參考(object reference)來描述,接收端通過binding type來判斷所繫結的是資料夾還是檔案,通過binding name來為所繫結的檔案或資料夾命名,通過物件參考從ts流中正確地找到這個物件的資料。

l業務閘道器物件 l

檔案物件

oc中的檔案物件,簡稱fil物件。乙個fil物件包含傳送的乙個檔案,因此fil物件中沒有繫結資訊,也沒有物件參考(object reference),它的有效負載部分只包含檔案的全部資料。

l流物件和流事件物件

oc中的流物件簡稱str物件,流事件物件簡稱ste物件。str物件的作用是當乙個資料廣播業務中2中多個pid的時候,使用str物件來指定某一路基本流(es.elementary stresm)pid或是某一套節目。ste物件會指示傳送dsm-cc流描述子(dsmcc stream descriptor)的是哪乙個pid,並為事件設定事件id(eventide)。

由此可以看出,dsm-cc物件輪播在支援檔案、目錄物件和流物件的傳輸是不同的,它對於傳輸的目錄和檔案物件,其內容是包含在物件中的。而流物件則是其它流的參考基準。

模組(module):它是物件輪播(oc)中biop訊息的容器,每個模組可以包含乙個或多個biop訊息。見表2。

4.塊、模組、物件的組成:

塊、模組、物件的組成關係如下表3:

表3

5.數字北京的解析過程:

downloadmessage

下面是634頻點數字北京的解析過程(截圖來自ares-c2.2):

(1)解析dsm-cc dsi訊息,獲取業務閘道器資訊,見圖1:

模組描述在這裡

messageid = 0x1002

dsi

所在的section

tid = 0x3b

messageid = 0x1006

dsi

所在的section

tid = 0x3b

messageid = 0x1006

圖1 根據table_id及messageid得到dsi,在dsi的privatedatabyte中包含的業務閘道器ior。

privatedata

包含業務閘道器資料。

圖2 moduleid

objectkey

圖3(2)解析dsm-cc dii訊息,獲取模組描述,見圖1、圖4

圖4numberofmodules為模組個數,moduleid為模組的id號,modulesize為模組大小。

(3)解析dsm-cc ddb訊息,獲取模組資料

ddb訊息的有效載荷為乙個塊(block),塊中相同moudleid及版本的塊構成乙個模組(module)見圖5,根據last_section_number可知當前模組含有的塊數。圖5

(4)通過業務閘道器獲取根路徑。

解析業務閘道器ior得到指向業務閘道器根路徑模組的id號,moduleid為0x0000,解析ior包含的biop profile body, 得到objectkey為0xc072be03,見圖2,圖3。

(5)解析遞迴解析根路徑下的子目錄

在解析出的modules中找到moduleid=0x0000的模組,在此模組中找到objectkey為0xc072be03的boip訊息,該訊息中包含的物件就是業務根路徑,數字北京的業務根路徑名為broadcastdata。目錄訊息(directorymessage)下的bindings_count給出了當前目錄下繫結的目錄及檔案個數。遞迴解析下面的所有目錄,每個目錄物件都有乙個ior指向它的下一級物件。直到解析完畢。

(6)處理所有子目錄下的檔案。

如果目錄包含的是檔案物件(namecomponent kind為fil),則該物件的有效載荷就是檔案資料。

6.結論

物件輪播能夠傳送複雜的具有層次結構的資料,解析html應用,實現了解dvb資料廣播的目的,為掌握mhp的其他應用奠定了乙個入門基礎,相信全面掌握dvb mhp技術為時不遠。

2007-04-23

物件導向輪播

物件導向的輪播,的最後一張是第一張圖,的第一張是最後一張圖,滑鼠移入暫停輪播,可點選按鈕和頁碼切換 使用時需要獲取一下對應的元素物件 var outer outer 獲取最大的框 var oinner inner 獲取ul var item inner li 獲取li var leftbtn lef...

原生js物件導向實現簡單輪播

平時中我習慣用jquery寫輪播效果,實現過程不是很難,也很方便,為了加深對js物件導向的理解,我打算用物件導向實現乙個簡單的輪播,這裡採用了字面量的方式實現。為了實現這個過程,我們要自己動手封裝乙個運動函式animate,在這裡我採用的是勻速運動的方式,這種方式可能體驗不是很好,後面分析js 我在...

DOM物件,控制HTML物件

1.getelementsbyname 方法 返回帶有指定名稱的節點物件的集合。語法 document.getelementsbyname name 注意 1 因為文件中的name屬性可能不唯一,所有getelementsbyname 方法返回的是元素的陣列,而不是乙個元素。2 和陣列類似也有len...