一种h.264视频文件的丢包检测方法

文档序号:7741614阅读:230来源:国知局

专利名称::一种h.264视频文件的丢包检测方法
技术领域
:本发明属于网络通信领域,涉及一种H.264视频文件的丢包检测方法。
背景技术
:在视频传输过程中,一旦发生丢包将降低用户对视频的满意程度,丢包决定了用户对视频的体验质量,因此准确地测量在网络传输过程中发生的丢包具有重要的研究和现实意义。这里的丢包测量指的是测量视频包在网络传输过程中丢失的情况。现有的丢包测量工具主要有Ping、Zing、Badabing等。众所周知,Windows自带的Ping工具使用ICMP,统计发往指定地点反馈数据包的丢失数量来确定丢包率的。但是发送过程中,一旦遇到防火墙屏蔽ICMP,或者ICMP包在返回途中丢失,均会被误认为丢包。华为公司提出的使用定界包测量的方法通过在接收端统计收到的包总数,并与发送端发送定界包对比来确定丢包数量。虽然定界包的方法可以克服ICMP包的一些缺陷,但是测试流的丢包率与链路的丢包存在一定误差。Badabing分析各种链路丢包测量方法后,提出包列的方式发送探测流,并依概率发送,经理论及实验证明该方法对于测量链路丢包效果较好。现有的测量工具主要基于以下假设测量流的丢包情况反映的是链路的丢包情况。然而链路的丢包情况却不一定反映具体某个应用的丢包情况;因此,不能使用链路丢包测量方法来测量具体视频应用丢包。此外,由于IP链路丢包的测量采用的是主动测量,会给实际网络带来较大入侵度,造成网络拥塞。
发明内容本发明所要解决的技术问题是提供一种准确度高、入侵度低、可实时测量、与传输协议无关的H.264视频文件的丢包检测方法。为解决上述技术问题,本发明采用如下技术方案。一种H.264视频文件的丢包检测方法包括以下步骤步骤一,所述H.264视频文件由若干个视频序列构成,每个所述视频序列均包含有若干个I、P、B帧;利用用户数据域在视频序列中插入测量信息;步骤二,接收端通过所述测量信息获取传输H.264视频文件的数据包载荷及各帧大小;步骤三,接收结束后,依据步骤二所得结果获得传输H.264视频文件的数据包总数,然后同接收端收到的数据包数量比较,得出丢包率。作为本发明的一种优选方案,所述方法的进一步详细步骤为步骤1,所述测量信息的插入位置分为两类1)在第一个视频序列参数集之前插入H.264视频起始标记,用以标识视频传输开始;2)在每个帧尾的用户数据域插入本次测量标记及各帧的帧长度、帧序号,用以统计各帧对应的数据包数;步骤1.5,所述视频序列打包成数据包开始网络传输,接收端开始接收;步骤2,接收端通过检测数据包中是否含有所述本次测量标记来判断数据包是否为传输本次测量的H.264视频文件的数据包,若是则检测传输本次测量的H.264视频文件的第一个数据包,获得数据包中非视频数据净荷部分的长度值,进而得出视频载荷值;同时记录下所述第一个数据包的五元组信息,统计值加一;若不是则重复步骤2;步骤3,判断接收是否结束,若未结束则通过五元组信息判断接收到的数据包是否属于传输本次测量的H.264视频文件的数据包,若是则统计值加一,若否则循环步骤3;若接收结束则跳出步骤3,执行步骤3.5;步骤3.5,从每个帧对应的用户数据域中提取每帧长度,得出每个帧的分包个数,求和得到传输整个H.264视频文件发送的数据包总数,所述数据包总数与统计值的最终值之差即为丢包数,所述丢包数与所述数据包总数之比即为丢包率。作为本发明的另一种优选方案,所述五元组信息为源IP地址,目的IP地址,源端口,目的端口,协议类型。作为本发明的再一种优选方案,所述每个帧尾的用户数据域除插入有自身帧信息外还插入有冗余帧信息。作为本发明的再一种优选方案,所述I帧尾的用户数据域插入有I帧自身帧信息和I帧冗余帧信息,所述I帧冗余帧信息包括P帧自身帧信息和B帧自身帧信息;所述P帧尾的用户数据域插入有P帧自身帧信息和P帧冗余帧信息,所述P帧冗余帧信息包括I帧自身帧信息和B帧自身帧信息;所述B帧尾的用户数据域插入有B帧自身帧信息和B帧冗余帧信息,所述B帧冗余帧信息包括P帧自身帧信息和I帧自身帧信息。作为本发明的再一种优选方案,所述非视频数据净荷部分的长度值记为headerlength,所述视步页载荷值记为vedio—payload,且video—payload=MTU_header_length,MTU表示网络上传送的最大数据包,单位是字节,MTU取值为1450。作为本发明的再一种优选方案,所述每个帧的分包个数为Pkt^umi<formula>formulaseeoriginaldocumentpage5</formula>其中,η表示帧的总数,framejengthi表示第i个帧的长度,video_payload为所述视频载荷值。对Pkt^umi求和得到传输本次测量的H.264视频文件所需要的数据包总数,所述统计值的最终值为Y,丢包率pktloss则为<formula>formulaseeoriginaldocumentpage5</formula>本发明的有益效果在于它将测量有效信息写入userdata域中,在较少的附加信息情况下准确检测出H.264视频的丢包情况;本发明的另一有益效果在于它不受流媒体传输协议限制,更因嵌入在视频内部的冗余数据保证了测量值的准确性,与传统的丢包测量方法相比引入的测量负载最小。图1为处理后的H.264视频文件结构示意图;图2为userunregisteredSEI的结构示意图(第一个视频序列参数集之前);图3为userunregisteredSEI的结构示意图(视频帧之后);图4为网络实验拓扑图;图5为流媒体数据包结构(以RTP为例);图6为测量结果对比图;图7为H.264视频文件丢包检测方法流程图。具体实施例方式本发明公开了一种H.264视频文件的丢包检测方法,该方法主要包括以下步骤步骤一,利用用户数据域(userdata)在H.264视频序列参数集之前及I、P、B帧末尾加入测量信息;步骤二,接收端通过已定义的测量信息获取视频文件传输过程中的数据包载荷及各帧大小;步骤三,依据步骤二所得结果,计算视频传输总的发包数量,同接收端收到的数据包数量比较,计算视频传输丢包率。本发明将测量信息写入用户数据域中,可准确检测出H.264视频的丢包情况。下面结合附图对本发明的具体实施方式作进一步详细说明。实施例一本实施例提供一种H.264视频文件的丢包检测方法,该方法包括以下步骤步骤一,所述H.264视频文件由若干个视频序列构成,每个所述视频序列均包含有若干个I、P、B帧;利用用户数据域在视频序列中插入测量信息;步骤二,接收端通过所述测量信息获取传输H.264视频文件的数据包载荷及各帧大小;步骤三,接收结束后,依据步骤二所得结果获得传输H.264视频文件的数据包总数,然后同接收端收到的数据包数量比较,得出丢包率。所述方法的进一步详细步骤为步骤1,所述测量信息的插入位置分为两类1)在第一个视频序列参数集之前插入H.264视频起始标记,用以标识视频传输开始;2)在每个帧尾的用户数据域插入本次测量标记及各帧的帧长度、帧序号,用以统计各帧对应的数据包数;步骤1.5,所述视频序列打包成数据包开始网络传输,接收端开始接收;步骤2,接收端通过检测数据包中是否含有所述本次测量标记来判断数据包是否为传输本次测量的H.264视频文件的数据包,若是则检测传输本次测量的H.264视频文件的第一个数据包,获得数据包中非视频数据净荷部分的长度值,进而得出视频载荷值;同时记录下所述第一个数据包的五元组信息,统计值加一;若不是则重复步骤2;步骤3,判断接收是否结束,若未结束则通过五元组信息判断接收到的数据包是否属于传输本次测量的H.264视频文件的数据包,若是则统计值加一,若否则循环步骤3;若接收结束则跳出步骤3,执行步骤3.5;步骤3.5,从每个帧对应的用户数据域中提取每帧长度,得出每个帧的分包个数,求和得到传输整个H.264视频文件发送的数据包总数,所述数据包总数与统计值的最终值之差即为丢包数,所述丢包数与所述数据包总数之比即为丢包率。所述五元组信息为源IP地址,目的IP地址,源端口,目的端口,协议类型。所述每个帧尾的用户数据域除插入有自身帧信息外还插入有冗余帧信息。所述I帧尾的用户数据域插入有I帧自身帧信息和I帧冗余帧信息,所述I帧冗余帧信息包括P帧自身帧信息和B帧自身帧信息;所述P帧尾的用户数据域插入有P帧自身帧信息和P帧冗余帧信息,所述P帧冗余帧信息包括I帧自身帧信息和B帧自身帧信息;所述B帧尾的用户数据域插入有B帧自身帧信息和B帧冗余帧信息,所述B帧冗余帧信息包括P帧自身帧信息和I帧自身帧fn息ο所述非视频数据净荷部分的长度值记为headerjength,所述视频载荷值记为video_payload,且video_payload=MTU_header_length,MTU表示网络上传送的最大数据包,单位是字节,MTU取值为1450。所述每个帧的分包个数为Pktjumi<formula>formulaseeoriginaldocumentpage7</formula>其中,η表示帧的总数,framejengthi表示第i个帧的长度,video_payload为所述视频载荷值。对Pkt^umi求和得到传输本次测量的H.264视频文件所需要的数据包总数,所述统计值的最终值为Y,丢包率pktloss则为<formula>formulaseeoriginaldocumentpage7</formula>本发明将测量有效信息写入userdata域中,在较少的附加信息情况下准确检测出H.264视频的丢包情况,不受流媒体传输协议限制,更因嵌入在视频内部的冗余数据保证了测量值的准确性,与传统的丢包测量方法相比引入的测量负载最小。实施例二本实施例提供一种H.264视频文件的丢包检测方法,该方法的流程图如图1所示,包括以下步骤步骤A,获取H.264视频文件,所述H.264视频文件由若干个视频序列构成,每个视频序列均包含有若干个I、P、B帧;在视频序列的userdata域插入数据插入位置如图1所示;插入位置又可分为两类1)在第一个视频序列参数集之前插入H.264视频起始标记,如图2所示,其作用是标记视频传输开始,在测量中提取视频传输的五元组信息,计算传输包载荷量;2)在每个帧尾加入本次测量标记及各帧的帧长度、帧序号,如图3所示,其作用是统计各帧对应的数据包数;步骤B、所述视频序列打包成数据包开始网络传输,接收端开始接收,传输过程如图4所示;步骤C、接收端通过检查数据包中是否含有符合图2所示的结构来检测视频流的第一个数据包,计算数据包中非视频数据净荷部分的长度值(即图5中前四部分的长度),记为header_length,进而计算出视频载荷值(MTU_header_length,这里的MTU值为1450),记为vedi0_payl0ad,同时记录下五元组信息(源IP地址、目的IP地址、源端口、目的端口、协议类型),统计值加一;步骤D、判断接收是否结束,若未结束则通过五元组信息判定接收到的数据包是否属于该视频流,若是则统计值加一,若否则忽略,循环D;若接收结束则跳出D,执行步骤E;步骤E、从每个帧对应的userdata域中得到每帧长度(字节),计算每个帧的分包个数pkt_num(pkt_num=[frame_length/(MTU-header_length)]),求和得到整个视频文件传输发送的数据包个数,丢包数与之进行比较即为丢包率。为了避免userdata所在数据包丢失而导致的统计误差,我们可以采用在userdata内嵌入冗余数据的方法,把每帧对应的测量信息插入到多个userdata中,从而降低了测量信息全部丢失的概率,保证了测量的可靠性。测量信息所在位置见图1,测量信息结构见图2、图3,网络拓扑见图4,封包格式(以RTP为例)见图5,码流标识见表1、表2。本实施例的详细内容为首先在服务器端将测量信息加入到H.264视频的指定位置,所述指定位置包括如下两处1、在第一个H.264视频序列参数集之前插入H.264视频起始标记,如图2所示;2、在H.264视频序列的每个帧尾加入本次测量的特征标识及各帧的帧长度、帧序号;经过处理后的第一个H.264视频序列如图1所示。然后,客户端访问该H.264视频,并同时开启数据包实时分析工具对接收到的数据包进行测量,以图2所示结构为例。在测量过程中首先检测接收到的数据包载荷是否如图2所示的结构,若是则表示H.264视频接收的开始。具体的识别过程为搜索接收到的数据包,判断是否含有0x0605,且跳过17个字节之后是否为OxOOff(本次测量的特征标识),其中0x0605为用户未注册补充增强信息的类型标识(可参考表一,表二),OxOOfT为本次测量的特征标识。若两处均相符,则判定该数据包为本次测量加入的userdata所在数据包。第一个满足条件的数据包就是标记H.264视频传输开始的数据包。表一<table>tableseeoriginaldocumentpage8</column></row><table><table>tableseeoriginaldocumentpage9</column></row><table>提取该数据包的五元组信息作为本次测量的视频流标识,同时计算数据包的载荷量video—payload为video—payload=MTU-header_length其中,headerjength表示数据包中非视频数据净荷部分的长度值(即图5中前四部分的长度),MTU(MaximumTransmissionUnit)表示网络上传送的最大数据包,单位是字节;此处取值为1450。通过五元组信息判定接收到的数据包是否属于本次测量的视频流,若是则从每个帧对应的userdata域中提取出帧长度(字节),则每个帧的分包个数Pkt^umi为<formula>formulaseeoriginaldocumentpage10</formula>其中,η表示帧的总数,framejengthi表示第i个帧的长度,video_payload为所述视频载荷值。对Pkt^umi求和得到传输本次测量的H.264视频所需要的数据包总数,并且通过五元组过滤统计收到的数据包数Y(即统计值),计算丢包率Pktloss的表达式如下<formula>formulaseeoriginaldocumentpage10</formula>图6为丢包率检测结果对比图,其中有三种测量结果,一种是通过本实施例的检测方法(userdata)获得的;另一种是通过传统的检测方法(huawei)获得的;最后一种为通过wireshark抓包工具(truevalue)获得的,此结果反映的是实际情况中的丢包率。从图中可以看出,本发明在测量H.264视频文件丢包率方面有较高的准确性。这里本发明的描述和应用是说明性的,并非想将本发明的范围限制在上述实施例中。这里所披露的实施例的变形和改变是可能的,对于那些本领域的普通技术人员来说实施例的替换和等效的各种部件是公知的。本领域技术人员应该清楚的是,在不脱离本发明的精神或本质特征的情况下,本发明可以以其他形式、结构、布置、比例,以及用其他元件、材料和部件来实现。权利要求一种H.264视频文件的丢包检测方法,其特征在于,所述方法包括以下步骤步骤一,所述H.264视频文件由若干个视频序列构成,每个所述视频序列均包含有若干个I、P、B帧;利用用户数据域在视频序列中插入测量信息;步骤二,接收端通过所述测量信息获取传输H.264视频文件的数据包载荷及各帧大小;步骤三,接收结束后,依据步骤二所得结果获得传输H.264视频文件的数据包总数,然后同接收端收到的数据包数量比较,得出丢包率。2.根据权利要求1所述的H.264视频文件的丢包检测方法,其特征在于,所述方法的进一步详细步骤为步骤1,所述测量信息的插入位置分为两类1)在第一个视频序列参数集之前插入H.264视频起始标记,用以标识视频传输开始;2)在每个帧尾的用户数据域插入本次测量标记及各帧的帧长度、帧序号,用以统计各帧对应的数据包数;步骤1.5,所述视频序列打包成数据包开始网络传输,接收端开始接收;步骤2,接收端通过检测数据包中是否含有所述本次测量标记来判断数据包是否为传输本次测量的H.264视频文件的数据包,若是则检测传输本次测量的H.264视频文件的第一个数据包,获得数据包中非视频数据净荷部分的长度值,进而得出视频载荷值;同时记录下所述第一个数据包的五元组信息,统计值加一;若不是则重复步骤2;步骤3,判断接收是否结束,若未结束则通过五元组信息判断接收到的数据包是否属于传输本次测量的H.264视频文件的数据包,若是则统计值加一,若否则循环步骤3;若接收结束则跳出步骤3,执行步骤3.5;步骤3.5,从每个帧对应的用户数据域中提取每帧长度,得出每个帧的分包个数,求和得到传输整个H.264视频文件发送的数据包总数,所述数据包总数与统计值的最终值之差即为丢包数,所述丢包数与所述数据包总数之比即为丢包率。3.根据权利要求2所述的H.264视频文件的丢包检测方法,其特征在于所述五元组信息为源IP地址,目的IP地址,源端口,目的端口,协议类型。4.根据权利要求2所述的H.264视频文件的丢包检测方法,其特征在于所述每个帧尾的用户数据域除插入有自身帧信息外还插入有冗余帧信息。5.根据权利要求4所述的H.264视频文件的丢包检测方法,其特征在于所述I帧尾的用户数据域插入有I帧自身帧信息和I帧冗余帧信息,所述I帧冗余帧信息包括P帧自身帧信息和B帧自身帧信息;所述P帧尾的用户数据域插入有P帧自身帧信息和P帧冗余帧信息,所述P帧冗余帧信息包括I帧自身帧信息和B帧自身帧信息;所述B帧尾的用户数据域插入有B帧自身帧信息和B帧冗余帧信息,所述B帧冗余帧信息包括P帧自身帧信息和I帧自身帧信息。6.根据权利要求2所述的H.264视频文件的丢包检测方法,其特征在于所述非视频数据净荷部分的长度值记为headerjength,所述视频载荷值记为Vide0_payl0ad,且video_payload=MTU_header_length,MTU表示网络上传送的最大数据包,单位是字节,MTU取值为1450。7.根据权利要求2所述的H.264视频文件的丢包检测方法,其特征在于所述每个帧的分包个数为Pktjumi<formula>formulaseeoriginaldocumentpage3</formula>其中,η表示帧的总数,frame.lengthi表示第i个帧的长度,video_payload为所述视频载荷值。对Pkt^umi求和得到传输本次测量的H.264视频文件所需要的数据包总数,所述统计值的最终值为Y,丢包率pktloss则为<formula>formulaseeoriginaldocumentpage3</formula>全文摘要本发明公开了一种H.264视频文件的丢包检测方法,该方法包括以下步骤步骤一,所述H.264视频文件由若干个视频序列构成,每个所述视频序列均包含有若干个I、P、B帧;利用用户数据域在视频序列中插入测量信息;步骤二,接收端通过所述测量信息获取传输H.264视频文件的数据包载荷及各帧大小;步骤三,接收结束后,依据步骤二所得结果获得传输H.264视频文件的数据包总数,然后同接收端收到的数据包数量比较,得出丢包率。本发明将测量有效信息写入userdata域中,能准确检测出H.264视频的丢包情况,不受流媒体传输协议限制,更因嵌入在视频内部的冗余数据保证了测量值的准确性,引入的测量负载最小。文档编号H04L12/26GK101800671SQ20101010689公开日2010年8月11日申请日期2010年2月8日优先权日2010年2月8日发明者周华磊,张俊生,张大陆,曹孝晶,朱小庆,胡治国申请人:同济大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1