一种流媒体数据丢包率的计算方法及系统与流程

文档序号:15151683发布日期:2018-08-10 21:10阅读:525来源:国知局

本发明涉及流媒体领域,具体来讲涉及一种流媒体数据丢包率的计算方法及系统。



背景技术:

在互联网高速发展的今天,互联网传输的研究受到了广泛关注,其中,作为成衡量网络传输性能指标的丢包率是研究的热点之一,尤其是在互联网多媒体的应用方面,丢包率关系到了音视频播放,更是被当作衡量播放性能的重要指标。

在多媒体应用中,都是把媒体流进行ts(transportstream,传输流)包封装,然后使用udp(userdatagramprotocol,用户数据包协议)或者rtp(real-timetransprotprotocol,实时传输协议)进行封装之后再发送出去。由于udp和rtp都不是可靠传输模式,网络传输过程中不可避免的会存在数据包丢失等情况。所谓的丢包率(losstolerance或packetlossrate)就是指所丢失数据包数量占所发送数据组的比率。计算方法是:“[丢失的数据包数量/(收到的数据包数量+丢失的数据包数量)]×100%”。丢包率与数据包长度以及包发送频率相关,正常传输时网络丢包率应该控制在一定范围内。

在iptv(interactivepersonalitytv,交互式网络电视)系统中,如果流媒体数据采用带有rtp包头的方式进行数据传输,则终端可以通过获取rtp包头部中一个序列号字段,进行统计丢失的网络数据包和收到的网络数据包,通过丢失的网络数据包和收到的网络数据包来计算网络中数据的丢包率,进而判断iptv的网络状况。

但是在iptv系统中,如果流媒体数据中没有携带rtp包头进行数据传输,则此方法不可用。因此针对流媒体数据中没有携带rtp包头的情况,无法计算出网络中数据的丢包率。



技术实现要素:

针对现有技术中存在的缺陷,本发明的目的在于提供一种流媒体数据丢包率的计算方法及系统,可以在iptv系统中,流媒体数据中没有携带rtp包头进行数据传输的情况下,计算数据的丢包率。

为达到以上目的,本发明采取一种流媒体数据丢包率的计算方法,包括:客户端通过当前收到的pcr码、前一次收到的pcr码和第一次收到的pcr码三者的时间和字节数,计算出当前丢失的字节数;通过[丢失的字节数/(实际收到的字节数+丢失的字节数)]×100%计算,结果即为丢包率。

在上述技术方案的基础上,客户端对网络的数据包解析,记录第一个pcr码的时间值和解析到该pcr码的当前系统时间。

在上述技术方案的基础上,当客户端解析当前收到的pcr码时,根据该pcr码的时间值,计算与前一次收到pcr码的时间值的时间差t1,以及时间差t1内实际收到的字节数l1,通过所述字节数l1除以所述时间差t1,计算出当前实时码率。

在上述技术方案的基础上,客户端解析当前收到的pcr码,根据收到该pcr码的当前系统时间,计算该pcr码与所述第一次收到的pcr码的系统时间差t2,以及系统时间差t2内收到的字节数l2,l2即时间差t2内累计收到数据包的字节数。

在上述技术方案的基础上,通过所述当前收到的pcr码与第一次收到的pcr码的系统时间差t2乘以当前实时码率,得到当前理论上收到的字节数,再减去系统时间差t2内实际收到的字节数,得到所述时间差t2内丢失的字节数。

在上述技术方案的基础上,客户端与服务器端建立连接,接收所述服务器端下发的数据包,并将数据包解包成ts分包,所述pcr码存在于部分ts分包中。

本发明还提供一种流媒体数据丢包率的计算系统,包括:

检测模块,其用于检测客户端收到的网络数据包中是否含有pcr码;

数据处理模块,其用于对含有pcr码的数据包进行解析,从而获得pcr码的相关数据并记录;

计算模块,其用于根据获取到的pcr码的相关数据,计算丢包率。

在上述技术方案的基础上,所述数据处理模块包括解析单元和记录单元;

