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