如何从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的信息,他们都是协议中提到的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的规范message数据段封装,其包括
Biop directory message
Biop file message
Biop stream message
一个module中,可以存储一个或者多个message。
目前我们将一个module的大小定为64KB;当遇到特大文件,module最大为256KB。
对于特大的文件,我们将会把它生成两个message,放入两个module中,
message之间会用big file descriptor进行描述 。这时一个module只能存储一个message。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。