解析单元用于解析含有pcr码的数据包;

记录单元用于记录解析单元解析出的pcr码的相关数据。

在上述技术方案的基础上,所述pcr码的相关数据包括pcr码值、收到pcr码的当前系统时间和收到pcr码时累计收到的数据包字节数。

在上述技术方案的基础上,所述计算模块包括时间差计算单元和字节计算单元;

时间差计算单元,其用于计算当前pcr码的时间值与前一次收到pcr码的时间值的时间差t1,还用于计算当前pcr码与所述第一次收到pcr码的系统时间差t2;

字节计算单元,其用于计算时间差t1内实际收到的字节数l1,还用于计算所述时间差t2内实际收到的字节数l2,l2即时间差t2内累计收到数据包的字节数。

在上述技术方案的基础上,所述计算模块通过所述字节数l1除以所述时间差t1,计算出当前实时码率。

在上述技术方案的基础上,所述计算模块通过该pcr码与所述第一次收到的pcr码的系统时间差t2乘以当前实时码率,得到当前理论上收到的字节数;再减去时间差t2内实际收到的字节数l2,得到时间差t2内丢失的字节数。

本发明的有益效果在于:

由于在流媒体数据丢包率的计算中,丢失的网络数据包数量等于丢失的字节数除以数据包大小,收到的网络数据包数量等于实际收到的字节数除以数据包大小,因此在通过[丢失的数据包数量/(收到的数据包数量+丢失的数据包数量)]×100%来计算丢包率的时候,分子和分母的数据包大小相互抵消,即[丢失的字节数/(实际收到的字节数+丢失的字节数)]×100%,可以完全使用数据包的字节数来计算丢包率。

本发明可以在不修改网络传输协议的基础上,当传输流中不带rtp包头时,在客户端仅通过收到数据包的字节数就能计算出网络当前时间的丢包率,从而提供iptv播放质量的衡量指标,能够实时反映iptv机顶盒端的网络状况。

附图说明

图1为本发明第二实施例流媒体数据丢包率的计算方法流程图;

图2为本发明第三实施例流媒体数据丢包率的计算方法流程图;

图3为本发明第四实施例流媒体数据丢包率的计算系统示意图;

图4为本发明第五实施例流媒体数据丢包率的计算系统示意图;

图5为本发明第六实施例流媒体数据丢包率的计算系统示意图;

附图标记:

检测模块1,数据处理模块2,解析单元21,记录单元22,计算模块3,时间差计算单元31,字节计算单元32。

具体实施方式

以下结合附图及实施例对本发明作进一步详细说明。

本发明流媒体数据丢包率的计算方法,客户端通过当前收到的pcr(programclockreference,节目时钟参考)码、前一次收到的pcr码和第一次收到的pcr码三者的时间和字节数,计算出当前丢失的字节数;通过[丢失的字节数/(实际收到的字节数+丢失的字节数)]×100%,计算出丢包率。

第一实施例:

本发明流媒体数据丢包率的计算方法,用于iptv系统中,可以在流媒体数据中没有携带rtp包头的情况下使用。

首先,客户端与服务器端建立连接,服务器端开始下发数据包。客户端在接收到服务器端下发的数据包时,将网络的数据包解包成多个ts分包。客户端首次收到带有pcr码的ts分包时,对该ts分包进行解析,记录第一个pcr码的相关数据,相关数据包括该pcr码值、收到该pcr码的当前系统时间和收到该pcr码时累计收到的数据包字节数。pcr码为服务器端在打包数据流时注入到ts分包中的服务器当前时间,作为服务器端发流时间的参考。由于不是每个数据包都有pcr码,pcr规范的间隔是不大于100ms,100ms过程中,会有多个数据包进行传输,因此有的ts分包中存在pcr码,有的ts分包中不存在pcr码。如果ts分包中不存在pcr码,则不进行记录。

