如何從TS流中找到OC數據
OC(dsm-cc object carousel):是將“對象結構”從廣播服務器傳輸到客戶端的一種傳輸機制。
OC object主要包括:
1、directory objects(文件夾) 2、file objects(文件) 3、stream objects.(流文件[不常用]) OC服務器將文件按MPEG-2生成TS流,通過廣播網絡傳輸到客戶端。
1.如何從ts流中找到OC數據
PAT中包含有多個program,每一個program即我們所說的一個應用
通過PAT可以找到對應的PMT,每一個PMT包含有一個program, 在一個program中含有多個es數據,每個es數據都有標示其類型的信息字段stream-type, 當這個字段為0x0b的時候,表示其為一個含有oc數據的es數據。 即:通過它的elementary-pid可以找到這個oc數據的packets。 oc數據都至少含有DSI,DII,DDB的信息,他們都是協(xié)議中提到的message。
在上表中,當table_id為0x3b時,表示該section為DSI或者DII的一個section 當table_id為0x3c的時,表示該section為DDB的一個section 在last_section_number之后除crc的數據之外,就是我們需要的message數據片斷。 每個message都有一個header。
DSI,DII的header為dsmcc Message Header。 DDB的header為dsmcc DownloadDate Header。 兩個header的格式基本相同。 DSI(DownloadServerInitiate message):其包含一個ServiceGatewayInfo,
它會提供一個對象的參考給ServiceGateway object。 DII(DownloadInfoIndication message)
DII中存儲著所有module的相關信息, 如module id,module size,module version,module info等。 DDB(DownloadDateBlock message)
DDB為module數據的一個片斷單位。多個DDB數據組成一個module。 Module中存儲著oc數據的內容,它是由多個DDB組成的
Module中存儲的數據類型為我們前面所說的oc數據的object, 即directory object、file object、stream object 這些object 都是由滿足biop的規(guī)范message數據段封裝,其包括 Biop directory message Biop file message Biop stream message 一個module中,可以存儲一個或者多個message。 目前我們將一個module的大小定為64KB;當遇到特大文件,module最大為256KB。 對于特大的文件,我們將會把它生成兩個message,放入兩個module中, message之間會用big file descriptor進行描述 。這時一個module只能存儲一個message。 form http://wqxdd./blog/
|
|
來自: 昵稱8442 > 《xd-library》