一种基于多业务TS流的ALP封装方法与流程

文档序号:14993708发布日期:2018-07-20 23:06阅读:225来源:国知局
本发明涉及视频节目传输领域,具体地,涉及一种基于多业务ts流的alp封装方法。
背景技术
:随着数字电视的快速发展,前端系统处理的业务逐渐增多,数字电视ip化已经成为一种趋势。美国高级电视业务顾问委员会(atsc)制定了新一代的标准,atsc3.0标准。在该标准中的atsclink-layerprotocol中定义了一种全新的数据包封装格式(以下简称alp封装),这种封装可以支持传统的ts数据流和通用的ip数据流视频业务。针对ts数据流进行封装时,alp协议采用了同步字节删除、包头删除和空包删除三种机制减小传输开销。其中包头删除针对视频业务传输过程中装载着视频流的ts包中存在大量的相似包头(除cc位不相同以外其他字段均相同)的情况,提出了在发送端将相似包头删除,而在接收端利用alp的报文头中的标志位将这些被删除了的包头还原的机制。但是在包含多个视频业务的ts数据流中,装载不同视频业务流的ts包的pid值不相同,而这些pid不相同的包混合在一起,使得alp封装器在封装时几乎不能采用alp包头删除机制,使得传输资源被浪费。目前没有发现同本发明类似技术的说明或报道,也尚未收集到国内外类似的资料。技术实现要素:针对现有技术alp封装中包头删除机制的缺陷,本发明的目的是提供一种当ts数据流中包含有多个视频业务时的基于多业务ts流的alp封装方法。该方法的实现如下:一种基于多业务ts流的alp封装方法,包括如下步骤:根据ts流数据包中的pid值,将ts流数据包中具有相同pid值的视频数据包放入同一队列,并对视频数据包进行分别排队封装。优选地,所述pid值为ts流数据包报头中的pid字段的值。优选地,具体包括如下子步骤:步骤s100,获取一个ts流数据包,进入步骤s101;步骤s101,判断所获取的ts流数据包的pid值是否为0;如果是,则进入步骤s102,如果不是,则进入步骤s103;步骤s102,读取所获取的ts流数据包中的内容,比对ts流数据包中节目号与节目映射表(pmt)的对应关系和当前节目列表(plt)中节目号与节目映射表的对应关系是否相同,如果是,则重新回到步骤s100,进行下一个循环,如果不是,则进入步骤s104;步骤s103,判断所获取的ts流数据包的pid值是否存在于节目列表中,如果是,则进入步骤s105,如果不是,则进入步骤s106;步骤s104,修改节目列表,使节目列表中节目号与所获取的ts流数据包中节目号一致,然后重新回到步骤s100,进行下一个循环;步骤s105,根据节目列表判断所获取的ts流数据包的pid值是属于节目映射表还是属于视频数据包,若属于节目映射表,则进入步骤s108,若属于视频数据包,则进入步骤s107;步骤s106,将所获取的ts流数据包单独进行alp封装,然后重新回到步骤s100,进入下一个循环;步骤s107,将当前视频数据包放入相应的队列排序,然后进入步骤s110;步骤s108,判断当前节目映射表中对应的视频数据是否与节目列表中的相同,如果是,则重新回到步骤s100,进入下一个循环,如果不是,则进入步骤s109;步骤s109,修改节目列表中当前节目号所对应的视频数据pid值,然后重新回到步骤s100,进入下一循环;步骤s110,判断当前队列是否已满;如果是,则进入步骤s111,如果不是,则检查当前队列时间片是否消耗完,若消耗完,则对视频数据进行alp封装,若未消耗完,则重新回到步骤s100,进入下一循环;步骤s111,对视频数据进行alp封装。优选地,所述步骤s102中,ts流数据包中节目号与节目映射表的对应关系和当前节目列表中节目号与节目映射表的对应关系为:将从节目映射表中获取的ts流数据包的pid值存储于节目列表中,并在节目列中存储为节目号、节目映射表pid值和视频数据包pid值一一对应的状态。优选地,所述队列的长度均为固定,并根据所在网络的mtu限制所确定。本发明提供的基于多业务ts流的alp封装方法,该方法应用于alp封装设备,该方法包括:在接收到ts流数据包的时候,根据ts流数据包的pid值的不同,将所收到的ts数据流中的视频数据包中具有相同pid值的数据包放入同一队列,具有不同pid值的数据包放入不同的队列中。每个队列的长度都是固定的,该队列长度根据所在网络的mtu(最大传输单元,maximumtransmissionunit)限制所确定。当某一队列装满时或某一队列的计时片段消耗完时,将该队列进行alp封装。对于装载着如节目特定信息(psi)、节目关联表(pat)、条件接收表(cat)、节目映射表(pmt)等的这些相对于视频信息较少的ts流数据包时,不将该ts流数据包置于队列中,而是单独封装成alp数据包发送。与现有技术相比,本发明具有如下有益效果:1、本发明提供的基于多业务ts流的alp封装方法,使得在alp封装承载着多视频业务的ts流时的封装效率大大提高。2、本发明提供的基于多业务ts流的alp封装方法,在不更改报头的基础上,提高alp封装效率。附图说明通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:图1是plt表生成及更新方法示意图。图2是alp封装方法示意图。图3是本发明基于多业务ts流的alp封装方法流程图。具体实施方式下面对本发明的实施例作详细说明:本实施例在以本发明技术方案为前提下进行实施,给出了详细的实施方式和具体的操作过程。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。实施例本实施例提供了一种基于多业务ts流的alp封装方法,该方法包括如下步骤:在进行alp数据包封装时,利用ts流数据包中pid字段值的不同,将ts流数据包中具有相同pid值的视频数据包放入同一队列,并对视频数据流进行分别排队封装。进一步地,所述pid字段为ts流数据包报头中的pid字段。如图3所示,本实施例提供了一种基于多业务ts流的alp封装方法,具体包括如下子步骤:步骤s100,获取一个ts流数据包,进入步骤s101;步骤s101,判断所获取的ts流数据包的pid值是否为0;如果是,则进入步骤s102,如果不是,则进入步骤s103;步骤s102,读取所获取的ts流数据包中的内容,比对ts流数据包中节目号与pmt表的对应关系和当前plt表中节目号与pmt表的对应关系是否相同,如果是,则重新回到步骤s100,进行下一个循环,如果不是,则进入步骤s104;步骤s103,判断所获取的ts流数据包的pid值是否存在于plt表中,如果是,则进入步骤s105,如果不是,则进入步骤s106;步骤s104,修改plt表,使plt表中节目号与所获取的ts流数据包中节目号一致,然后重新回到步骤s100,进行下一个循环;步骤s105,根据plt表判断所获取的ts流数据包的pid值是属于pmt表还是属于视频数据包,若属于pmt表,则进入步骤s108,若属于视频数据包,则进入步骤s107;步骤s106,将所获取的ts流数据包单独进行alp封装,然后重新回到步骤s100,进入下一个循环;步骤s107,将当前视频数据包放入相应的队列排序,然后进入步骤s110;步骤s108,判断当前pmt表中对应的视频数据是否与plt表中的相同,如果是,则重新回到步骤s100,进入下一个循环,如果不是,则进入步骤s109;步骤s109,修改plt表中当前节目号所对应的视频数据pid值,然后重新回到步骤s100,进入下一循环;步骤s110,判断当前队列是否已满;如果是,则进入步骤s111,如果不是,则检查当前队列时间片是否消耗完,若消耗完,则对视频数据进行alp封装,若未消耗完,则重新回到步骤s100,进入下一循环;步骤s111,对视频数据进行alp封装。进一步地,所述步骤s102中的对应关系为:将从节目映射表(pmt)中获取的ts流数据包的pid值存储于节目列表中(plt),并在节目列表(plt)中存储为节目号、pmt表pid值和视频数据包pid值一一对应的状态。进一步地,所述队列的长度均为固定,并根据所在网络的mtu限制所确定。以下详细描述本实施例的方案。如图1所示,在alp封装设备中获取ts流数据包时,从装载着节目信息的pat包(其pid号固定是00)中获取当前ts流数据包中包含的节目数量以及每个节目流的pmt表的pid值。根据所获得的所需pmt表的pid值找到相应的ts流数据包,读取其中内容,找到该路节目的视频信息所对应的pid值,并记录节目列表(plt)中。当建立了plt表以后,再获取到ts流数据包时就可以对照plt表将视频数据包与其他类型的数据包区分开来。当前传输流中承载着视频数据的ts流数据包的pid值全部应该在plt表中,同时plt表也在实时的更新,以应对当节目发生变化值随之带来的视频数据包pid值的变化。请参阅表1,该表给出了一个pat包的具体例子。读取表1,可以获取当前ts流数据包中包含3路节目,其序号分别为01、02、03,同时这三路节目的pmt表存在于pid值分别为21、22、23的ts流数据包中。参阅表3中步骤101、102、104生成plt表。并继续获取ts流数据包。表1节目序号对应pmt的pid值012002210322请参阅表2、3、4,这三个表给出了pid值为20、21、22的pmt表中的具体例子。这三个表格说明了三路节目中的ts流数据包的pid值分别为70、73、76,由这些信息可以生成如表5的plt表。由表5可知只要每次提取pid值为20、21、22、70、73、76的ts流数据包就可以了。提取到的20、21、22可以用于更新plt表中的视频数据包pid值。表2表3服务pid视频73音频74pcr75表4服务pid视频76音频77pcr78表5节目序号pmt表的pid视频节目pid012070022173032276请参阅表6,该表给出了一个输入的ts流数据包的实例。表6中给出了10个ts数据流,每个ts数据流中有多个不同pid值的ts流数据包。表6根据步骤s103,可以筛选出pid值为20、21、22、70、73、76的ts流数据包,其中pid值为20、21、22的ts流数据包用于更新plt表,pid值为70、73、76的ts流数据包分别装入三个队列,当队列装满后执行alp封装。在第1个ts流数据包中,执行步骤s100和步骤s101,读取到pid值为00的pat包,从中读出如表1所示的pmt表中的pid值列表,并将节目号和对应的pmt表中的pid值分别填入plt表中。执行步骤s103、步骤s105、步骤s108和步骤s109,读取出节目列表(plt)中ts流数据包的pid值70、73和76。循环执行步骤s100、步骤s101、步骤s103、步骤s105至步骤s111,将所获得的ts流数据包按照pid值分别封装成alp数据包。其封装后的alp数据包结果如表7。表7是否采用包头压缩包内pid第1个alp包否00/20/21/22第2个alp包否71第3个alp包否72第4个alp包否74/75/77/78第5个alp包是70/70/70/70/70/70/70第6个alp包是76/76/76/76/76/76/76第7个alp包是70/70/70/70/70/70/70第8个alp包是73/73/73/73/73/73/73第9个alp包是76/76/76/76/76/76/76第10个alp包是73/73/73/73/73/73/73第11个alp包是76/76/76第12个alp包是73/73/73/73第13个alp包是70/70/70以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围内。本实施例提供的基于多业务ts流的alp封装方法,应用于发送端alp封装设备中,在封装alp流数据包时,使用ts流数据包中的pid值,对不同ts流数据包的视频数据进行分别封装;本实施例中采用的pid值为该ts流数据包中ts报头中的pid字段的值。本实施例在不改变表报文封装头的基础上提高了多业务ts数据流的alp封装效率。以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变形或修改,这并不影响本发明的实质内容。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1