之后,客户端每次收到pcr码,都记录当前pcr码的码值、收到当前pcr码的系统时间和收到该pcr码时累计收到的数据包字节数,并根据当前收到的pcr码的时间值与前一次收到的pcr码的时间值的时间差t1、时间差t1内实际收到的字节数l1(l1即为时间差t1内累计收到数据包的字节数)、当前收到的pcr码与第一次收到的pcr码之间的系统时间差t2、以及系统时间差t2内实际收到的字节数l2(l2即为系统时间差t2内累计收到的数据包的字节数),计算出当前丢失的字节数。

然后通过[丢失的字节数/(实际收到的字节数+丢失的字节数)]×100%,计算出丢包率。

第二实施例:

如图1所示,本发明流媒体数据丢包率的计算方法,包括如下步骤:

s201.客户端与服务器端建立连接,服务器端开始下发数据包。客户端在接收到服务器端下发的数据包时,将网络的数据包解包成多个ts分包。

s202.客户端首次收到带有pcr码的ts分包时,对该ts分包进行解析,记录第一个pcr码的时间值和解析到该pcr码的系统时间。

s203.客户端解析到新的pcr码到来时,首先记录下当前pcr码值,根据当前pcr码的时间值,计算与前一次收到pcr码的时间值的时间差t1,以及时间差t1内实际收到的字节数l1(l1即为时间差t1内累计收到数据包的字节数),作为一个采样值,通过字节数l1除以时间差t1,计算出当前实时码率。

s204.客户端根据收到该pcr码的当前系统时间,计算该pcr码与所述第一次收到的pcr码的系统时间差t2,以及系统时间差t2内实际收到的字节数l2,字节数l2即时间差t2内累计收到的数据包的字节数。

s205.通过当前收到的pcr码与第一次收到的pcr码的系统时间差t2乘以当前实时码率,得到当前理论上收到的字节数。理论上收到的字节数,再减去系统时间差t2内实际收到的字节数l2,得到丢失的字节数。

s206.根据[丢失的字节数/(实际收到的字节数+丢失的字节数)]×100%,计算出的结果即为丢包率。

第三实施例:

如图2所示,本发明流媒体数据丢包率的计算方法,包括如下步骤:

s301.客户端与服务器端建立连接,服务器端开始下发数据包。客户端在接收到服务器端下发的数据包时,将网络的数据包解包成多个ts分包。

s302.客户端首次收到带有pcr码的ts分包时,对该ts分包进行解析,记录第一个pcr码的时间值和解析到该pcr码的系统时间。

s303.客户端解析到新的pcr码到来时,首先记录下当前pcr码值,根据当前pcr码的时间值,计算与前一次收到pcr码的时间值的时间差t1,以及时间差t1内实际收到的字节数l1(l1即为时间差t1内累计收到数据包的字节数),作为一个采样值,通过字节数l1除以时间差t1,计算出当前实时码率。

同时,客户端根据收到该pcr码的当前系统时间,计算该pcr码与所述第一次收到的pcr码的系统时间差t2,以及系统时间差t2内实际收到的字节数l2,字节数l2即时间差t2内累计收到的数据包的字节数。

s304.通过当前收到的pcr码与第一次收到的pcr码的系统时间差t2乘以当前实时码率,得到当前理论上收到的字节数。理论上收到的字节数,再减去系统时间差t2内实际收到的字节数l2,得到丢失的字节数。

s305.根据[丢失的字节数/(实际收到的字节数+丢失的字节数)]×100%,计算出的结果即为当前时间的丢包率。

本实施例与第二实施例的步骤基本相同,但是本实施例中,实时码率、系统时间差t2和时间差t2内实际收到的字节数l2的计算是同时进行的,在第二实施例中,是先计算实时码率,然后再计算系统时间差t2和时间差t2内实际收到的字节数l2。

第四实施例:

本发明流媒体数据丢包率的计算系统,如图3所示,包括检测模块1,数据处理模块2和计算模块3。

检测模块1用于检测客户端收到的网络数据包中是否含有pcr码。客户端与服务器端建立连接,服务器端开始下发数据包,客户端接收到下发的数据包,解包成ts分包。检测模块1是对ts分包进行检查,查看是否包含pcr码。

数据处理模块2用于对含有pcr码的数据包进行解析,本实施例中指ts分包进行解析,获得pcr码的相关数据,并对相关数据进行记录。pcr码的相关数据包括pcr码值、收到pcr码的当前系统时间和收到pcr码时累计收到的数据包字节数。

计算模块3用于根据获取到的pcr码的相关数据,计算丢包率。具体的,根据当前pcr码的时间值,计算与前一次收到pcr码的时间值的时间差t1,以及时间差t1内实际收到的字节数l1(l1即为时间差t1内累计收到数据包的字节数),通过字节数l1除以时间差t1,计算出当前的实时码率。

计算模块3根据收到该pcr码的当前系统时间,计算该pcr码与所述第一次收到的pcr码的系统时间差t2,以及系统时间差t2内收到的字节数l2,l2即时间差t2内累计收到数据包的字节数。

通过当前收到的pcr码与第一次收到的pcr码的时间差t2乘以当前实时码率,得到当前理论上收到的字节数。再用理论上收到的字节数再减去系统时间差t2内实际收到的字节数,得到丢失的字节数。

根据[丢失的字节数/(实际收到的字节数+丢失的字节数)]×100%计算,得出的结果即为丢包率。

第五实施例:

如图4所示,本实施例中流媒体数据丢包率的计算系统包括检测模块1,数据处理模块2和计算模块3,其中,数据处理模块2包括解析单元21和记录单元22。

检测模块1用于检测客户端收到的网络数据包中是否含有pcr码。客户端与服务器端建立连接,服务器端开始下发数据包,客户端接收到下发的数据包,解包成ts分包。检测模块1是对ts分包进行检查,查看是否包含pcr码。

数据处理模块2中,解析单元21用于解析ts包,得到pcr码的相关数据。记录单元22用于记录解析单元21解析出的pcr码相关数据。pcr码的相关数据包括pcr码值、收到pcr码的当前系统时间和收到pcr码时累计收到的数据包字节数,这些均被记录单元22所记录。

计算模块3用于根据获取到的pcr码的相关数据,计算丢包率。

第六实施例:

如图5所示,本实施例中流媒体数据丢包率的计算系统包括检测模块1,数据处理模块2和计算模块3。其中,数据处理模块2包括解析单元21和记录单元22;计算模块3包括时间差计算单元31,字节计算单元32。

检测模块1用于检测客户端收到的网络数据包中是否含有pcr码。客户端与服务器端建立连接,服务器端开始下发数据包,客户端接收到下发的数据包,解包成ts分包。检测模块1是对ts分包进行检查,查看是否包含pcr码。

解析单元21用于解析ts包,得到pcr码的相关数据。记录单元22用于记录解析单元21解析出的pcr码相关数据。pcr码的相关数据包括pcr码值、收到pcr码的当前系统时间和收到pcr码时累计收到的数据包字节数。记录单元22记录每一次收到pcr码的码值、系统时间和数据包的字节数。

时间差计算单元31,用于根据当前pcr码的时间值,计算与前一次收到pcr码的时间值的时间差t1;时间差计算单元31还用于根据收到该pcr码的当前系统时间,计算该pcr码与所述第一次收到的pcr码的系统时间差t2。字节计算单元32用于计算时间差t1内实际收到的字节数l1,还用于计算系统时间差t2内收到的字节数l2。

计算模块3根据通过字节数l1除以时间差t1,计算出当前实时码率。再通过:理论收到字节数=实时码率×t2,得到理论收到字节数,丢失字节数=理论收到字节数-实际收到字节数。最后,根据[丢失的字节数/(实际收到的字节数+丢失的字节数)]×100%进行计算,得到的结果就是丢包率。

本发明可以在传输流中不带rtp包头时,完全使用数据包的字节数来计算丢包率,从而提供iptv播放质量的衡量指标,能够实时反映iptv机顶盒端的网络状况。

本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。

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