一种构建多节目ts流时使各路节目码流均匀分布的方法

文档序号:7812263阅读:311来源:国知局
一种构建多节目ts流时使各路节目码流均匀分布的方法
【专利摘要】本发明涉及一种构建多节目TS流时使各路节目码流均匀分布的方法,通过在进行一次TS包的发送时,为需要发送的N路音视频数据包分配N个内存块,且每个内存块中存放表信息包和整数个TS包。并在发送时刻统计N个内存块中TS包总数,计算各个内存块中TS包数量占TS包总数的百分比,并以此为每一个内存块分配相互连续的序号范围;产生一个取值范围小于TS包总数的均匀分布随机数;读取产生的随机数所落在内存块序号范围内的相应内存块中的TS包并发送。重复产生均匀分布随机数,直至发送完所有TS包。从而避免某路节目产生突发的大量数据发送,提高播出的稳定性,减轻有线电视接收端的音视频数据缓存压力。
【专利说明】一种构建多节目TS流时使各路节目码流均匀分布的方法

【技术领域】
[0001]本发明属于有线电视TS流播出【技术领域】,具体涉及一种构建多节目TS流时使各路节目码流均匀分布的方法。

【背景技术】
[0002]通常有线电视TS流中都会承载多路节目,然而各路节目的码流速率是不一样的,作为有线电视播出端,应该使各路节目的数据较为均匀的分布在播出的TS流中,而避免某路节目突发的发送大量数据,这样可以提高播出的稳定性,减轻有线电视接收端的音视频数据缓存压力。但是目前还未有能够使各路节目的数据较为均匀的分布在播出的TS流中的方法。


【发明内容】

[0003]本发明的目的在于克服上述现有技术中存在的缺点,提供一种构建多节目TS流时使各路节目码流均匀分布的方法,具有稳定性高,有线电视接收端的音视频数据缓存压力小的优点。
[0004]为实现上述目的,本发明采用以下技术方案:包括以下步骤:
[0005]I)为需要发送的N路音视频数据包分配N个内存块,且每个内存块中存放表信息包和整数个TS包;
[0006]2)发送TS包,并在发送时刻统计N个内存块中TS包总数,计算各个内存块中TS包数量占TS包总数的百分比,并依次为每一个内存块分配相互连续的序号范围;
[0007]3)为每个内存块分配一个取值范围小于TS包总数的均匀分布随机数;
[0008]4)读取步骤3)中产生的随机数所落在内存块序号范围内的相应内存块中的TS包;
[0009]5)发送步骤4)读取到的TS包,之后反复执行步骤3)和步骤4),直到发送完所有TS包;
[0010]6)回到步骤2),进行下一次N个内存块中TS包的发送,如此反复,直至读取完所有TS包。
[0011]所述步骤I)中为N路音视频数据包分配N块内存块的方式为:将前端构建节目的TS包先存入其所属内存空间,当后端需要取出该路节目的TS包时也是从该内存空间读出,其写入读出的原则符合先入先出的原则,且内存空间的大小能够保证任何一路音视频数据包的TS包在写入内存空间时均不会溢出。
[0012]所述步骤2)中N个内存块中TS包总数为1000,总数不够1000,则将空包内存块中TS包数设为缺失的包数,并在空包内存块中补足该数目的空包,使得TS包总数为1000。
[0013]所述步骤2)中为各个音视频数据包内存块分配一个连续序号范围的具体方法为:生成的连续序号的取值范围与随机数的取值范围相同,从而保证任何一个生成的随机数都能够与一路节目的序号相同;且为任意一路节目分配的序号数量占序号总数量的百分比等于该路节目当前内存空间中已有TS包数量占当前待发送的总TS包数量的百分比。
[0014]所述步骤3)中在要发送TS包的时刻产生一个均匀分布随机数的方法为:在一个数组中按递增顺序存放从I到N的自然数1,2,3,…,N, N为TS包总数,利用MicrosoftVisual Stud1中的随机数生成函数rand生成一个范围从I到N的随机数xl,取出这个数组中第xl个数作为所要产生的均匀分布随机数;从数组中删除这个数,剩下N-1个自然数,第2次产生均匀分布随机数时则用rand生成一个范围从I到N-1的随机数x2,取出这个数组中第x2个数作为所要产生的均匀分布随机数;以此类推直到取出数组中全部N个自然数。
[0015]所述步骤4)中读取步骤3)中产生的随机数所落在内存块序号范围内的相应内存块中的TS包的具体方法为:从所有内存块中选取具有与当前生成的随机数相等序号的内存块,读取随机数相等序号的内存块中的一个TS包,作为待发送的TS包。
[0016]本发明具有以下的有益效果:相比较现有技术,本发明通过在进行一次TS包的发送时,为需要发送的N路音视频数据包分配N个内存块,且每个内存块中存放表信息包和整数个TS包。并在发送时刻统计N个内存块中TS包总数,计算各个内存块中TS包数量占TS包总数的百分比,并以此为每一个内存块分配相互连续的序号范围;产生一个取值范围小于TS包总数的均匀分布随机数;读取产生的随机数所落在内存块序号范围内的相应内存块中的TS包并发送。重复产生均匀分布随机数,直至发送完所有TS包。再重复进行下一次TS包的发送。能够使各路音视频数据包的数据较为均匀的分布在播出的TS流中,从而避免某路节目产生突发的大量数据发送,这样能够提高播出的稳定性,减轻有线电视接收端的音视频数据缓存压力。传统的轮询各路音视频数据包进行发送的方法,操作较为简单,但是容易导致码流高的音视频数据包长时间占有发送权,使得码流低的音视频数据包发送TS包时呈现突发性,即在码流高的音视频数据包发送TS包期间没有TS包发送,在码流高的音视频数据包发送完TS包后又进行一段时间的连续发送,这样会加大接收端的音视频数据缓存压力。本发明所述方法使各路音视频数据包在每一小段时间间隔内都有发送TS包的机会,这一小段时间内各路音视频数据包所能发送的TS包数目取决于其TS包数目占TS包总数的百分比,码流需求高的音视频数据包会分配到更多的发送机会,但码流需求低的音视频数据包也会得到发送的机会。各路音视频数据包所发送的TS包之间的间隔不会有很大的波动。本发明使得各路音视频数据包的发送码流是均匀的,从而具有能够使有线电视接收端的音视频数据缓存压力小。

【专利附图】

【附图说明】
[0017]图1是本发明方法的示意图。

【具体实施方式】
[0018]下面结合附图,对本发明作进一步详细说明。
[0019]参见图1,本发明包括以下步骤:
[0020]I)为需要发送的N路音视频数据包分配N个内存块,且每个内存块中存放表信息包和整数个TS包;为N路音视频数据包分配N块内存块的方式为:将前端构建节目的TS包先存入其所属内存空间,当后端需要取出该路节目的TS包时也是从该内存空间读出,其写入读出的原则符合先入先出的原则,且内存空间的大小能够保证任何一路音视频数据包的TS包在写入内存空间时均不会溢出;
[0021]2)发送TS包,并在发送时刻统计N个内存块中TS包总数,计算各个内存块中TS包数量占TS包总数的百分比,并依次为每一个内存块分配相互连续的序号范围;N个内存块中TS包总数为1000,总数不够1000,则将空包内存块中TS包数设为缺失的包数,并在空包内存块中补足该数目的空包,使得TS包总数为1000 ;
[0022]3)为每个内存块分配一个取值范围小于TS包总数的均匀分布随机数;在要发送TS包的时刻产生一个均匀分布随机数的方法为:在一个数组中按递增顺序存放从I到N的自然数1,2,3,..., N, N为TS包总数,利用Microsoft Visual Stud1中的随机数生成函数rand生成一个范围从I到N的随机数xl,取出这个数组中第xl个数作为所要产生的均匀分布随机数;从数组中删除这个数,剩下N-1个自然数,第2次产生均匀分布随机数时则用rand生成一个范围从I到N-1的随机数x2,取出这个数组中第x2个数作为所要产生的均匀分布随机数;以此类推直到取出数组中全部N个自然数;
[0023]4)读取步骤3)中产生的随机数所落在内存块序号范围内的相应内存块中的TS包;产生的随机数所落在内存块序号范围内的相应内存块中的TS包的具体方法为:从所有内存块中选取具有与当前生成的随机数相等序号的内存块,读取随机数相等序号的内存块中的一个TS包,作为待发送的TS包;
[0024]5)发送步骤4)读取到的TS包,之后反复执行步骤3)和步骤4),直到发送完所有TS包;
[0025]6)回到步骤2),进行下一次N个内存块中TS包的发送,如此反复,直至读取完所有TS包。
[0026]TS: (Transport Stream,传输流)。
[0027]步骤4)中的随机数是有限整数,且是均匀分布随机数,也就是该随机数会遍历其取值范围中的所有数值。根据节目的数量和用户所需要的码流均匀分布的控制精度来设定这个随机数的取值范围,I?1000的取值范围大概对应TS流中40ms的时间长度。
[0028]为音视频数据包内存块分配一串连续的序号包括:
[0029]生成的连续的序号的的取值范围应该与随机数的取值范围完全一致,以保证任何一个生成的随机数都会与某路音视频数据包内存块的序号相同。为某路音视频数据包分配的序号数量占序号总数量的百分比应该等于该路音视频数据包内存块中TS包数量占当前待发送的总TS包数量的百分比。比如随机数取值范围为I到1000时,第I路音视频数据包内存块中TS包数量占待发送TS包总数量1000的50%,则为之分配I?500,第2路节目当前待发送TS包数量占待发送TS包总数量1000的20 %,则为之分配501?700。若TS包总数不够1000,则将空包内存块中TS包数设为缺失的包数,并在空包内存块中补足该数目的空包,使得TS包总数为1000。
[0030]本发明的工作过程为:
[0031]I)为欲发送的N路音视频数据包分配N个内存块,每个内存块可存放整数个TS包,欲发送的各路节目的音视频TS包及表信息包写入各自音视频数据包内存块;
[0032]2)发送时刻,统计N个内存块中TS包总数(若总数不够1000,则将空包内存块中TS包数设为缺失的包数,并在空包内存块中补足该数目的空包,使得TS包总数为1000),计算各个内存块中TS包数量占TS包总数1000的百分比,并以此为之分配一个连续序号范围,比如第I个内存块TS包数量为50%,则为之分配序号空间I?500,第2个内存块TS包数量为20%,则为之分配序号空间501?700 ;
[0033]3)产生一个取值范围为I?1000的均匀分布随机数;
[0034]4)随机数落在哪个内存块序号范围内,则在该内存块中读取一个TS包;
[0035]5)发送读取到的TS包,反复执行3、4步,直到发送完1000个TS包;
[0036]6)回到第2步,进行下一次1000个TS包的发送,如此反复,直至传输完成。
【权利要求】
1.一种构建多节目TS流时使各路节目码流均匀分布的方法,其特征在于:包括以下步骤: 1)为需要发送的N路音视频数据包分配N个内存块,且每个内存块中存放表信息包和整数个TS包; 2)发送TS包,并在发送时刻统计N个内存块中TS包总数,计算各个内存块中TS包数量占TS包总数的百分比,并依次为每一个内存块分配相互连续的序号范围; 3)为每个内存块分配一个取值范围小于TS包总数的均勻分布随机数; 4)读取步骤3)中产生的随机数所落在内存块序号范围内的相应内存块中的TS包; 5)发送步骤4)读取到的TS包,之后反复执行步骤3)和步骤4),直到发送完所有TS包; 6)回到步骤2),进行下一次N个内存块中TS包的发送,如此反复,直至读取完所有TS包。
2.根据权利要求1所述的构建多节目TS流时使各路节目码流均匀分布的方法,其特征在于,所述步骤I)中为N路音视频数据包分配N块内存块的方式为:将前端构建节目的TS包先存入其所属内存空间,当后端需要取出该路节目的TS包时也是从该内存空间读出,其写入读出的原则符合先入先出的原则,且内存空间的大小能够保证任何一路音视频数据包的TS包在写入内存空间时均不会溢出。
3.根据权利要求1所述的构建多节目TS流时使各路节目码流均匀分布的方法,其特征在于,所述步骤2)中N个内存块中TS包总数为1000,总数不够1000,则将空包内存块中TS包数设为缺失的包数,并在空包内存块中补足该数目的空包,使得TS包总数为1000。
4.根据权利要求1所述的构建多节目TS流时使各路节目码流均匀分布的方法,其特征在于,所述步骤2)中为各个音视频数据包内存块分配一个连续序号范围的具体方法为:生成的连续序号的取值范围与随机数的取值范围相同,从而保证任何一个生成的随机数都能够与一路节目的序号相同;且为任意一路节目分配的序号数量占序号总数量的百分比等于该路节目当前内存空间中已有TS包数量占当前待发送的总TS包数量的百分比。
5.根据权利要求1所述的构建多节目TS流时使各路节目码流均匀分布的方法,其特征在于,所述步骤3)中在要发送TS包的时刻产生一个均匀分布随机数的方法为:在一个数组中按递增顺序存放从I到N的自然数1,2,3,…,N, N为TS包总数,利用MicrosoftVisual Stud1中的随机数生成函数rand生成一个范围从I到N的随机数xl,取出这个数组中第xl个数作为所要产生的均匀分布随机数;从数组中删除这个数,剩下N-1个自然数,第2次产生均匀分布随机数时则用rand生成一个范围从I到N-1的随机数x2,取出这个数组中第x2个数作为所要产生的均匀分布随机数;以此类推直到取出数组中全部N个自然数。
6.根据权利要求1所述的构建多节目TS流时使各路节目码流均匀分布的方法,其特征在于,所述步骤4)中读取步骤3)中产生的随机数所落在内存块序号范围内的相应内存块中的TS包的具体方法为:从所有内存块中选取具有与当前生成的随机数相等序号的内存块,读取随机数相等序号的内存块中的一个TS包,作为待发送的TS包。
【文档编号】H04N21/238GK104185035SQ201410421672
【公开日】2014年12月3日 申请日期:2014年8月25日 优先权日:2014年8月25日
【发明者】张翠翠, 沈雪峰, 佘文帆, 陈伟, 曹峻, 符均 申请人:西安交通大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1