CN102611894B - 检测视频传输丢包的方法、装置和系统 - Google Patents
检测视频传输丢包的方法、装置和系统 Download PDFInfo
- Publication number
- CN102611894B CN102611894B CN201210053601.XA CN201210053601A CN102611894B CN 102611894 B CN102611894 B CN 102611894B CN 201210053601 A CN201210053601 A CN 201210053601A CN 102611894 B CN102611894 B CN 102611894B
- Authority
- CN
- China
- Prior art keywords
- frame
- video data
- packet loss
- video
- macro block
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供了一种检测视频传输丢包的方法、装置和系统,其中检测视频传输丢包的方法包括:接收承载有视频数据帧的视频数据包,所述视频数据帧包括I帧、B帧和P帧;从携带有视频数据帧帧头信息的视频数据包中获取帧序号,以及从携带图像条的描述信息的视频数据包中获取图像组序号和帧类型累计值;在发生视频数据包丢失,根据发生视频数据包丢失前最后获得的帧序号和对应的帧类型累计值,以及发生视频数据包丢失后最先获得的帧序号和对应的帧类型累计值,获取P帧丢失数,或者是获取P帧与帧序号非零的I帧的丢失数之和。本发明还提供了相应的装置和系统。本发明的技术方案能够提高对视频传输质量评价的准确性。
Description
技术领域
本发明涉及视频传输技术领域,尤其涉及一种检测视频传输丢包的方法、装置和系统。
背景技术
活动图像专家组(Moving Picture Experts Group,以下简称:MPEG)视频流在发送端经过处理后得到视频数据包,该视频数据包经过以太网的传输和交换传送至数据接收端,在传送过程中,受网络状况的影响,容易发生延迟或丢包的情况。
目前的流视频业务,例如交互式网络电视(Internet Protocoltelevision,以下简称:IPTV)业务,具有高带宽、对实时性要求高的特点,其对分组丢失、乱序、传输延时和时延抖动等网络损伤都非常敏感,因此,需要获取非常准确的视频传输质量数据。然而,现有技术中的媒体传输指标(Media Delivery Index,以下简称:MDI)主要是通过考虑延迟因素(DelayFactor)和媒体丢包率(Media Loss Rate)评价网络传输质量来获取,上述评价方式没有考虑到视频流传输的特点,存在评价准确率低的缺陷。
发明内容
本发明实施例提供一种检测视频传输丢包的方法、装置和系统,用于提高对视频传输质量评价的准确性。
本发明实施例提供了一种检测视频传输丢包的方法,包括:
接收承载有视频数据帧的视频数据包,所述视频数据帧包括I帧、B帧和P帧;
从携带有视频数据帧帧头信息的视频数据包中获取帧序号,以及从携带图像条的描述信息的视频数据包中获取图像组序号和帧类型累计值,所述帧类型累计值用于表征图像组内包括当前视频数据帧的累计P帧的数目,或所述帧类型累计值用于表征图像组内包括当前视频数据帧的累计P帧和累计帧序号非零的I帧的数目之和,所述图像组为起始于帧序号为零的I帧的一组视频数据帧;
在发生视频数据包丢失,且发生视频数据包丢失前获得的图像组序号与发生视频数据包丢失后获得的图像组序号一致,发生视频数据包丢失前最后获得的帧序号和视频数据包丢失后最先获得的帧序号发生不一致时,根据发生视频数据包丢失前最后获得的帧序号和对应的帧类型累计值,以及发生视频数据包丢失后最先获得的帧序号和对应的帧类型累计值,获取P帧丢失数,或者是获取P帧与帧序号非零的I帧的丢失数之和。
本发明实施例还提供了一种检测视频传输丢包的装置,包括:
第一接收模块,用于接收承载有视频数据帧的视频数据包,所述视频数据帧包括I帧、B帧和P帧;
第二获取模块,用于从携带有视频数据帧帧头信息的视频数据包中获取帧序号,以及从携带图像条的描述信息的视频数据包中获取图像组序号和帧类型累计值,所述帧类型累计值用于表征图像组内包括当前视频数据帧的累计P帧的数目,或所述帧类型累计值用于表征图像组内包括当前视频数据帧的累计P帧和累计帧序号非零的I帧的数目之和,所述图像组为起始于帧序号为零的I帧的一组视频数据帧;
第一检测视频传输丢包的模块,用于在发生视频数据包丢失,且发生视频数据包丢失前获得的图像组序号与发生视频数据包丢失后获得的图像组序号一致,发生视频数据包丢失前最后获得的帧序号和视频数据包丢失后最先获得的帧序号发生不一致时,根据发生视频数据包丢失前最后获得的帧序号和对应的帧类型累计值,以及发生视频数据包丢失后最先获得的帧序号和对应的帧类型累计值,获取P帧丢失数,或者是获取P帧与帧序号非零的I帧的丢失数之和。
本发明实施例还提供了一种检测视频传输丢包的系统,包括上述的检测视频传输丢包的装置。
本发明提供的技术方案,通过在视频数据包的图像条的描述信息中添加图像组序号和帧类型累计值,使得检测视频传输丢包的设备在接收视频数据包,并发生视频数据包丢失时,根据帧序号以及在图像条的描述信息中携带的帧类型累加值,能够获取实际丢失的P帧数目,以更加准确的反映实际丢包对视频画面质量的影响,能够提高对视频传输质量评价的准确性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例中视频数据传输处理方法的流程示意图;
图2为本发明实施例中检测视频传输丢包的方法的流程示意图;
图3为本发明具体实施例中视频数据传输处理方法的流程示意图;
图4为本发明具体实施例中检测视频传输丢包的方法的流程示意图;
图5为图4所示实例中进行丢失视频数据帧情况测量的具体流程示意图;
图6为图4所示实施例中进行暂存状态下丢失视频数据帧的情况计算的具体流程示意图;
图7为图4所示实施例中更新丢失宏块列表的具体流程示意图;
图8为本发明实施例中视频数据传输处理装置的结构示意图;
图9为本发明实施例中检测视频传输丢包的装置的结构示意图一;
图10为本发明实施例中检测视频传输丢包的装置的结构示意图二;
图11为本发明实施例中检测视频传输丢包的装置的结构示意图三;
图12为本发明实施例中检测视频传输丢包的装置的结构示意图四。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
针对现有技术中无法实现对视频流的传输质量进行准确评价的缺陷,本发明实施例提供了一种技术方案,本发明实施例提供的技术方案包括发送端对视频数据的传输处理方法,以及检测视频传输丢包的设备对视频传输质量的获取方法,且该检测视频传输丢包的设备可以设置在传输网络中任意需要对视频传输质量进行评估的节点,或者是在视频数据的接收端。图1为本发明实施例中视频数据传输处理方法的流程示意图,如图1所示,包括如下的步骤:
步骤101、依次获取承载有视频数据帧的视频数据包,所述视频数据帧包括I帧、B帧和P帧;
步骤102、在获取的所述视频数据包的图像条的描述信息中添加图像组序号和帧类型累计值,所述帧类型累计值用于表征图像组内包括当前视频数据帧的累计P帧的数目,或所述帧类型累计值用于表征图像组内包括当前视频数据帧的累计P帧和累计帧序号非零的I帧的数目之和,所述图像组为起始于帧序号为零的I帧的一组视频数据帧;
在具体的实施例中,可能不是全部的视频数据包都承载有图像条的描述信息,因此步骤102中仅是针对承载有图像条的描述信息的数据包进行处理。另外,对于I帧,其可能仅存在帧序号为零的I帧,也可能是还存在帧序号为非零的I帧的情况,上述的帧类型累计值针对不同的情况表征不同的数值;
步骤103、将所述视频数据包添加到发送队列中进行发送。
本发明上述实施例提供的技术方案,通过在视频数据包的图像条的描述信息中添加图像组序号和帧类型累计值,使得检测视频传输丢包的设备在接收视频数据包,并发生视频数据包丢失时,根据帧序号以及在图像条的描述信息中携带的帧类型累加值,能够获取实际丢失的P帧数目,以更加准确的反映实际丢包对视频画面质量的影响,能够提高对视频传输质量评价的准确性。
本发明上述实施例中的步骤102中,可以通过多种方式在视频数据包的图像条的描述信息中添加图像组序号和帧类型累计值,例如针对MPEG-2定义的图像条的描述信息,其中包含了扩展字段,可以在所述视频数据包的图像条的描述信息的扩展字段中添加图像组序号和帧类型累计值;而例如针对H.264定义的图像条的描述信息,其中包含了帧序号字段,因此可以在视频数据包的图像条的的描述信息的帧序号字段中写入图像组累计值和帧类型累计值。具体的该图像条的帧序号字段为2个字节,可以将其改写为1位的帧类型累计值标志位,9位的帧类型累计值,1位的图像组序号标志位和5位的图像组序号。
上述实施例是在视频数据包发送端执行的处理方法,其中步骤102中,在所述帧类型累计值用于表征图像组内包括当前视频数据帧的累计P帧的数目时,帧类型累计值具体的可以是由视频数据包发送端获取图像组内包括当前视频数据帧的累计帧序号为零的I帧的数目A,图像组内包括当前视频数据帧的累计B帧的数目B以及图像组内包括当前视频数据帧的累计P帧的数目C,并根据公式G=A+B+nC计算得出,其中G表示帧类型累计值,n为大于1的整数。或者是在所述帧类型累计值用于表征图像组内包括当前视频数据帧的累计P帧和累计帧序号非零的I帧的数目之和时,所述帧类型累计值由视频数据包发送端获取图像组内包括当前视频数据帧的累计帧序号为零的I帧的数目A,据图像组内包括当前视频数据帧的累计B帧的数目B,据图像组内包括当前视频数据帧的累计P帧的数目C,以及据图像组内包括当前视频数据帧的累计帧序号为非零的I帧的数目D,并根据公式G=A+B+mC+mD计算得出,其中G表示帧类型累计值,m为大于1的整数。
本发明上述实施例中,通常媒体流中会包括视频数据包、音频数据包等多种数据包,其中对视频数据包处理可能会造成包间隔抖动,在这种情况下,上述步骤103中的通过缓存队列发送所述视频数据包可以具体为:
调整包括所述视频数据包的媒体流码率,通过缓存队列按照预先设定的发送速率发送包括所述视频数据包的媒体流。
本发明实施例还提供了一种检测视频传输丢包的方法,图2为本发明实施例中检测视频传输丢包的方法的流程示意图,如图2所示,包括如下的步骤:
步骤201、接收承载有视频数据帧的视频数据包,所述视频数据帧包括I帧、B帧和P帧,并从携带有视频数据帧帧头信息的视频数据包中获取帧序号,以及从携带图像条的描述信息的视频数据包中获取图像组序号和帧类型累计值,所述帧类型累计值用于表征图像组内包括当前视频数据帧的累计P帧的数目,或所述帧类型累计值用于表征图像组内包括当前视频数据帧的累计P帧和累计帧序号非零的I帧的数目之和,所述图像组为起始于帧序号为零的I帧的一组视频数据帧;
步骤202、在发生视频数据包丢失,且发生视频数据包丢失前获得的图像组序号与发生视频数据包丢失后获得的图像组序号一致,发生视频数据包丢失前最后获得的帧序号和视频数据包丢失后最先获得的帧序号发生不一致时,根据发生视频数据包丢失前最后获得的帧序号和对应的帧类型累计值,以及发生视频数据包丢失后最先获得的帧序号和对应的帧类型累计值,获取P帧丢失数,或者是获取P帧与帧序号非零的I帧的丢失数之和。
本发明实施例是针对图1所示实施例处理后的视频数据包的传输质量进行评价,首先接收视频数据包,并可以从所述视频数据包的图像条的描述信息中获取图像组序号和帧类型累计值,如果发生视频数据包丢失,则根据发生视频数据包丢失前后的帧序号和帧类型累计值判定丢失的类型,在发生视频数据包丢失前后的帧类型累计值不一致时,确认是发生了跨帧丢失,因此可以根据帧序号和图像条的描述信息中携带的帧类型累计值获取P帧丢失数,或者是P帧与帧序号非零的I帧的丢失数之和,能够更加准确的反映实际丢包对视频画面质量的影响,能够提高对视频传输质量评价的准确性。
另外,本发明上述实施例中,还可以根据视频数据帧的实际丢帧总数,以及根据帧速率计算得到的理论丢帧总数获取屏幕冷冻时间。具体的,首先是在上述接收视频数据包的同时,依次记录接收承载有视频数据帧的视频数据包的接收时间,并从承载有视频数据帧帧头信息的视频数据包中获取帧速率,该帧速率包含在视频数据帧帧头信息中。
在发生视频数据包丢失时,可以根据发生视频数据包丢失前最后获得的帧序号和发生视频数据包丢失后最先获得的帧序号获取丢失视频数据帧数目;并根据记录的发生视频数据包丢失前最后接收承载有视频数据帧帧头信息的视频数据包的接收时间,以及发生视频数据包丢失后最先接收携带有视频数据帧帧头信息的视频数据包的接收时间获取丢帧时间差,该情况下,需要将发生视频数据包丢失前接收最后一个可解析的视频数据帧的时间去掉,另外,还有一种情况是记录的发生视频数据包丢失前接收承载最后一个可解析视频数据帧的最后一个视频数据包的时间,根据上述时间以及发生视频数据包丢失后最先接收携带有视频数据帧帧头的视频数据包的时间获取丢帧时间差;
根据上述任一方式获取的丢帧时间差以及所述帧速率可以获取理论丢失视频数据帧的数目。
最后,根据上述理论丢失视频数据帧的数目和实际丢失视频数据帧的数目的差值获取屏幕冷冻时间。
另外,对于发生视频数据包丢失的情况,还有可能是视频数据帧内部宏块丢失的情况,该情况下需要获取帧内宏块丢失信息,具体的,即获取各个视频数据包中最后一个图像条的描述信息中的图像组序号、帧类型累计值和图像条序号;在发生视频数据包丢失,且确定发生视频数据包丢失前最后获取的图像组序号与发生视频数据包丢失后最先获取的图像组序号一致,发生视频数据包丢失前最后获得的帧类型累计值与发生视频数据包丢失后最先获得的帧类型累计值一致时,获取第一帧内宏块丢失信息,该第一帧内宏块丢失信息包括发生视频数据包丢失前最后获得的图像条序号对应的图像条在内,到发生视频数据包丢失后最先获取的图像条序号对应的图像条之前的所有图像条的宏块的信息。或者是在发生视频数据包丢失,且确定发生视频数据包丢失前最后获得的图像组序号与发生视频数据包丢失后最先获得的图像组序号一致,发生视频数据包丢失前最后获得的帧类型累计值与发生视频数据包丢失后最先获得的帧类型累计值不一致时,获取第二帧内宏块丢失信息,所述第二帧内宏块丢失信息包括发生视频数据包丢失前最后获得的图像条序号对应的图像条在内,以及之后所有图像条的宏块的信息。
并且进一步的,可以将第一帧内宏块丢失信息、第二帧内宏块丢失信息和实际丢失视频数据帧所包含的宏块信息存储到宏块丢失列表中;然后根据各个视频数据帧内未丢失宏块的地址相关信息判断所述未丢失宏块的基准宏块是否是位于宏块丢失列表中,如果是则确认所述未丢失宏块为丢失宏块,且将所述丢失宏块信息存储于宏块丢失列表中,通过该步骤,在进行视频传输质量的评价时,可以将帧内或帧间预测引起的损伤传播考虑进来,使得对视频传输质量的评价更加准确。
具体的,上述宏块丢失列表可以包括当前帧宏块丢失列表,前向宏块丢失列表和后向宏块丢失列表,而上述的根据各个视频数据帧内未丢失宏块的地址相关信息判断所述未丢失宏块的基准宏块是否是位于宏块丢失列表具体为:
根据I帧内未丢失的宏块的地址相关信息判断所述未丢失宏块的基准宏块是否是位于当前帧宏块丢失列表中,这主要考虑I帧为帧内预测编码的视频数据帧,其只需要考虑同一视频数据帧内部的参考宏块是否丢失即可;
根据P帧内未丢失的宏块的地址相关信息判断所述未丢失宏块的基准宏块是否是位于前向帧宏块丢失列表中,这主要考虑P帧为前向预测编码的视频数据帧,其需要考虑存储在前向帧宏块丢失列表中的前一个视频数据帧的宏块丢失情况;或,
根据B帧内未丢失的宏块的地址相关信息判断所述未丢失宏块的基准宏块是否是位于前向帧宏块丢失列表和后向帧宏块丢失列表中,这主要考虑B帧为双向预测编码的视频数据帧,其需要考虑存储在前向帧宏块丢失列表中的前一个视频数据帧的宏块丢失情况,以及存储在后向帧宏块丢失列表中的后一个视频数据帧的宏块丢失情况。
本发明上述实施例中,其中的步骤102中在图像条的描述信息中添加图像组序号和帧类型累加值,可以按照如图3所示的实施例给出的步骤进行:
步骤301、变量初始化,图像组序号用变量(Group sequence,简称:GS)表示,帧类型累计值用变量(the sum of every graphics frame type,简称:EGTS表示,首先将上述两个变量值初始化为0;
步骤302、从接收到的视频数据包中获取视频数据帧帧头信息,该帧头信息中会携带帧类型值和帧序号,通过分析帧头信息可以确定帧序号为0的I帧,本实施例在第一次查找到符合条件的I帧后开始循环,执行下述的步骤303-307;
步骤303、读取视频数据帧帧头信息中的帧类型和帧序号;
步骤304、根据帧类型和帧序号判断是否为帧序号为0的I帧,如是则执行步骤305,否则执行步骤306;
步骤305、将图像组序号变量GS的值加1,即GS+1,并将帧类型累计值EGTS设为0,本步骤中在第一次获取到符合条件的I帧时,其中EGTS的值即为0,而在之后获取到符合条件的I帧时,可能EGTS的值已经被改变,本步骤中再将其设置为0,这是考虑到本发明实施例中是根据帧序号为0的I帧将视频数据帧划分为不同的图像组,对于新的图像组,其中帧类型累计值也重新计算;
步骤306、判断该视频数据帧的类型并更新EGTS的值,对于仅存在帧序号为零的I帧时,若其为I帧或B帧,将ETGS的值增加1,即EGTS+1,否则将EGTS的值增加2,即EGTS+2,或者也可以是其他非1的整数值;对于存在帧序号为非零的I帧时,若其为B帧或帧序号为零的I帧,将EGTS的值增加1,否则将EGTS的值增加2,或者也可以是其他非1的整数值。这里主要是考虑到在视频数据帧的帧头信息中会存储帧序号,在图像组中帧序号都是依次增加1的,本步骤中,在I帧或B帧时,将ETGS的值增加1,而P帧时增加非1的整数,通过两者的差值容易得到P帧的数目,或者是P帧与帧序号为非零的I帧的数目之和。
步骤307、将GS的值和EGTS的值写入到图像条的描述信息中,由于视频数据帧的帧头信息通常只存在于发送该视频数据帧的第一个视频数据包中,而图像条的描述信息则可能存在于后续的多个视频数据包中,本实施例中可能是在后续接收到的多个视频数据包的图像条的描述信息中添加GS的值和EGTS的值;
步骤308、在执行上述步骤307的同时也需要查找下一个视频数据帧的帧头信息,并在查找到后不在添加GS的值和EGTS的值,而转到执行上述的步骤303。
本发明上述实施例中,在视频数据包的发送端按照图3所示的实施例进行了处理,进一步的可以在后续的任一网络节点或视频数据包的接收端进行视频传输质量分析,具体的可以包括如图4所示的步骤:
步骤401、初始化监测所需要的列表和变量,具体的列表包括当前帧丢失宏块列表、前向参考宏块列表、后向参考宏块列表和指针偏移列表;
步骤402、寻找有效的监测起点,如上述图3所示实施例给出的,其中是从帧序号为0的I帧开始处理的,因此本步骤中的寻找帧序号为0的I帧,具体的可是从接收到的视频数据包的视频数据帧帧头信息中寻找,该视频数据帧帧头信息可以看作是图像头起始标志位或TS的起始标志位,包括帧类型以及帧序号等信息;
步骤403、获取帧类型,并判断是否需要暂存该承载视频数据帧帧头信息的视频数据包地址,以及是否需要打开暂存状态,若是执行步骤404,否则执行步骤405,本步骤具体的包括如下情形:
A、若不需要暂存,则转向执行步骤405;
B、若需要暂存,且当前视频数据帧为B帧,则暂存状态打开;
C、若需要暂存,但当前视频数据帧为P帧或帧序号非0的I帧,则暂存状态关闭;
本步骤中是否需要暂存主要依据是是否丢失P帧,丢失P帧时为需要暂存,而仅在当前视频数据帧为B帧时才真正将暂存状态打开,这主要是考虑到B帧为双向预测数据帧,需要对其前后的视频数据帧损伤评价完成后再进行评价。
步骤404、进行丢失视频数据帧情况的测量,根据不同的丢失视频数据帧的情况暂存相应的内容,具体的根据不同的丢失视频数据帧的情况并暂存相应的内容包括:
A、未丢任何视频数据帧,且当前视频数据帧为B帧,暂存当前的视频数据帧;
B、仅丢失n个B帧,暂存n个B帧损伤率结果,其值为100%;
C、丢失n个视频数据帧,且丢失至少1个P帧,暂存n个视频数据帧的损伤率结果,并转向执行步骤409;
上述A和B两种情况下,从视频数据包中寻找下一个图像头起始标志位,并转向执行步骤403;
步骤405、根据当前视频数据帧的帧类型和当前帧宏块丢失列表的状态,判断是否需要分析未丢失宏块信息,并将结果赋给变量MMBFLag,该变量用于表征是否需要分析帧间级联损伤,即时域损伤分析,判断上述变量MMBFLag为真还是假,分别执行如下:
A、若MMBFLag为真,对当前视频数据包的每一个宏块进行时域损伤分析;
B、若MMBFlag为假,记录最后一个同步点(图像条起始标志位)的位置,若当前视频数据包不包含同步点,则记录该视频数据包中首个宏块坐标;
步骤406、提取下一个视频数据包,判断是否为连续的视频数据包,若成立则执行步骤408,否则执行步骤407;
步骤407、进行损伤的空间传播分析,即损伤的空域扩散分析,如果是跨视频数据帧的损伤,执行步骤409,否则执行步骤408;
步骤408、判断当前的视频数据包是否为承载视频数据帧的第一个视频数据包,通常该第一个视频数据包中会包括视频数据帧帧头信息,若是执行步骤409,否则执行步骤405;
步骤409、根据当前帧宏块丢失列表,计算当前视频数据帧中宏块丢失情况,并根据帧类型或丢失P帧数量更新前向宏块丢失列表和后向宏块丢失列表;
步骤410、根据暂存序列元素数情况进行相应操作,具体的该各个元素可以暂存在指针偏移列表中:
A、若指针偏移列表中的元素数大于1,取出首个元素,若该元素存储为帧丢失状态,则输出帧损伤比,转步骤410,否则指针指向元素储存的地址,转向步骤403;
B、若指针偏移列表中的元素数为1,指针指向该唯一元素储存的地址,转向步骤403;
C、若指针偏移列表中的元素数目为0,转向步骤403。
上述实施例中是以仅存在帧序号为零的I帧的情况进行的说明,其中可以获取丢失P帧的数目,当存在帧序号非零的I帧时,根据上述的实施例也可以获取丢失的P帧和非零的I帧的数目和。
本发明上述实施例中,步骤404中的进行丢失视频数据帧情况测量可以包括如图5所示的步骤:
步骤501、发生视频数据包丢失时,获取最近接收到的承载视频数据帧帧头信息的视频数据包的到达时间,并从视频数据帧帧头信息中获取帧序号,另外。还需要获取帧类型累计值和图像组序号,其可以从故障前最后接收到的图像条的描述信息中得到;
步骤502、查找下一个含有图像条启示标志位,也即是含有图像条的描述信息的视频数据包,作为再同步点;
步骤503、提取再同步点的图像条的描述信息中携带的帧类型累计值和图像组序号;
步骤504、判断步骤501中获得的图像组序号,和步骤503中获得的图像组序号是否相同,如果是执行步骤505,否则执行步骤506;
步骤505、判断501中获得的帧类型累计值,和步骤503中获得的帧类型累计值是否相同,如果是则说明损伤未跨视频数据帧,直接执行步骤513,结束丢失视频数据帧情况计算,否则执行步骤507;
步骤506、将步骤501中获取的帧类型类累计值,以及帧序号进行重新初始化;
步骤507、从后续的视频数据包中查找下一个携带图像头起始标志位的视频数据包,也就是携带视频数据帧帧头信息的视频数据包;
步骤508、记录步骤507中接收到上述视频数据包的时间,并从上述视频数据帧帧头信息中获取帧序号、帧类型,以及从第一个图像条的描述信息中获取帧类型累计值和图像组序号;
步骤509、判断步骤501中获取的图像组序号和步骤508中获取的图像组序号是否一致,如果一致则执行步骤511,否则执行步骤510;
步骤510、将步骤501中获取的帧类型类累计值,以及帧序号重新初始化;
步骤511、根据步骤501中获得的承载故障点所在视频数据帧的第一个视频数据包的到达时间,以及步骤508中获得的接收视频数据包的时间,以及视频数据帧帧头信息中的帧速率获取理论丢帧总数,该理论丢帧总数包含了屏幕冷冻时间;
步骤512、根据步骤501中获得的帧序号和帧类型累计值,以及步骤508中获得的帧序号和帧类型累计值,获取实际丢帧总数,并在帧类型累计值表征图像组内包括当前视频数据帧的累计P帧的数目时,获取丢失的P帧的数目;或者是在帧类型累计值用于表征图像组内包括当前视频数据帧的累计P帧和累计帧序号非零的I帧的数目之和,获取丢失的P帧和丢失的帧序号非零的I帧的数目之和;
步骤513、结束丢失视频数据帧情况计算。
另外,对于暂存状态下丢失视频数据帧的情况计算可以按照图6所示的步骤进行:
步骤601、在发生视频数据包丢失时,若暂存状态打开,获取前一个可解析视频数据帧的帧序号,承载前一个可解析视频数据帧的最后一个视频数据包的到达时间,以及前一个可解析视频数据帧的最后一个图像条携带的帧类型累计值和图像组序号;
步骤602、获知视频数据包丢失后,从下一个承载有图像头的标志信息,也即是视频数据帧帧头信息的视频数据包中获得第一个图像条的描述信息中的帧类型累计值和图像组序号;
步骤603、判断步骤601和步骤602中获取的图像组序号是否一致,如果是执行步骤604,否则执行步骤605;
步骤604、判断步骤601和步骤602中获取的帧类型累计值是否一致,如果一致执行步骤609,结束丢失帧情况计算的步骤,否则执行步骤606;
步骤605、将步骤601中获取的帧类型累计值和帧序号重新初始化;
步骤606、从步骤602中获取的视频数据包中获取视频数据帧帧头信息中携带的帧序号、帧类型,以及帧速率,并记录该视频数据包的达到时间,这是后一个视频数据帧的到达时间;
步骤607、根据步骤601中获取的承载前一个视频数据帧的最后一个视频数据包的到达时间,步骤606中获取的后一个视频数据帧的到达时间,以及帧速率获取理论丢帧总数;
步骤608、根据前后两个视频数据帧的帧序号、帧类型累计值计算实际丢帧总数,以及实际丢失P帧总数,或者是实际丢失的P帧和帧序号非零的I帧的总数之和;
步骤609、丢失视频数据帧情况计算结束。
针对图4所示实施例中的步骤409中更新丢失宏块列表,其中的丢失宏块列表可以包括当前帧宏块丢失列表(Current frame list,以下简称:CFL)、前向帧宏块丢失列表(previous reference picture list,以下简称:SPRL)和后向帧宏块丢失列表(succeed reference picture list,以下简称:PRPL),具体步骤可以按照图7执行:
步骤701、获取P帧的丢失情况,即判断是否丢失P帧,在丢失P帧时执行步骤702,未丢失P帧时执行步骤705;
步骤702、判断是否丢失两个以上的P帧,若是执行步骤704,否则执行步骤703;
步骤703、将SRPL的信息值赋给PRPL,并将丢失的P帧的所有宏块坐标都加入到SRPL中,同时将CFL清空,执行步骤709;
步骤704、将丢失的P帧的所有宏块坐标都加入到SRPL和PRPL中,将CFL清空,执行步骤709;
步骤705、判断该视频数据帧是否为帧序号为零的I帧,如果是执行步骤708,否则执行步骤706;
步骤706、判断该视频数据帧是否为B帧,如果是执行步骤709,否则执行步骤707;
步骤707、将SRPL的信息值赋给PRPL,将CFL的信息值赋给SRPL,执行步骤709;
步骤708、将SRPL和PRPL的值清空,并将CFL的值加入到SRPL中;
步骤709、宏块列表更新完成。
图4所示实施例的步骤405中进行时域损伤分析可以包括如下的过程:
(1)顺序获得视频数据包内每一个宏块的坐标信息:提取当前宏块的宏块地址增量(Macro block incremental,以下简称:MBI),该增量是当前宏块与前一宏块的距离,并结合前一宏块的坐标信息得到当前宏块的坐标信息。其中,若当前视频数据包含有图像头标志,即视频数据帧帧头信息,则提取当前视频数据包中第一个图像条的垂直序号,并结合视频数据帧水平分辨率和宏块水平尺寸得到前一宏块(即虚拟宏块)的坐标地址;
(2)计算当前宏块参考的基准宏块,具体的可以通过提取当前宏块的矢量位移和预测模式得到其基准宏块;
(3)查找基准宏块在关键帧参考列表中的状态,该关键帧参考列表包括前向参考宏块列表和后向参考宏块列表,若其为丢失,则将当前宏块加入到当前帧宏块丢失列表中,具体的,对于B帧中的宏块,若其前向参考宏块或者后向参考宏块之一的状态为丢失,则认为当前宏块的状态也为丢失;
(4)若宏块地址增量MBI大于1,则判断当前宏块与前一宏块之间的所有跳跃宏块的基准宏块是否丢失,若其丢失,则将该跳跃宏块加入到当前帧宏块丢失列表中。另外,若当前视频数据帧为P帧,则将跳跃宏块的前向矢量位移赋值为0,若当前视频数据帧为B帧,则每一个跳跃宏块的预测模式状态和相对应的矢量位移取自前一宏块。
图4所示的实施例中的对损伤进行空间传播分析可以包括如下的过程:
(1)获取损伤起始点的宏块坐标,具体的包括若当前的视频数据包未对丢失的宏块进行信息匹配,即解析帧内快标志(the flag of mapping macroblock,以下简称:MMBFlag)为0,此时从记录的最后一个图像条标志位的位置,即发生数据包丢失前最后接收到的图像条的描述信息的位置开始检测其后的每一个宏块的地址增量,以得到损伤初始点的宏块坐标,若当前视频数据包已经对丢失宏块进行信息匹配,则取前一宏块的坐标作为损伤初始点的宏块坐标;
(2)查找下一个含有图像头起始标志位,也即是含有图像条的描述信息的视频数据包,并将下一个图像头起始标志位位置作为再同步点;
(3)根据损伤起始点所在的图像条描述信息中的帧类型累计值,以及再同步点的图线条的描述信息中的帧类型累计值,判断损伤是否跨帧;
(4)对损伤初始点和再同步点之间的宏块进行处理:若损伤未跨帧,则将损伤初始点和再同步点之间的所有宏块加入到当前帧的宏块丢失列表中。若损伤跨帧时,则将损伤初始点之后的当前帧的剩余宏块加入到当前帧的宏块丢失列表中。
以下是本发明的一个具体实施例,其中的编号为1-82的视频数据包为在网络中传输的一组传输流序列,具体的已经按照图3所示的实施例在图像条的描述信息中添加了帧类型累计值和图像序号,本实施例中的I帧仅包括帧序号为零的情况,其中的帧类型累计值仅用于表征图像组内P帧的累计值,具体的视频数据包可以如表1所示:
表1
上述表1中,其中每个单元的第一行给出了视频数据包的编号和视频数据帧的帧类型,该视频数据帧的帧类型可以从视频数据帧帧头信息中获取,具体的该视频数据帧帧头信息可以从承载该视频数据帧的第一个视频数据包中获取,另外还给出了每个视频数据包所包含的图像条的信息,例如第一个视频数据包包括有图像条S(1,0,1,1)、S(2,0,1,1)和S(3,0,1,1),其中第一位表示的是图像条序号、第二位表示的是视频数据帧在图像组中的序号,即帧序号,该帧序号是从视频数据帧帧头信息中获取,第三位表示帧类型累计值,第四位表示图像组序号。
在网络中的设置的一个视频传输质量监测设备监测到的视频数据包的接收情况如表2所示,其中在实验过程中施加了1%的丢包和40ms抖动,而其中编号为4、9、14、17、18、21、24、45、46、47、71、75的视频数据包丢失,其中接收时间的单位为ms。
编号 | 接收时间 | 编号 | 接收时间 | 编号 | 接收时间 | 编号 | 接收时间 |
1 | 0 | 21 | - | 41 | 501.9 | 61 | 739.8 |
2 | 10.8 | 22 | 295.1 | 42 | 512.7 | 62 | 750.7 |
3 | 21.6 | 23 | 305.9 | 43 | 523.6 | 63 | 761.4 |
4 | - | 24 | - | 44 | 534.4 | 64 | 772.3 |
5 | 72.4 | 25 | 327.5 | 45 | - | 65 | 783.1 |
6 | 83.2 | 26 | 338.4 | 46 | - | 66 | 793.9 |
7 | 95.1 | 27 | 349.2 | 47 | - | 67 | 804.7 |
8 | 106.0 | 28 | 360.1 | 48 | 595.2 | 68 | 815.4 |
9 | - | 29 | 371.0 | 49 | 607.1 | 69 | 826.3 |
10 | 116.8 | 30 | 381.8 | 50 | 618.9 | 70 | 837.1 |
11 | 127.6 | 31 | 393.6 | 51 | 629.7 | 71 | - |
12 | 138.4 | 32 | 404.5 | 52 | 640.4 | 72 | 889.1 |
13 | 150.2 | 33 | 415.3 | 53 | 651.2 | 73 | 900.1 |
14 | - | 34 | 426.2 | 54 | 663.0 | 74 | 910.9 |
15 | 200.1 | 35 | 437.1 | 55 | 674.8 | 75 | - |
16 | 210.9 | 36 | 447.9 | 56 | 685.7 | 76 | 970.1 |
17 | - | 37 | 458.6 | 57 | 696.4 | 77 | 980.9 |
18 | - | 38 | 469.5 | 58 | 707.3 | 78 | 991.7 |
19 | 262.1 | 39 | 480.2 | 59 | 718.1 | 79 | 1002.3 |
20 | 273.0 | 40 | 491.1 | 60 | 729.0 | 80 | 1014.1 |
81 | 1023.1 | 82 | 1034.3 |
表2
在对传输流进行监测的过程中,首先获取编号为1的视频数据包,该视频数据包中包含了视频数据帧帧头信息,即帧类型、帧序号等信息,该视频数据帧帧头信息也可以看作是图像头起始标志位,从编号为1的视频数据包
中获取到帧类型值为1,即I帧,同时记录上述的帧类型和帧序号。
本实施例中首先对I帧进行损伤判断,依次提取每一个视频数据包中携带视频数据帧帧头信息,以及图像条的描述信息,并记录最后一个图像条的图像组序号,帧序号,图像条序号(也可称为图像条垂直位置),帧类型累计值,并记录指针偏移位置。
当发现紧随3号视频数据包到达的是5号视频数据包的时候,返回上一个指针偏移位置,首先从记录中读取信息为1组0号帧6号宏块行(即图像条),其所在视频数据帧的帧类型累计值为1,然后匹配每一个宏块的所有字段,并仅反解析它们的MBI,根据这些字段计算并记录损伤发生时最后一个有效宏块的坐标RE1,弹出指针偏移位置;
查找下一个含有图像条起始标志位(即图像条的描述信息)的视频数据包,该视频数据包的编号为5,对应的图像条是1组0帧的7号宏块行,其所在视频数据帧的帧类型累计值为1,记录当时的指针偏移位置,损伤前后的图像组序号均为1,帧序号均为0,说明是同一视频数据帧内的损伤,计算出7号宏块行的首宏块坐标作为损伤后有效数据段的起始坐标RS2,计算RS2与RE1的差得到此次的宏块丢失数目,计算当前帧内宏块的丢失比率IAP,并将RE1和RS2之间的宏块的坐标加入到CFL(当前帧的宏块丢失列表中);
依次提取每一个视频数据包中携带的视频数据帧帧头信息,以及图像条的描述信息,并记录最后一个图像条的图像组序号,帧序号,图像条序号(也可称为图像条垂直位置),帧类型累计值,并记录指针偏移位置。
由于B帧为双向预测时间帧,对于B帧而言,若其之后的视频数据帧中发生丢失,也会对B帧造成影响,因此,本发明实施例中,对于检测到的B帧,先进行暂存,具体,当查找到编号为8的视频数据包时,若其中含有图像头起始标志位,可以从中解析出帧类型值为3,是B帧,将CFL的值均赋给SRPL,输出块状失真比率,并将CFL清空;当查找到编号为8的视频数据包中的第一个图像条起始标志位是1组1帧1号宏块行,且其所在帧的帧类型累计值为2,并记录指针偏移量,判断该图像条与上一个视频数据包中的图像条不属同一视频数据帧,追加到指针偏移列表尾部;
继续查找下一个含有图像头起始标志位的视频数据包,该视频数据包的编号是11,解析出帧类型值为3,是B帧,另外还可以查找到11号视频数据包的第一个图像条起始标志位是1组2帧1号宏块行,其所在视频数据帧的帧类型累计值为3,并记录指针偏移量,判断该图像条与上一个视频数据包中的图像条不属同一视频数据帧,追加到指针偏移列表尾部,前后2帧的帧序号连续,说明在此期间没有丢失视频数据帧帧头信息。上述编号为8和编号为11的视频数据包所承载的B帧被暂存。
由于编号为14、18、21和24的视频数据包丢失,在查找到下一个含有视频数据帧帧头信息的视频数据包时,该视频数据包的编号是28,解析出其帧类型值为3,是B帧;
找到28号包的第一个图像条起始标志位是1组7帧1号宏块行,其所在视频数据帧的帧类型累计值为10,记录指针偏移量,判断该图像条与上一图像条(编号为11的视频数据包的中第一个图像条)不属同一帧,追加到指针偏移列表尾部,前后两个视频数据帧的图像组序号相同,但帧序号不连续,说明出现丢帧现象;
另外,根据上次获得的帧序号,即编号为11的视频数据包中的帧序号为2,而从编号为28的视频数据包中获取的帧序号为7,说明中间间隔视频数据帧总数为4,即实际丢帧总数为4,而帧类型累计值的增加值为6(除去当前编号为28的B帧引起的帧类型累计值的增加值),而其中B帧的引起的帧类型累计值的增加值为1,P帧引起的帧类型累计值的增加值为2,需要2个P帧才能够使得帧类型累计值的增加值为6,由此可以得出,其中丢失的4个视频数据帧中包含有2个P帧。
另外,根据接收到编号为11的视频数据包和编号为28的视频数据包的时间差,以及帧速率获取理论丢帧总数,该理论丢帧总数包括了因时间抖动引起的屏幕冷冻时间,本实施例中帧速率为25帧/s,即25帧/1000ms,计算得到理论丢帧总数LF=[(360.1ms-127.6ms)/(1000ms/25帧)]=5,而实际的丢帧总数为4,另外根据时间可以看出在接收编号为15的视频数据包和编号为19的视频数据包时出现抖动现象,造成屏幕冷冻时间延长1帧。
指针偏移列表的长度大于1(暂存未判断的B帧数据),将SRPL的值赋给PRPL,将SRPL清空,将所有丢失的视频数据帧的宏块信息都加入到SRPL中;
通过上述步骤的丢帧判断,确认为丢失了2个以上的P帧的情况。
以下给出对B帧损伤进行测评的具体实施方式,首先从指针偏移列表中提取第一个值,返回到缓冲区该视频数据包的位置,即编号为8的视频数据包中首个图像条起始标志位,因为SRPL和PRPL均不为空,顺序解析该图像条携带的比特位,匹配出每一个宏块的所有字段,并仅反解析出宏块地址增量、宏块预测类型,若宏块地址增量大于1,首先取前一宏块的宏块预测类型和矢量位移,计算出偏移增量区间的所有跳过宏块的参考宏块的地址,判断该地址是否在SRPL或者PRPL中出现,计算受其影响,本帧内间接丢失宏块的百分比,然后再根据宏块预测类型,提取出本宏块相应方向的矢量位移,看其参考宏块是否出现在SRPL或者PRPL中,计算受其影响,本帧内间接丢失宏块的百分比。直到视频数据包携带的最后一个不完整的有效宏块,均重复上述操作,并记录最后一个宏块的坐标。
当发现随编号为8的视频数据包达到的是编号为10的视频数据包后,将编号为8的视频数据包的最后一个宏块的地址赋给RE2。
查找下一个含有图像条起始标志位的视频数据包,该视频数据包的编号为10,其携带的第一个图像条是1组1帧的8号宏块行,其所在帧的帧类型累计值为2,并记录当时的偏移位置,损伤前后的图像组序号均为1,帧序号均为1,说明是同一帧内的损伤,计算出8号宏块行的首宏块坐标作为损伤后有效数据段的起始坐标RS3,计算RS3与RE2的差得到宏块丢失数目,计算当前帧内宏块的丢失比率IAP,并将RE2和RS3之间的宏块的坐标加入到CFL(当前帧宏块丢失列表中)。
从8号宏块行携带的首个比特位开始获取该视频数据包接下来携带的所有宏块的参考宏块的坐标,判断是否在SRPL或者PRPL中出现,将出现的参考宏块对应的宏块的坐标加入到CFL中。
查找到编号为11的视频数据包中含有图像头起始标志位,说明上一视频数据帧的评测结束,输出块状失真结果,清空CFL;
而指针偏移列表的长度大于1,还有未评判的B帧,从指针偏移列表中获得下一个待测记录的偏移位置,循环提取该位置后的每一个视频数据包,对当前视频数据包携带的每一个编码宏块和跳跃宏块执行对编号为8的视频数据包所述的帧间损伤判断;
当发现编号为13的视频数据包后是编号为15的视频数据包达到的时候,查找编号为15的视频数据包携带的第一个图像条是1组3帧5号宏块行,前后2帧的图像组序号相同,帧序号不同,说明上一暂存B帧评测结束,输出块状失真结果,清空CFL。
随后再进行B帧的暂存,以及寻找其后向参考P帧。具体的,指针偏移列表不大于1,连续丢失P帧数目LP大于1,将SRPL和PRPL清空,并将所有宏块都加入到SRPL中;
从指针偏移列表中提取下一个偏移位置,并不弹出该值,从该位置后查找下一个含有图像头起始标志位的视频数据包,即编号为31号的视频数据包,解析出其帧类型值为3,是B帧;查找到编号为31的视频数据包的第一个图像条起始标志位是1组8帧1号宏块行,其所在视频数据帧的帧类型累计值为10,并记录指针偏移量,判断该图像条与上一图像条不属同一视频数据帧,追加到指针偏移列表尾部。
如下是针对P帧进行损伤评判的具体实施方式,具体的查找下一个含有图像头起始标志位的视频数据包,该视频数据包的编号是34号,解析出其视频数据帧的帧类型值为2,是P帧;查找到34号视频数据包的第一个图像条起始标志位是1组9帧1号宏块行,其所在的视频数据帧的帧类型累计值为12,记录指针偏移量;因为SRPL不为空,所以从该视频数据包携带的比特位中顺序匹配出宏块的各字段,仅反解析出宏块地址增量、宏块预测类型(部分帧内块),并根据宏块预测类型解析相应方向的矢量位移(若宏块地址增量大于1,该值直接取0),计算出参考宏块的坐标,判断是否在SRPL中出现,计算受其影响,本帧内间接丢失宏块的百分比将出现的参考坐标对应的宏块的坐标加到CFL中;
循环提取后续的每一个视频数据包,若当前视频数据包不含有图像头起始标志位,则将该视频数据包与前一个视频数据包的尾部拼接,继续对每一个编码宏块和跳跃宏块执行如对编号为34的视频数据包所进行的帧间损伤判断,将受影响宏块写入到CFL中;
查找下一个含有图像头起始标志位的网络包,该包是38号包,记录偏移位置,将SRPL赋给PRPL,将CFL赋给SRPL,将CFL块状失真结果输出后清空;
以下是对B帧损伤进行评判,具体的,此时指针偏移列表的元素个数大于1,提取指针偏移列表的首个元素,返回到编号为28的视频数据包的1号宏块条所在位置,提取出该视频数据包携带的第一个图像条是1组7帧1号宏块行,对该视频数据包携带的每一个编码宏块和跳跃宏块执行如对编号为8的视频数据包所执行的帧间损伤判断;
循环提取后续的每一个视频数据包,若当前视频数据包不含有图像头起始标志位,则将该视频数据包与前一个视频数据包尾部拼接,继续对每一个编码宏块和跳跃宏块执行如对编号为8的视频数据包所执行的帧间损伤判断,将受影响宏块写入到CFL中;
查找到31号包含有图像头起始标志位,输出块状失真结果,清空CFL;
此时,指针偏移列表的元素个数大于1,提取指针偏移列表的首个元素,返回到编号为31的视频数据包的1号宏块条所在位置,提取出该视频数据包携带的第一个图像条是1组8帧1号宏块行,对该视频数据包携带的每一个编码宏块和跳跃宏块执行如对编号为8的视频数据包所进行的帧间损伤判断;
循环提取后续的每一个视频数据包,若当前视频数据包不含有图像头起始标志位,则将该视频数据包与前一个视频数据包尾部拼接,继续对每一个编码宏块和跳跃宏块执行如对编号为8的视频数据包所进行的帧间损伤判断,将受影响宏块写入到CFL中;
查找到编号为34的视频数据包含有图像头起始标志位,输出块状失真结果,清空CFL。
如下给出I帧损伤评判的具体实施例,具体的,指针偏移列表的元素个数不大于1,获得出首个元素指向的位置,不弹出该元素,返回到编号为38的视频数据包,其携带的视频数据帧帧头信息中的帧类型值为1,是I帧且帧序号为0,为新的图像组起始,将SRPL和PRPL清空;
循环提取当前位置后的每一个视频数据包,查找并记录当前视频数据包的最后一个图像条的图像组序号、帧序号、图像条垂直位置和所在帧的帧类型累加值,并记录当时的指针偏移位置;
当发现编号为44的视频数据包后是编号为48的视频数据包的时候,返回上一个指针偏移位置匹配每一个宏块的字段,并仅反解析宏块地址增量,计算出并记录损伤发生时最后一个有效宏块的坐标RE3,弹出指针偏移位置;
查找到编号为48的视频数据包含有图像头起始标志位,解析出其帧类型值为2,是P帧,而首个图像条是2组2帧1号宏块行,故I帧的尾部可能出现问题,通过其水平分辨率、垂直分辨率、宏块尺寸计算出该视频数据帧的最后一个宏块的坐标RS4,计算RS4与RE3的差得到此次的宏块丢失数目(计算结果为0),计算当前帧内宏块的丢失比率IAP。将CFL的值赋给SRPL,块状失真结果输出,CFL清空。
如下进行丢帧总数的判断,首先根据帧序号判断编号为44的视频数据包中承载的I帧的帧序号为0,而编号为48的视频数据包中承载的P帧的帧序号为2,中间存在一个视频数据帧,而对于帧类型累计值,除去由P帧引起的帧类型累计值增加2外,帧类型累计值仅增加1,因此,中间丢失的视频数据帧为B帧,另外,根据接收两个视频数据包以及帧速率(40ms/帧)也可以进行计算丢失帧总数(Loss Frame,简称:LF),即LF=[(595.2-534.4)/40]=1,理论丢帧总数为1,没有发送抖动。
由于SRPL为空,所以在未发生视频数据包丢失的情况下只查找图像条起始标志位;循环提取当前位置后的每一个视频数据包,查找并记录当前视频数据包的最后一个图像条的图像组序号、帧序号、图像条垂直位置、所在帧的帧类型累计值,并记录当时的指针偏移位置。
对于查找到的B帧进行暂存,并查找后续的P帧,查找到编号为52的视频数据包包含有图像头起始标志位,将SRPL的值赋给PRPL,将CFL的值赋给SRPL,输出块状失真结果,将CFL清空;
52号视频数据包的视频数据帧帧头信息中携带的帧类型值是3,是B帧;
找到52号包的第一个图像条起始标志位是2组3帧1号宏块行,其所在帧的帧类型累计值为5,并记录指针偏移量,判断该图像条与上一图像条不属同一视频数据帧,追加到指针偏移列表尾部;
查找下一个含有图像头起始标志位的视频数据包,其编号是55,解析其帧类型值是3,是B帧;
该视频数据包的第一个图像条起始标志位是2组4帧1号宏块行,其所在视频数据帧的帧类型累计值为6,并记录指针偏移量,判断该图像条与上一图像条不属同一视频数据帧,追加到指针偏移列表尾部;
查找下一个包含有图像头起始标志位的视频数据包,其编号为58,解析其帧类型值是3,是B帧;
该视频数据包的第一个图像条起始标志位是2组5帧1号宏块行,其所在视频数据帧的帧类型累计值为7,并记录指针偏移量,判断该图像条与上一图像条不属同一视频数据帧,追加到指针偏移列表尾部;
查找下一个含有图像头起始标志位的视频数据包,其编号是61,解析其帧类型值是2,是P帧;
由于SRPL为空,所以在未发生视频数据包丢失的情况下只查找图像条起始标志位,而不需要进行P帧的损伤评判;
循环提取当前位置后的每一个视频数据包,查找并记录当前视频数据包的最后一个图像条的图像组序号、帧序号、图像条垂直位置、所在帧的帧类型累计值,并记录当时的指针偏移位置;
指针偏移列表的元素个数大于1,有暂存的B帧需要进行评判,因此提取指针偏移列表的首个元素,返回到编号52的视频数据包的1号宏块条所在位置,由于SRPL和PRPL均为空,所以在未发生视频数据包丢失的情况下只查找图像条起始标志位;
循环提取当前位置后的每一个视频数据包,查找并记录当前视频数据包的最后一个图像条的图像组序号、帧序号、图像条垂直位置、所在视频数据帧的帧类型累计值,并记录当时的指针偏移位置;
查找到编号为55的视频数据包中含有图像头起始标志位,输出块状失真结果,将CFL清空。
提取指针偏移列表的下一个个元素,返回到编号为55的视频数据包的1号宏块条所在位置,由于SRPL和PRPL均为空,所以在未发生视频数据包丢失的情况下只找图像条起始标志位;
循环提取当前位置后的每一个视频数据包,查找并记录当前视频数据包的最后一个图像条的图像组序号、帧序号、图像条垂直位置、所在帧的帧类型累计值,并记录当时的指针偏移位置;
查找到58号视频数据包含有图像头起始标志位,输出块状失真结果,将CFL清空;
提取指针偏移列表的下一个元素,返回到编号为58号视频数据包的1号宏块条所在位置,由于SRPL和PRPL均为空,所以在未发生视频数据包丢失的情况下只查找图像条起始标志位;
循环提取当前位置后的每一个视频数据包,查找并记录当前视频数据包的最后一个图像条的图像组序号、帧序号、图像条垂直位置、所在帧的帧类型累计值,并记录当时的指针偏移位置;
查找到编号为61的视频数据包含有图像头起始标志位,输出块状失真结果,将CFL清空;
当指针偏移列表的元素个数不大于1,继续获取B帧并暂存,获得指针偏移列表的首个元素指向的位置,不弹出元素,查找到编号为65的视频数据包含有图像头起始标志位,解析其帧类型值是3,是B帧;
找到65号视频数据包的第一个图像条起始标志位是2组7帧1号宏块行,其所在帧的为10,并记录指针偏移量,判断该图像条与上一图像条不属同一视频数据帧,追加到指针偏移列表尾部;
查找下一个含有图像头起始标志位的视频数据包,其编号是68,解析其帧类型值是3,是B帧;
找到68号视频数据包的第一个图像条起始标志位是2组7帧1号宏块行,其所在帧的帧类型累计值为11,并记录指针偏移量,判断该图像条与上一图像条不属同一帧,追加到指针偏移列表尾部;
查找下一个含有图像头起始标志位的视频数据包,其编号是81,解析其帧类型值是3,是B帧;
找到81号视频数据包的第一个图像条起始标志位是3组1帧1号宏块行,其所在帧的帧类型累计值为2,并记录指针偏移量,判断该图像条与上一图像条不属同一帧,追加到指针偏移列表尾部;
由于前后视频数据帧的图像组序号不相同,且新的视频数据帧不是I帧,判I帧丢失,并判定前一图像组有P帧丢失;
对于组序号为3的图像组,其中B帧引起的帧类型累计值的增加值为1,因此丢失的视频数据帧引起的帧类型增加值也为1,非P帧丢失;
另外,根据前后接收到视频数据包的时间差,以及帧速率可以计算得到理论丢帧总数LF=[(1023.1-815.4)/40]=5,然而实际丢失的视频数据帧为3号图像组的一个I帧和2号图像组的一个P帧,由于编号为72和编号为76的视频数据包的抖动带来了3帧的冷冻时间,将所有宏块的坐标都填入到CFL中,将SRPL赋给PRPL,将CFL赋给SRPL,输出块状失真结果,清空CFL。
由于指针偏移列表的元素个数大于1,需要进行针对B帧的损伤评判,提取指针偏移列表的首个元素,返回编号为65号的视频数据包的1号宏块条所在位置,由于PRPL为空,SRPL不为空,顺序解析该图像条携带的比特位,匹配出每一个宏块的所有字段,并仅反解析出宏块地址增量、宏块预测类型,若宏块地址增量宏块地址增量大于1,首先取前一宏块的预测类型和矢量位移,计算出偏移增量区间的所有跳跃宏块的参考宏块的地址,判断该地址是否在SRPL中出现,计算受其影响,本帧内间接丢失宏块的百分比,然后当宏块预测类型为双向参考或后向参考时,提取出本宏块的后向矢量位移,看其参考宏块是否出现在SRPL中,计算受其影响,本帧内间接丢失宏块的百分比。直到该视频数据包携带的最后一个不完整的有效宏块,均重复上述操作,并记录最后一个宏块的地址(Macro block address,简称:MBA)。
循环提取后续的每一个视频数据包,若当前视频数据包不含有图像头起始标志位,则将该视频数据包与前一个视频数据包尾部拼接,继续对每一个编码宏块和跳跃宏块执行如对编号为65的视频数据包所执行的帧间损伤判断,将受影响宏块写入到CFL中;
查找到编号为68的视频数据包含有图像头起始标志,将块状失真结果输出,清空CFL。
提取指针偏移列表的下一个元素,返回到编号为68的视频数据包的1号宏块条所在位置,按照针对编号为65的视频数据包的方法评测编号为68的视频数据包携带的每一个编码宏块和跳跃宏块受参考宏块的影响;
循环提取后续的每一个视频数据包,若当前视频数据包不含有图像头起始标志位,则将该视频数据包与前一个视频数据包尾部拼接,继续对每一个编码宏块和跳跃宏块执行如对编号为65的视频数据包所执行的帧间损伤判断,将受影响宏块写入到CFL中;
发现随编号为70的视频数据包到达的是编号为72的视频数据包后,查找到编号为72的视频数据包携带的第一个图像条是2组9帧5号图像条,前后两个视频数据包不在同一视频数据帧内,将编号为70的视频数据包最后一个宏块坐标赋给RE4,计算出该视频数据帧最后一个宏块的坐标赋给RS5,计算RS5与RE4的差,结果为0,将块状失真结果输出,清空CFL。
表3描述了各视频数据帧的损伤明细:内部损伤率(Intra-injuryPercent,简称:IAP)段描述各视频数据帧中直接丢失宏块占帧宏块总数的百分比;前向外部损伤率(Inter-injury,简称:IEP代表受前向参考宏块影响,本帧间接丢失宏块的百分比;后向IEP代表受后向参考宏块影响,本帧间接丢失宏块的百分比;双向IEP代表同时受前向参考宏块和后向参考宏块影响,本帧间接丢失宏块的百分比;总比例是指上述该视频数据帧在显示屏上实际宏块丢失比例,等于上述四项之和;未受影响的帧间块是指帧间及其基准宏块都未丢失的宏块的比例;未丢失的帧内块反应了图像移动对损伤传播的阻断力度。
表3
本发明上述具体实施例是以仅存在帧序号为零的I帧为例进行说明,若存在帧序号非零的I帧,由于帧序号累计值计算式G=A+B+mC+mD中,帧序号非零的I帧和P帧的系数相同,参照上述具体实施例,容易得到丢失的帧序号非零的I帧和P帧的数目和。而在计算帧内宏块损伤分析时,由于非零的I帧也是前向预测模式帧,可以参考上述实施例中对P帧的宏块损伤分析方式进行。
本发明实施例孩提供了一种视频数据传输处理装置,图8为本发明实施例中视频数据传输处理装置的结构示意图,如图8所示,该装置包括第一获取模块11、帧处理模块12和第一发送模块13,其中第一获取模块11用于依次获取承载有视频数据帧的视频数据包,所述视频数据帧包括I帧、B帧和P帧;帧处理模块12用于在获取的所述视频数据包的图像条的描述信息中添加图像组序号和帧类型累计值,所述帧类型累计值用于表征图像组内包括当前视频数据帧的累计P帧的数目,或所述帧类型累计值用于表征图像组内包括当前视频数据帧的累计P帧和累计帧序号非零的I帧的数目之和,所述图像组为起始于帧序号为零的I帧的一组视频数据帧;第一发送模块13用于通过缓存队列发送所述视频数据包。
本发明上述实施例提供的技术方案,通过在视频数据包的图像条的描述信息中添加图像组序号和帧类型累计值,使得检测视频传输丢包的设备在接收视频数据包,并发生视频数据包丢失时,根据帧序号以及在图像条的描述信息中携带的帧类型累加值,能够获取实际丢失的P帧数目,以更加准确的反映实际丢包对视频画面质量的影响,能够提高对视频传输质量评价的准确性。
本发明的具体实施例中,其中的帧处理模块11具体用于在所述视频数据包的图像条的描述信息的扩展字段中添加图像组序号和帧类型累计值,或在所述视频数据包的图像条的描述信息的帧序号字段中写入图像组序号和帧类型累计值。
具体的,在所述帧类型累计值用于表征图像组内包括当前视频数据帧的累计P帧的数目时,帧处理模块通过如下方式获取帧类型累计值:G=A+B+nC,其中,G表示帧类型累计值,即可以通过获取图像组内包括当前视频数据帧的累计帧序号为零的I帧的数目A,获取图像组内包括当前视频数据帧的累计B帧的数目B,获取表示图像组内包括当前视频数据帧的累计P帧的数目C,n为非1的正整数,最后根据上述的公式计算即可得到最后的帧类型累计值。
在所述帧类型累计值用于表征图像组内包括当前视频数据帧的累计P帧和累计帧序号非零的I帧的数目之和时,帧处理模块帧通过如下方式获取类型累计值:G=A+B+mC+mD,其中,G表示帧类型累计值,即可以通过获取图像组内包括当前视频数据帧的累计帧序号为零的I帧的数目A,获取图像组内包括当前视频数据帧的累计B帧的数目B,获取图像组内包括当前视频数据帧的累计P帧的数目C,获取图像组内包括当前视频数据帧的累计帧序号为非零的I帧的数目D,m为非零的正整数,最后根据上述的公式计算即可得到最后的帧类型累计值。上述帧处理模块11执行的步骤对应图1所示的步骤102中帧类型累计值的具体获取方式。
进一步的,本发明上述实施例中,其中的第一发送模块可以进行发送速率调整后在发送视频数据帧,即上述的第一发送模块包括发送速率调整单元和发送单元,其中的发送速率调整单元用于调整包括所述视频数据包的媒体流码率;发送单元用于通过缓存队列按照预先设定的发送速率发送包括所述视频数据包的媒体流。
本发明实施例还提供了一种检测视频传输丢包的装置,图9为本发明实施例中检测视频传输丢包的装置的结构示意图一,如图9所示,该装置包括第一接收模块21、第二获取模块22和第一检测视频传输丢包的模块23,其中的第一接收模块21用于按照时间顺序接收承载有视频数据帧的视频数据包,所述视频数据帧包括I帧、B帧和P帧;第二获取模块22用于从携带有视频数据帧帧头信息的视频数据包中获取帧序号,以及从携带图像条的描述信息的视频数据包中获取图像组序号和帧类型累计值,所述帧类型累计值用于表征图像组内包括当前视频数据帧的累计P帧的数目,或所述帧类型累计值用于表征图像组内包括当前视频数据帧的累计P帧和累计帧序号非零的I帧的数目之和,所述图像组为起始于帧序号为零的I帧的一组视频数据帧;第一检测视频传输丢包的模块23用于在发生视频数据包丢失,且发生视频数据包丢失前获得的图像组序号与发生视频数据包丢失后获得的图像组序号一致,发生视频数据包丢失前最后获得的帧序号和视频数据包丢失后最先获得的帧序号发生不一致时,根据发生视频数据包丢失前最后获得的帧序号和对应的帧类型累计值,以及发生视频数据包丢失后最先获得的帧序号和对应的帧类型累计值,获取P帧丢失数,或者是获取P帧与帧序号非零的I帧的丢失数之和。
本发明实施例提供的技术方案,通过接收视频数据包,并可以从所述视频数据包的图像条的描述信息中获取图像组序号和帧类型累计值,如果发生视频数据包丢失,则根据发生视频数据包丢失前后的帧序号和帧类型累计值判定丢失的类型,在发生视频数据包丢失前后的帧类型累计值不一致时,确认是发生了跨帧丢失,因此可以根据帧序号和图像条的描述信息中携带的帧类型累计值获取P帧丢失数,或者是P帧与帧序号非零的I帧的丢失数之和,能够更加准确的反映实际丢包对视频画面质量的影响,提高对视频传输质量评价的准确性。
如图10所示,本发明上述实施例中,其中第二获取模块22还用于从携带有视频数据帧帧头的视频数据包中获取视频数据帧的帧速率,所述装置还可以包括时间记录模块24、第三获取模块25和第二检测视频传输丢包的模块26,其中时间记录模块24用于依次记录接收承载有视频数据帧的视频数据包的接收时间;第三获取模块25用于在发生视频数据包丢失时,根据发生视频数据包丢失前最后获得的帧序号和发生视频数据包丢失后最先获得的帧序号获取实际丢失视频数据帧数目;根据记录的发生视频数据包丢失前最后接收携带有视频数据帧帧头的视频数据包的接收时间,以及发生视频数据包丢失后最先接收携带有视频数据帧帧头的视频数据包的接收时间获取丢帧时间差,或根据记录的发生视频数据包丢失前接收承载最后一个可解析视频数据帧的最后一个视频数据包的时间,以及发生视频数据包丢失后最先接收携带有视频数据帧帧头的视频数据包的时间获取丢帧时间差;第二检测视频传输丢包的模块26用于根据上述任一方式获取的丢帧时间差以及所述帧速率获取理论丢失视频数据帧数目,以及根据所述理论丢失视频数据帧数目和实际丢失视频数据帧数目的差值获取屏幕冷冻时间。
另外,如图11所示,在本发明上述实施例中,其中的第二获取模块22具体用于获取各个视频数据包中最后一个图像条的描述信息中的图像组序号、帧类型累计值和图像条序号,所述装置还包括第三检测视频传输丢包的模块27,该模块用于在发生视频数据包丢失,且确定发生视频数据包丢失前最后获得的图像组序号与发生视频数据包丢失后最先获得的图像组序号一致,发生视频数据包丢失前最后获得的帧类型累计值与发生视频数据包丢失后最先获得的帧类型累计值一致时,获取第一帧内宏块丢失信息,所述第一帧内宏块丢失信息包括发生视频数据包丢失前最后获得的图像条序号对应的图像条在内,到发送视频数据包丢失后最先获取的图像条序号对应的图像条之前的所有图像条的宏块的信息;或,在发生视频数据包丢失,且确定发生视频数据包丢失前最后获得的图像组序号与发生视频数据包丢失后最先获得的图像组序号一致,发生视频数据包丢失前最后获得的帧类型累计值与发生视频数据包丢失后最先获得的帧类型累计值不一致时,获取第二帧内宏块丢失信息,所述第二帧内宏块丢失信息包括发生视频数据包丢失前最后获得的图像条序号对应的图像条在内,以及之后所有图像条的宏块的信息。
如图12所示,本发明上述实施例中,其中的检测视频传输丢包的装置还可以进一步包括丢失宏块列表28和第四检测视频传输丢包的模块29,其中丢失宏块列表28用于存储所述第一帧内宏块丢失信息,所述第二帧内宏块丢失和实际丢失视频数据帧所包含的宏块信息;第四检测视频传输丢包的模块29用于根据各个视频数据帧内未丢失宏块的地址相关信息判断所述未丢失宏块的基准宏块是否是位于宏块丢失列表中,如果是则确认所述未丢失宏块为丢失宏块,且将所述丢失宏块信息存储于宏块丢失列表中。
本发明实施例还提供了一种检测视频传输丢包的系统,包括上述的检测视频传输丢包的装置。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (13)
1.一种检测视频传输丢包的方法,其特征在于,包括:
接收承载有视频数据帧的视频数据包,所述视频数据帧包括I帧、B帧和P帧;
从携带有视频数据帧帧头信息的视频数据包中获取帧序号,以及从携带图像条的描述信息的视频数据包中获取图像组序号和帧类型累计值,所述帧类型累计值用于表征图像组内包括当前视频数据帧的累计P帧的数目,或所述帧类型累计值用于表征图像组内包括当前视频数据帧的累计P帧和累计帧序号非零的I帧的数目之和,所述图像组为起始于帧序号为零的I帧的一组视频数据帧;
在发生视频数据包丢失,且发生视频数据包丢失前获得的图像组序号与发生视频数据包丢失后获得的图像组序号一致,发生视频数据包丢失前最后获得的帧序号和视频数据包丢失后最先获得的帧序号发生不一致时,根据发生视频数据包丢失前最后获得的帧序号和对应的帧类型累计值,以及发生视频数据包丢失后最先获得的帧序号和对应的帧类型累计值,获取P帧丢失数,或者是获取P帧与帧序号非零的I帧的丢失数之和。
2.根据权利要求1所述的检测视频传输丢包的方法,其特征在于,所述图像组序号和帧类型累计值携带在所述视频数据包的图像条的描述信息的扩展字段中,或所述图像组序号和帧类型累计值携带在所述视频数据包的图像条的描述信息的帧序号字段中。
3.根据权利要求1所述的检测视频传输丢包的方法,其特征在于,在所述帧类型累计值用于表征图像组内包括当前视频数据帧的累计P帧的数目时,所述帧类型累计值由视频数据包发送端获取图像组内包括当前视频数据帧的累计帧序号为零的I帧的数目A,图像组内包括当前视频数据帧的累计B帧的数目B以及图像组内包括当前视频数据帧的累计P帧的数目C,并根据公式G=A+B+nC计算得出,其中G表示帧类型累计值,n为大于1的整数。
4.根据权利要求1所述的检测视频传输丢包的方法,其特征在于,在所述帧类型累计值用于表征图像组内包括当前视频数据帧的累计P帧和累计帧序号非零的I帧的数目之和时,所述帧类型累计值由视频数据包发送端获取图像组内包括当前视频数据帧的累计帧序号为零的I帧的数目A,获取图像组内包括当前视频数据帧的累计B帧的数目B,获取图像组内包括当前视频数据帧的累计P帧的数目C,以及获取图像组内包括当前视频数据帧的累计帧序号为非零的I帧的数目D,并根据公式G=A+B+mC+mD计算得出,其中G表示帧类型累计值,m为大于1的整数。
5.根据权利要求1-4任一所述的检测视频传输丢包的方法,其特征在于,还包括:
依次记录接收承载有视频数据帧的视频数据包的接收时间,并从携带有视频数据帧帧头的视频数据包中获取视频数据帧的帧速率;
在发生视频数据包丢失时,根据发生视频数据包丢失前最后获得的帧序号和发生视频数据包丢失后最先获得的帧序号获取实际丢失视频数据帧数目;
根据记录的发生视频数据包丢失前最后接收携带有视频数据帧帧头的视频数据包的接收时间,以及发生视频数据包丢失后最先接收携带有视频数据帧帧头的视频数据包的接收时间获取丢帧时间差,或根据记录的发生视频数据包丢失前接收承载最后一个可解析视频数据帧的最后一个视频数据包的时间,以及发生视频数据包丢失后最先接收携带有视频数据帧帧头的视频数据包的时间获取丢帧时间差;
根据获取的丢帧时间差以及所述帧速率获取理论丢失视频数据帧数目;
根据所述理论丢失视频数据帧数目和实际丢失视频数据帧数目的差值获取屏幕冷冻时间。
6.根据权利要求1-4任一所述的检测视频传输丢包的方法,其特征在于,还包括:
获取各个视频数据包中最后一个图像条的描述信息中的图像组序号、帧类型累计值和图像条序号;
在发生视频数据包丢失,且确定发生视频数据包丢失前最后获得的图像组序号与发生视频数据包丢失后最先获得的图像组序号一致,发生视频数据包丢失前最后获得的帧类型累计值与发生视频数据包丢失后最先获得的帧类型累计值一致时,获取第一帧内宏块丢失信息,所述第一帧内宏块丢失信息包括发生视频数据包丢失前最后获得的图像条序号对应的图像条在内,到发生视频数据包丢失后最先获取的图像条序号对应的图像条之前的所有图像条的宏块的信息;或,
在发生视频数据包丢失,且确定发生视频数据包丢失前最后获得的图像组序号与发生视频数据包丢失后最先获得的图像组序号一致,发生视频数据包丢失前最后获得的帧类型累计值与发生视频数据包丢失后最先获得的帧类型累计值不一致时,获取第二帧内宏块丢失信息,所述第二帧内宏块丢失信息包括发生视频数据包丢失前最后获得的图像条序号对应的图像条在内,以及之后所有图像条的宏块的信息。
7.根据权利要求6所述的检测视频传输丢包的方法,其特征在于,还包括:
将所述第一帧内宏块丢失信息、所述第二帧内宏块丢失信息和实际丢失视频数据帧所包含的宏块信息存储到宏块丢失列表中;
根据各个视频数据帧内未丢失宏块的地址相关信息判断所述未丢失宏块的基准宏块是否是位于宏块丢失列表中,如果是则确认所述未丢失宏块为丢失宏块,且将所述丢失宏块信息存储于宏块丢失列表中。
8.根据权利要求7所述的检测视频传输丢包的方法,其特征在于,所述宏块丢失列表包括当前帧宏块丢失列表,前向宏块丢失列表和后向宏块丢失列表,所述根据各个视频数据帧内未丢失宏块的地址相关信息判断所述未丢失宏块的基准宏块是否是位于宏块丢失列表具体为:
根据I帧内未丢失的宏块的地址相关信息判断所述未丢失宏块的基准宏块是否是位于当前帧宏块丢失列表中;或,
根据P帧内未丢失的宏块的地址相关信息判断所述未丢失宏块的基准宏块是否是位于前向帧宏块丢失列表中;或,
根据B帧内未丢失的宏块的地址相关信息判断所述未丢失宏块的基准宏块是否是位于前向帧宏块丢失列表和后向帧宏块丢失列表中。
9.一种检测视频传输丢包的装置,其特征在于,包括:
第一接收模块,用于接收承载有视频数据帧的视频数据包,所述视频数据帧包括I帧、B帧和P帧;
第二获取模块,用于从携带有视频数据帧帧头信息的视频数据包中获取帧序号,以及从携带图像条的描述信息的视频数据包中获取图像组序号和帧类型累计值,所述帧类型累计值用于表征图像组内包括当前视频数据帧的累计P帧的数目,或所述帧类型累计值用于表征图像组内包括当前视频数据帧的累计P帧和累计帧序号非零的I帧的数目之和,所述图像组为起始于帧序号为零的I帧的一组视频数据帧;
第一检测视频传输丢包的模块,用于在发生视频数据包丢失,且发生视频数据包丢失前获得的图像组序号与发生视频数据包丢失后获得的图像组序号一致,发生视频数据包丢失前最后获得的帧序号和视频数据包丢失后最先获得的帧序号发生不一致时,根据发生视频数据包丢失前最后获得的帧序号和对应的帧类型累计值,以及发生视频数据包丢失后最先获得的帧序号和对应的帧类型累计值,获取P帧丢失数,或者是获取P帧与帧序号非零的I帧的丢失数之和。
10.根据权利要求9所述的检测视频传输丢包的装置,其特征在于,所述第二获取模块还用于从携带有视频数据帧帧头的视频数据包中获取视频数据帧的帧速率,所述装置还包括:
时间记录模块,用于依次记录接收承载有视频数据帧的视频数据包的接收时间;
第三获取模块,用于在发生视频数据包丢失时,根据发生视频数据包丢失前最后获得的帧序号和发生视频数据包丢失后最先获得的帧序号获取实际丢失视频数据帧数目;根据记录的发生视频数据包丢失前最后接收携带有视频数据帧帧头的视频数据包的接收时间,以及发生视频数据包丢失后最先接收携带有视频数据帧帧头的视频数据包的接收时间获取丢帧时间差,或根据记录的发生视频数据包丢失前接收承载最后一个可解析视频数据帧的最后一个视频数据包的时间,以及发生视频数据包丢失后最先接收携带有视频数据帧帧头的视频数据包的时间获取丢帧时间差;
第二检测视频传输丢包的模块,用于根据获取的丢帧时间差以及所述帧速率获取理论丢失视频数据帧数目,以及根据所述理论丢失视频数据帧数目和实际丢失视频数据帧数目的差值获取屏幕冷冻时间。
11.根据权利要求9所述的检测视频传输丢包的装置,其特征在于,所述第二获取模块具体用于获取各个视频数据包中最后一个图像条的描述信息中的图像组序号、帧类型累计值和图像条序号,所述装置还包括:
第三检测视频传输丢包的模块,用于在发生视频数据包丢失,且确定发生视频数据包丢失前最后获得的图像组序号与发生视频数据包丢失后最先获得的图像组序号一致,发生视频数据包丢失前最后获得的帧类型累计值与发生视频数据包丢失后最先获得的帧类型累计值一致时,获取第一帧内宏块丢失信息,所述第一帧内宏块丢失信息包括发生视频数据包丢失前最后获得的图像条序号对应的图像条在内,到发送视频数据包丢失后最先获取的图像条序号对应的图像条之前的所有图像条的宏块的信息;或,
在发生视频数据包丢失,且确定发生视频数据包丢失前最后获得的图像组序号与发生视频数据包丢失后最先获得的图像组序号一致,发生视频数据包丢失前最后获得的帧类型累计值与发生视频数据包丢失后最先获得的帧类型累计值不一致时,获取第二帧内宏块丢失信息,所述第二帧内宏块丢失信息包括发生视频数据包丢失前最后获得的图像条序号对应的图像条在内,以及之后所有图像条的宏块的信息。
12.根据权利要求11所述的检测视频传输丢包的装置,其特征在于,还包括:
丢失宏块列表,用于存储所述第一帧内宏块丢失信息,所述第二帧内宏块丢失信息和实际丢失视频数据帧所包含的宏块信息;
第四检测视频传输丢包的模块,用于根据各个视频数据帧内未丢失宏块的地址相关信息判断所述未丢失宏块的基准宏块是否是位于宏块丢失列表中,如果是则确认所述未丢失宏块为丢失宏块,且将所述丢失宏块信息存储于宏块丢失列表中。
13.一种检测视频传输丢包的系统,其特征在于,包括权利要求9-12任一所述的检测视频传输丢包的装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210053601.XA CN102611894B (zh) | 2012-03-02 | 2012-03-02 | 检测视频传输丢包的方法、装置和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210053601.XA CN102611894B (zh) | 2012-03-02 | 2012-03-02 | 检测视频传输丢包的方法、装置和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102611894A CN102611894A (zh) | 2012-07-25 |
CN102611894B true CN102611894B (zh) | 2015-01-07 |
Family
ID=46529016
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210053601.XA Active CN102611894B (zh) | 2012-03-02 | 2012-03-02 | 检测视频传输丢包的方法、装置和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102611894B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107404646B (zh) * | 2016-05-20 | 2019-11-29 | 华为技术有限公司 | 视频质量评估的方法、装置和头端设备 |
CN108632681B (zh) * | 2017-03-21 | 2020-04-03 | 华为技术有限公司 | 播放媒体流的方法、服务器及终端 |
CN107147947B (zh) * | 2017-05-11 | 2018-07-13 | 腾讯科技(深圳)有限公司 | 关键帧识别方法及装置 |
CN108711153B (zh) * | 2018-05-29 | 2021-09-14 | 北京小鸟科技股份有限公司 | 一种数字视频图像畸变检测方法 |
CN108810281B (zh) * | 2018-06-22 | 2020-12-11 | Oppo广东移动通信有限公司 | 丢帧补偿方法、装置、存储介质及终端 |
CN110913421B (zh) * | 2018-09-18 | 2021-10-29 | 大唐移动通信设备有限公司 | 一种语音包数量的确定方法及装置 |
CN109274554A (zh) * | 2018-09-28 | 2019-01-25 | 中国科学院长春光学精密机械与物理研究所 | 图像数据丢包测试方法、装置、设备以及可读存储介质 |
CN110636283B (zh) * | 2019-09-30 | 2021-10-15 | 普联技术有限公司 | 视频传输测试方法、装置及终端设备 |
CN113556505B (zh) * | 2020-04-23 | 2022-11-25 | 杭州海康威视数字技术股份有限公司 | 数据处理方法、装置、电子设备及可读存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1677547A1 (en) * | 2004-12-30 | 2006-07-05 | Microsoft Corporation | Use of frame caching to improve packet loss recovery |
CN101127918A (zh) * | 2007-09-25 | 2008-02-20 | 腾讯科技(深圳)有限公司 | 一种视频容错控制系统及方法 |
CN101155311A (zh) * | 2006-09-27 | 2008-04-02 | 中兴通讯股份有限公司 | 一种视频通信中的视频码流错误检测和处理方法 |
-
2012
- 2012-03-02 CN CN201210053601.XA patent/CN102611894B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1677547A1 (en) * | 2004-12-30 | 2006-07-05 | Microsoft Corporation | Use of frame caching to improve packet loss recovery |
CN101155311A (zh) * | 2006-09-27 | 2008-04-02 | 中兴通讯股份有限公司 | 一种视频通信中的视频码流错误检测和处理方法 |
CN101127918A (zh) * | 2007-09-25 | 2008-02-20 | 腾讯科技(深圳)有限公司 | 一种视频容错控制系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102611894A (zh) | 2012-07-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102611894B (zh) | 检测视频传输丢包的方法、装置和系统 | |
CN101800671B (zh) | 一种h.264视频文件的丢包检测方法 | |
CN102547300B (zh) | 帧类型的检测方法和装置 | |
CN101626506B (zh) | 一种视频码流的质量评估方法、装置及系统 | |
CN101068210B (zh) | 多媒体数据传输方法 | |
US8274911B2 (en) | Network monitoring system and path extracting method | |
US10447755B2 (en) | Video stream transmission over IP network | |
CN108965934B (zh) | 一种故障检测方法、监控设备及网络设备 | |
CN101800679A (zh) | 一种报文丢包检测方法及系统 | |
CN101227604A (zh) | 一种通过网络损伤度检测网络视频质量的方法 | |
CN103945213A (zh) | 一种视频流质量监测方法及装置 | |
CN107404646B (zh) | 视频质量评估的方法、装置和头端设备 | |
CN103053134A (zh) | 估计视频流中多个视频帧的图像组结构的类型的方法 | |
JP2019524029A (ja) | ビデオサービス品質の評価方法及び装置 | |
US20070177598A1 (en) | Communication conditions determination method, communication conditions determination system, and determination apparatus | |
CN102739448A (zh) | 传输报文的方法、设备和系统 | |
CN108933697B (zh) | 一种宽带质量检测方法 | |
US20170064489A1 (en) | Network system, method for determining communication quality, and analysis apparatus | |
CN101778294B (zh) | 一种mpeg视频文件的丢包检测方法 | |
CN103067690A (zh) | 基于智能监控平台的均衡传输音视频数据的方法及装置 | |
CN107888909B (zh) | 一种ip视频净切换系统的测量方法 | |
JP5199224B2 (ja) | フロー通信品質推定方法と装置およびプログラム | |
CN101662680A (zh) | 一种视频流性能测量方法、装置及系统 | |
US10944993B2 (en) | Video device and network quality evaluation/diagnostic tool | |
CN107454466B (zh) | 一种视频数据处理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |