一种基于TS流获取节目码率的方法及系统与流程

文档序号:37230603发布日期:2024-03-05 15:41阅读:36来源:国知局
一种基于TS流获取节目码率的方法及系统与流程

本发明涉及节目码率获取,具体涉及一种基于ts流获取节目码率的方法及系统。


背景技术:

1、数字电视机顶盒接收到的是一段一段的码流,我们称之为ts(transport stream,传输流),每个ts流都携带一些信息,如:pat包、pmt包、多个音频包、多个视频包、多个pcr包、以及其他信息包psi等。其中pmt包中的pcr_pid表示pcr的pid,有的时候pcr的pid跟音频或者视频的pid相同,说明pcr会融进音视频的包,有的时候pcr是自己单独的包。

2、pcr通常每隔100ms至少被传输一次。pcr的数值所表示的是解码器在读完这个抽样值的最后那个字节时,解码器本地时钟所应处的状态。

3、通常计算节目码率的方法是:采样一段时间内的ts流包的数量,ts流包大小188,那么节目码率=ts流包数量×188/采样时间。

4、但上述的计算方法有一个非常大的问题,即采样的这段时间内,采样的ts流一定要稳定。“稳定”一词的具体含义为:比如采用天线传输的时候不被严重干扰;网络传输的时候不被网络波动干扰;还有不被设备或系统中的各种缓冲机制干扰采样数据量等等。

5、以网络传输音视频流进行说明,网络波动不算,从网卡到ts流的应用系统中间,全部都是缓冲区,比如网卡有缓冲区、tcp/ip协议栈有缓冲区、应用程序同样也有缓冲区。一旦在采样的时间段内,缓冲区累计了一些数据,或者一开始累计了一些数据,在采样的时候被读出来,都会影响在采样的时间段内的ts流包的数量,严重影响码率精度。


技术实现思路

1、为了克服现有技术的不足,本发明提供一种基于ts流获取节目码率的方法及系统,用于解决现有的码率获取方法由于抗干扰性差,获取到的码率精度不高的技术问题,从而达到提高码率获取过程的抗干扰性,得到精确码率的目的。

2、为解决上述问题,本发明所采用的技术方案如下:

3、一种基于ts流获取节目码率的方法,包括以下步骤:

4、通过调制复用阶段为每个节目添加作为解码器解码时的参考时钟的pcr包;

5、获取到指定的节目流,并从所述指定的节目流中得到与节目相关的所有ts流包;

6、对ts流包进行过滤,筛选出在调制复用阶段添加的pcr包,直至得到若干连续的pcr包;

7、获取所述若干连续的pcr包中每一pcr包的pcr值,并根据所述pcr值,判断过滤得到的若干连续的pcr包是否符合预设的间隔阈值和预设的抖动阈值;

8、均符合,则获取所述若干连续的pcr包的ts流包总个数,并获取所述若干连续的pcr包的pcr总间隔时间;

9、根据所述ts流包总个数和所述pcr总间隔时间,得到所述节目码率。

10、作为本发明优选的实施方式,在对ts流包进行过滤时,包括:

11、设置一过滤缓冲区,从所述所有ts流包中获取连续的一段ts流包;

12、将所述连续的一段ts流包放入所述过滤缓冲区中,获取ts流包规定的pcr包规则;

13、根据所述pcr包规则过滤所述连续的一段ts流包,并从中找到ts流包所携带的pcr包;

14、判断找到的pcr包的数量是否达到阈值,若否,则根据所述pcr包规则继续过滤所述连续的一段ts流包,直至找到的pcr包的数量达到阈值,即得到所述若干连续的pcr包。

15、作为本发明优选的实施方式,在判断找到的pcr包的数量是否达到阈值时,包括:

16、判断找到的pcr包的数量是否大于等于3,若是,则判定找到的pcr包的数量达到阈值。

17、作为本发明优选的实施方式,在获取所述若干连续的pcr包中每一pcr包的pcr值时,包括:

18、将所述pcr包由27mhz脉冲直接触发计数器生成扩展域,得到pcr包的扩展值;

19、将所述pcr包经300分频器分频成90khz脉冲送入一个33位计数器生成90khz基值,得到pcr包的基准值;

20、根据所述pcr包的扩展值和所述pcr包的基准值,得到pcr包的pcr值,如公式1所示:

21、pcr=(j*300+k)/27000 (1);

22、式中,pcr为所述pcr包的pcr值,j为所述pcr包的基准值,k为所述pcr包的扩展值。

23、作为本发明优选的实施方式,在判断是否符合预设的间隔阈值和预设的抖动阈值时,包括:

24、根据所述pcr值,判断所述若干连续的pcr包的最大间隔是否小于40ms;

25、根据所述pcr值,判断所述若干连续的pcr包的抖动是否小于±500ns;

26、当所述若干连续的pcr包的最大间隔小于40ms,且所述若干连续的pcr包的抖动小于500ns,则判定所述若干连续的pcr包符合预设的间隔阈值和预设的抖动阈值。

27、作为本发明优选的实施方式,当所述若干连续的pcr包的最大间隔大于等于40ms,和/或所述若干连续的pcr包的抖动大于等于500ns;

28、则判定所述若干连续的pcr包不符合预设的间隔阈值和/或预设的抖动阈值,将所述过滤缓冲区清空后,从所述所有ts流包中获取下一连续的一段ts流包,并将所述下一连续的一段ts流包放入所述过滤缓冲区中进行过滤,得到下一若干连续的pcr包。

29、作为本发明优选的实施方式,在获取所述若干连续的pcr包的ts流包总个数时,包括:

30、获取所述若干连续的pcr包中的第一个pcr包和最后一个pcr包;

31、基于所述第一个pcr包和所述最后一个pcr包,得到所述若干连续的pcr包的定位;

32、基于所述定位对ts流包进行统计,从而得到所述若干连续的pcr包的ts流包总个数。

33、作为本发明优选的实施方式,在获取所述若干连续的pcr包的pcr总间隔时间时,包括:

34、从所述若干连续的pcr包中每一pcr包的pcr值中,得到一最大pcr值;

35、从所述若干连续的pcr包中每一pcr包的pcr值中,得到一最小pcr值;

36、基于所述最大pcr值和所述最小pcr值,得到所述若干连续的pcr包的pcr总间隔时间,如公式2所示:

37、t=z-x (2);

38、式中,t为pcr总间隔时间,z为所述最大pcr值,x为所述最小pcr值;

39、在得到所述节目码率时,如公式3所示:

40、m=total_pcr_packet_num*188/total_interval_pcr_time (3);

41、式中,m为所述节目码率,total_pcr_packet_num为所述ts流包总个数,total_interval_pcr_time为所述pcr总间隔时间。

42、作为本发明优选的实施方式,在获取到指定的节目流时,包括:

43、判断节目流的来源;

44、若节目流的来源为机顶盒,则对盒端demod进行参数设置,通过设置的参数获取到所述指定的节目流;

45、若节目流的来源为网络应用,则通过内容分发系统或者播放地址获取到所述指定的节目流。

46、一种基于ts流获取节目码率的系统,包括:

47、pcr包添加单元:用于通过调制复用阶段为每个节目添加作为解码器解码时的参考时钟的pcr包;

48、ts流包获取单元:用于获取到指定的节目流,并从所述指定的节目流中得到与节目相关的所有ts流包;

49、过滤单元:用于对ts流包进行过滤,筛选出在调制复用阶段添加的pcr包,直至得到若干连续的pcr包;

50、阈值判断单元:用于获取所述若干连续的pcr包中每一pcr包的pcr值,并根据所述pcr值,判断过滤得到的若干连续的pcr包是否符合预设的间隔阈值和预设的抖动阈值;

51、码率获取单元:当过滤得到的若干连续的pcr包符合阈值要求时,用于获取所述若干连续的pcr包的ts流包总个数,以及获取所述若干连续的pcr包的pcr总间隔时间;根据所述ts流包总个数和所述pcr总间隔时间,得到所述节目码率。

52、相比现有技术,本发明的有益效果在于:

53、(1)本发明通过调制复用阶段为每个节目添加作为参考时钟的pcr包,作为采样时间,两个pcr包间隔中的ts流包的数量作为采样的ts流包数量。mpeg标准规定每个节目pcr的最大间隔小于40ms;pcr的抖动小于±500ns。本发明通过上述标准对采样的ts流包进行校验,判断采样的ts流包是否符合要求,从而排除ts流包在传输过程中的干扰。另外,pcr包不需要音视频编解码去解析,只需要在过滤ts流包时进行获取和解析。而且本发明所提供的方法不受背景技术所述的任何因素的干扰,并且本发明在得到若干连续的pcr包时的采样时间越长,所获取到的码率就越精确,所以一般会将采样时间适当拉长,但是本发明可以在100ms内完成非常精确的计算;

54、(2)本发明通过ts流中每个节目的pcr包作为采样基准时间,通过pcr包间隔的时间和pcr包间隔的ts流包数量来作为采样数据,从而既精确又快速(100ms内)的计算出节目码率;

55、(3)本发明所得到的节目码率不受传输过程中的任何因素干扰,非常精确;

56、(4)本发明获取码率的采样时间可以非常短,达到100ms级别,比传统采样动辄几秒甚至分钟级别快的多。

57、下面结合附图和具体实施方式对本发明作进一步详细说明。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1