标准DSMCC_OC下载---概念篇

OC是一种特殊的TS流,该流中主要由一些文件和应用组成,按照国际OC打包方式,打包成OC流后,放在前端轮播,So,名字叫做DSMCC_OC.


语法官方定义:

•一个OC服务是由DSM-CC  U-U(user to user)对象集合而成的特殊服务,使得通过路径对象(directory objects)、文件对象(file objects)和流对象(stream objects)从服务器端向最终用户传递一组对象结构变得十分方便。路径和内容存储在服务器上,服务器反复地将涉及的对象通过对象集协议插入到DVB兼容的MPEG-2传送流中。接收端可以通过访问对象集中周期性的数据来恢复对象应用,而在本地实现对服务的模仿。这样对象集就提供了客户端一种访问服务器应用和内容的途径,使服务器和客户端之间或多或少的具备了一些交互的连接。
  1. DSM-CC  Digital Storage Media-Command & Control (数字存储媒体命令和控制)
  2. OC  Object Carousel(对象轮播)
  3. DSI  DownloadServerInitiate message of DSM-OC(下载服务初始化消息)
  4. DII  DownloadInfoIndication message of DSM-CC(下载信息指示消息)
  5. DDB  DownloadDataBlock message of DSM-CC(下载数据块消息)

DSMCC数据格式:标准DSMCC_OC下载---概念篇_第1张图片

左图为一层的数据轮播,右图为多级数据轮播

mi:ModuleInfoBytes

如图所示,数据被存在了Module中,每个Module被分成若干个block。Module信息主要是在DII中描述,每个module拥有唯一的moduleID。

数据关联:

        1.通过filter过滤得到table_id:0x02的pmt数据后,经解析得到Stream_type为0x0b的pmt_pid.根据此pid和对应的ComponentTag,可以直接解析DSI, DII信息。

        2. DSI:下载服务初始化消息,用于描述超群中的不同的群,也就意味这描述多层轮播中的根轮播。主要数据就是transaction_id,该字段指明根目录的DII信息所在。

        3. DII:下载信息指示消息,用于描述当前群中的所有的Module信息。主要数据就是moduleId,moduleSize,moduleVersion,moduleLink;//其中moduleLink可以表明该文件是否是一个大文件。

        4.ModuleInfoBytes:一个ModuleId所指向的Module数据,一个ModuleID有多个DDB组成,即多个Block组成。如实际的section的对应关系即为:一个ModuleID有多个section组成,一个section又由多个DDB组成。moduleSize在接收DDB信息的时候起着决定性的作用。

文件在OC流中的概念:

        一个文件最终存放在Module中,而一个Module可以存放一个或多个文件。当文件超过1MB的时候,将会被打包成为一个大文件,即有多个moduleId。

        小文件的下载只需要下载当前ModuleId所在的ModuleInfo,然后通过读取偏移量找到该文件在ModuleInfo中的位置,及大小,最好保存。

        大文件的下载,则需要从起始ModuleId开始,可以选择逐个下载,或者随机下载。最后通过moduleLink和moduleSize排列顺序,并保存。



你可能感兴趣的:(文件下载,大文件,oc,DII,DSMCC,DSI)