本发明实施例涉及计算机领域,尤其涉及一种视频帧丢包的处理方法及相关装置。
背景技术:
随着宽带网的普及和多媒体技术的发展,流媒体技术的应用也越来越广泛,如数字广播业务、交互式网络电视业务等等。流媒体是指采用流式传输技术在网络上连续实时播放的媒体格式,利用流媒体技术把连续的影像和声音信息经过压缩处理后放上网上服务器,由视频服务器向用户计算机顺序或时序地传递各个压缩包,让用户一边下载一边观看、收听而不要整个压缩文件下载到自己的计算机上才可以观看。
对于实时互动流媒体,低延迟是重要的诉求,即快速的响应,这样才能够获得较好的使用体验。目前大多使用udp(userdatagramprotocol,用户数据报协议)网络传输,udp是osi(opensysteminterconnection,开放式系统互联)参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,从而容易出现丢包的情况,进而造成图像和音频的不够清晰或者不够流畅等问题,因此,处理视频网络丢包就成为rtc(real-timecommunication,实时通信,指用于实时音频、视频保障的一组协议和方案)的一个关键技术,但如何发现丢包,并及时进行后续的处理就成为一个问题。
因此,如何改善视频帧丢包的处理方法,为缩短丢包判断时间提供基础,成为亟需解决的技术问题。
技术实现要素:
本发明实施例解决的技术问题是提供一种视频帧丢包的处理方法及相关装置,以实现为缩短丢包判断时间提供基础。
为解决上述问题,本发明实施例提供一种视频帧丢包的处理方法,包括:
获得拆分包,所述拆分包包括表示所述拆分包的组帧顺序的原始序列号;
生成与所述拆分包的发送顺序相对应的发送序列号,并将所述发送序列号添加到所述拆分包,所述发送序列号与所述原始序列号相对应;
根据所述发送序列号发送所述拆分包,以便接收端根据当前接收的拆分包的发送序列号与已接收的拆分包的发送序列号的连续性判断是否存在丢失的拆分包。
可选地,所述获得拆分包的步骤包括:
当未接收到包含丢失的发送序列号的重传请求时,根据已发送的拆分包的最后一个原始序列号,找到新的拆分包,获得新的拆分包。
可选地,所述获得拆分包的步骤包括:
当接收到包含丢失的发送序列号的重传请求时,根据所述丢失的发送序列号查找相对应的原始序列号及与所述相对应的原始序列号对应的拆分包,找到所查找的拆分包,获得所查找的拆分包。
可选地,所述拆分包还包括表示所述拆分包的重要性的重要性标识;
所述获得拆分包的步骤包括:
所述当接收到包含丢失的发送序列号的重传请求时,根据所述丢失的发送序列号查找相对应的原始序列号及与所述相对应的原始序列号对应的拆分包,找到所查找的拆分包的步骤之后还包括:
根据所述重要性标识确定所查找的拆分包的重要性;
若当前网络传输速度与所查找的拆分包的重要性相应的网络传输速度匹配,则获得所述所查找的拆分包;
若当前网络传输速度与所述所查找的拆分包的重要性相应的网络传输速度不匹配,则根据已发送的拆分包的最后一个原始序列号,找到新的拆分包,获得新的拆分包。
可选地,所述拆分包还包括表示所述拆分包的所属帧的所属帧标识,
所述根据已发送的拆分包的最后一个原始序列号,找到新的拆分包,获得新的拆分包的步骤包括:
获取所述所查找的拆分包的所属帧标识;
根据已发送的拆分包的最后一个原始序列号和所查找的拆分包的所属帧标识,找到与所查找的拆分包的所属帧标识不同的首异帧拆分包;
获得所述首异帧拆分包。
可选地,
所述根据已发送的拆分包的最后一个原始序列号和所查找的拆分包的所属帧标识,找到与所查找的拆分包的所属帧标识不同的首异帧拆分包的步骤还包括:
根据所述重要性标识确定所述首异帧拆分包的重要性;
若当前网络传输速度与所述首异帧拆分包的重要性相应的网络传输速度匹配,获得所述异帧拆分包。
可选地,
所述获得拆分包的步骤还包括:
若当前网络传输速度与所述首异帧拆分包的重要性相应的网络传输速度不匹配,根据所述首异帧拆分包的所属帧标识,查找新的异帧拆分包。
可选地,所述拆分包所归属的帧为所属帧,所述所属帧包括首拆分包和尾拆分包,所述首拆分包由帧首包号标识,所述尾拆分包由帧尾包号标识。
可选地,所述拆分包还包括参考帧标识,所述参考帧标识适于标识所述拆分包的参考帧,以便所述接收端根据所述参考帧的完整性确定是否解码所述所属帧。
为解决上述问题,本发明实施例还提供一种视频帧丢包的处理装置,包括:
拆分包获取单元,适于获得拆分包,所述拆分包包括表示所述拆分包组帧顺序的原始序列号;
发送序列号生成单元,适于生成与所述拆分包的发送顺序相对应的发送序列号,并将所述发送序列号添加到所述拆分包,所述发送序列号与所述原始序列号相对应;
拆分包发送单元,适于根据所述发送序列号发送所述拆分包,以便接收端根据当前接收的拆分包的发送序列号与已接收的拆分包的发送序列号的连续性判断是否存在丢失的拆分包。
为解决上述问题,本发明实施例还提供一种发送端设备,包括至少一个存储器和至少一个处理器;所述存储器存储有程序,所述处理器调用所述程序,以执行如上述任一项所述的视频帧丢包的处理方法。
为解决上述问题,本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,当该指令被处理器执行时可以实现如上述任一项所述的视频帧丢包的处理方法。
为解决上述问题,本发明实施例还提供一种视频帧丢包的处理方法,包括:
接收拆分包,所述拆分包包括原始序列号和发送序列号;所述原始序列号表示所述拆分包的组帧顺序,所述发送序列号与所述拆分包的发送顺序相对应,所述发送序列号与所述原始序列号相对应;
根据所述拆分包的发送序列号与已接收的拆分包的发送序列号的连续性判断是否存在丢失的拆分包。
可选地,还包括:
当所述拆分包的发送序列号与已接收的拆分包的发送序列号不连续时,确定丢失的发送序列号,发送包含丢失的发送序列号的重传请求。
可选地,还包括:
根据所述原始序列号,对所述拆分包进行组帧,得到所述拆分包的所属帧。
可选地,
所述根据所述原始序列号,对所述拆分包进行组帧,得到所述拆分包的所属帧的步骤包括:
根据所述原始序列号排列所述拆分包;
判断所述拆分包是否满足组帧条件;所述组帧条件包括:所述拆分包的所属帧的首拆分包和尾拆分包已接收,且所述首拆分包与所述尾拆分包间排列的中间拆分包的原始序列号连续;其中,所述拆分包的所属帧的首拆分包由帧首包号标识,尾拆分包由帧尾包号标识;
若所述拆分包满足组帧条件,按照原始序列号对所述首拆分包,所述中间拆分包及所述尾拆分包进行组帧,得到所述拆分包的所属帧。
可选地,所述拆分包还包括参考帧标识,所述参考帧标识适于标识所述拆分包的参考帧;
所述处理方法还包括:
当根据所述参考帧标识所确定的所述拆分包的参考帧为所述所属帧或解码完成的视频帧时,解码所述拆分包的所属帧。
可选地,所述接收完整的视频帧为所属帧或所述所属帧的前一帧。
为解决上述问题,本发明实施例还提供一种视频帧丢包的处理装置包括:
拆分包接收单元,适于接收拆分包,所述拆分包包括原始序列号和发送序列号;所述原始序列号表示所述拆分包的组帧顺序,所述发送序列号与所述拆分包的发送顺序相对应,所述发送序列号与所述原始序列号相对应;
丢包确定单元,适于根据所述拆分包的发送序列号与已接收的拆分包的发送序列号的连续性判断是否存在丢失的拆分包。
为解决上述问题,本发明实施例还提供一种接收端设备,包括至少一个存储器和至少一个处理器;所述存储器存储有程序,所述处理器调用所述程序,以执行如上述任一项所述的视频帧丢包的处理方法。
为解决上述问题,本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,当该指令被处理器执行时可以实现如上述任一项所述的视频帧丢包的处理方法。
与现有技术相比,本发明的技术方案具有以下优点:
本发明实施例所提供的视频帧丢包的处理方法及相关装置,所述处理方法包括获得拆分包,所述拆分包包括表示所述拆分包组帧顺序的原始序列号;生成与所述拆分包的发送顺序相对应的发送序列号,并将所述发送序列号添加到所述拆分包,所述发送序列号与所述原始序列号相对应,根据所述发送序列号发送所述拆分包,以便当前接收的拆分包的发送序列号与已接收的拆分包的发送序列号的连续性判断是否存在丢失的拆分包。这样,通过设置用于确定拆分包的组帧顺序的原始序列号,可以保证接收端在接收到拆分包的时候,根据原始序列号对多个拆分包进行排序,保证属于同一个视频帧的拆分包顺利组帧;而发送序列号对应的是拆分包的发送顺序,当接收端接收到该拆分包的时候,通过发送序列号就可以判断在该接收到的拆分包之前所发送的拆分包是否收到,并且发送序列号的顺序性代表了拆分包发送的前后时间,如果接收端根据接收到的拆分包的发送序列号排列,发现发送序列号不连续时,就可以判断缺失的发送序列号的拆分包丢包,从而可以及时地进行后续的处理,而无需继续等待到设定的时间。可见,通过发送序列号和原始序列号的设置,一方面可以保证视频帧解码的顺利进行,即使是后续收到的拆分包,也能够在收到后根据原始序列号排列插入到其组帧的位置,另一方面,基于发送序列号的连续性,接收端可以及时发现丢包,并执行判断,为缩短判断丢包的时间提供了基础,提高了在网络抖动的环境下的适应能力,从而可以缩短视频帧的传输时间,进而保证流媒体的播放质量和人们观看流媒体时的体验。
可选方案中,本发明实施例所提供的视频帧丢包的处理方法及相关装置,所述处理方法还包括:当接收到包含丢失的发送序列号的重传请求时,根据所述丢失的发送序列号查找相对应的原始序列号及与所述相对应的原始序列号对应的拆分包,找到所查找的拆分包,获得所查找的拆分包。从而,本发明实施例所提供的视频帧丢包的处理方法,当接收到包含发送序列号的重传请求时,基于发送序列号与原始序列号的对应关系,可以查找到原始序列号,进而基于原始序列号与拆分包的对应关系,可以进一步查找到拆分包,并根据当前的发送顺序,再次生成与拆分包以及原始序列号对应的新的发送序列号,并根据发送序列号发送拆分包,不仅可以基于当前发送顺序生成的发送序列号,很容易地判断所查找的拆分包的接收情况,而且,在有重传请求发生的情况下,尽管发送序列号与原始序列号的对应关系为多对一,但原始序列号与拆分包的对应关系为一对一,从而无论对应于同一拆分包的发送序列号如何改变,都可以通过原始序列号查找到所对应的拆分包,保证一次或者多次拆分包的重新发送。
可选方案中,本发明实施例所提供的视频帧丢包的处理方法及相关装置,所述处理方法的获得拆分包的步骤包括:所述拆分包还包括表示所述拆分包的重要性的重要性标识,所述当接收到包含丢失的发送序列号的重传请求时,根据所述丢失的发送序列号查找相对应的原始序列号及与所述相对应的原始序列号对应的拆分包,找到所查找的拆分包的步骤之后还包括:根据所述重要性标识确定所查找的拆分包的重要性;若当前网络传输速度与所查找的拆分包的重要性相应的网络传输速度匹配,则获得所述所查找的拆分包;若当前网络传输速度与所述所查找的拆分包的重要性相应的网络传输速度不匹配,则根据已发送的拆分包的最后一个原始序列号,找到新的拆分包,获得新的拆分包。本发明实施例所提供的视频帧丢包的处理方法,通过设置拆分包的重要性标识,可以确定需要重传的拆分包的重要性,从而只有在当前网络传输速度与所述所查找的拆分包的重要性相应的网络传输速度匹配时,触发执行生成与所述拆分包的发送顺序相对应的发送序列号,并将所述发送序列号添加到所述拆分包,所述发送序列号与所述原始序列号相对应的步骤,若当前网络传输速度与所述所查找的拆分包的重要性相应的网络传输速度不匹配,则根据已发送的拆分包的最后一个原始序列号,找到新的拆分包,获得新的拆分包。可见,通过给拆分包设置重要性标识,在网络传输速度较低时可以仅重新发送重要性等级较高的拆分包,提高了拆分包重传对于网络抖动的适应性。
附图说明
图1是本发明实施例一种视频帧的丢包处理系统的结构示意图;
图2是本发明实施例一种视频帧丢包的处理方法的信令交互图;
图3是本发明实施例一种视频帧丢包的处理方法的另一信令交互图;
图4是本发明实施例一种视频帧丢包的处理方法的又一信令交互图;
图5是本发明实施例一种视频帧丢包的处理方法的又一信令交互图;
图6是本发明实施例一种视频帧丢包的处理方法的又一信令交互图;
图7是本发明实施例提供的视频帧丢包的处理装置的一框图;
图8是本发明实施例提供的发送端设备的一种可选硬件架构图;
图9是本发明实施例提供的视频帧丢包的处理装置的另一框图。
具体实施方式
由背景技术可知,现有技术的视频帧丢包的处理方法及相关设备,丢包判断的时间很长。
一种情况中,为了防止流媒体视频帧丢包,在进行视频帧的发送时,首先进行编码和拆分,获得拆分包,拆分包包括表示拆分包组帧的序列号,当发送端发送了拆分包后,接收端在预定的时间内没有收到该拆分包,则认为该拆分包丢失,接收端向发送端发送丢包重传的请求,请求发送端再次发送拆分包。
然而,受到预定时间的限制,即使拆分包早已丢失,接收端也需要等到时间达到预定时间后才能够发出重传请求,这大大增加了重传包的等待时间,影响了流媒体的观看体验。
为了缩短丢包判断的时间,本发明实施例提供了一种视频帧丢包的处理方法及相关装置,获得拆分包,所述拆分包包括表示所述拆分包组帧顺序的原始序列号;生成与所述拆分包的发送顺序相对应的发送序列号,并将所述发送序列号添加到所述拆分包,所述发送序列号与所述原始序列号相对应;根据所述发送序列号发送所述拆分包,以便接收端根据当前接收的拆分包的发送序列号与已接收的拆分包的发送序列号的连续性判断是否存在丢失的拆分包。
可见,通过设置用于确定拆分包的组帧顺序的原始序列号,可以保证接收端在接收到拆分包的时候,根据原始序列号对多个拆分包进行排序,保证属于同一个视频帧的拆分包顺利组帧;而发送序列号对应的是拆分包的发送顺序,当接收端接收到该拆分包的时候,通过发送序列号就可以判断在该接收到的拆分包之前所发送的拆分包是否收到,并且发送序列号的顺序性代表了拆分包发送的前后时间,如果接收端根据接收到的拆分包的发送序列号排列,发现发送序列号不连续时,比如:发送序列号相邻的两个拆分包中,发送序列号靠后的拆分包已经被接收端接收,而发送序列号靠前的拆分包仍未被接收时,就可以判断发送序列号靠前的拆分包丢包,从而可以及时地进行发送包含丢失的发送序列号的重传请求,而无需继续等待到设定的时间。
从而,通过发送序列号和原始序列号的设置,一方面可以保证接收端视频帧解码的顺利进行,并且即使是后续收到的拆分包,也能够在收到后根据原始序列号排列插入到其组帧的位置,另一方面,基于发送系列号的连续性,接收端可以及时发现丢包,并执行判断,为缩短判断丢包的时间提供了基础,提高了在网络抖动的环境下的适应能力,从而可以缩短视频帧的传输时间,进而保证流媒体的播放质量和人们观看流媒体时的体验。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1是本发明实施例一种视频帧丢包的处理系统的结构示意图。
基于图1所示的视频帧丢包的处理系统,本发明实施例的发送端可以向接收端发送视频帧的拆分包,发送端可以是服务器,接收端可以是终端或者服务器。
如图1所示,本发明实施例所提供的视频帧丢包的处理系统,可以包括服务器10和终端20。
本发明实施例中,作为接收端的终端20可以是能够接收流媒体视频帧的智能手机、平板电脑、笔记本电脑等用户设备;接收到拆分包后,终端20根据拆分包的发送序列号与此前已接收的拆分包的发送序列号的连续性判断是否存在丢失的拆分包。
在其他实施例中,作为接收端的服务器20’可以是用于处理流媒体视频帧传输相关的服务设备,可以由单一服务器实现,也可以由多台服务器组成的服务器群组实现。
本发明实施例中,作为发送端的服务器10也可以是用于处理流媒体视频帧传输相关的服务设备,可以由单一服务器实现,也可以由多台服务器组成的服务器群组实现。
在一种实施例中,作为发送端的服务器10和作为接收端的终端20(或者作为接收端的服务器20’)可以通过无线网络传输进行信令交换;在其他实施例中,作为发送端的服务器10和作为接收端的终端20(或者作为接收端的服务器20’)还可以通过有线网络进行信令交换,或者通过有线和无线结合的方式进行信令交换。
需要说明的是,上述的基于视频帧丢包的处理系统还可以包括与本发明实施例公开内容可能并不是必需的其他器件(未示出),例如显示屏等;鉴于这些其他器件对于理解本发明实施例公开内容可能并不是必需,本发明实施例对此不进行逐一介绍。
作为本发明实施例公开内容的一种可选实现,本发明实施例通过作为发送端的服务器10获取拆分包,拆分包包括表示拆分包的组帧顺序的原始序列号,并生成与拆分包发送顺序相对应得发送序列号,将发送序列号添加到拆分包,根据发送序列号发送拆分包,以便作为接收端的终端20(或者服务器20’)根据当前接收的拆分包的发送序列号与已接收的拆分包的发送序列号的连续性判断是否存在丢失的拆分包。
在一种实施例中,当用户利用作为接收端的终端20向作为发送端的服务器10发送视频帧的获取请求,作为发送端的服务器10得到视频帧获取请求的时候,会利用编码器对视频帧进行编码,并进行拆分,进而在发送前获得拆分得到的拆分包,并且,拆分包还包括表示其组帧顺序的原始序列号,以便终端20在接收到拆分包后能够顺利组帧。
当然,为满足不同的要求,在另一实施例中,经过编码和拆分获得的拆分包还可以包括重要性标识,以表示该拆分包的重要性,从而可以基于拆分包的重要性来确定将来拆分包丢失时是否需要进行重新传输;在又一实施例中,经过编码和拆分获得的拆分包还可以包括帧首包号、帧尾包号,其中,帧首包号用以表示该拆分包是否为该拆分包所属帧的首拆分包(即第一个拆分包),帧尾包号用以表示该拆分包是否为该拆分包所属帧的尾拆分包(即最后一个拆分包),当然此处的首拆分包和尾拆分包是以拆分包的组帧顺序为准的,从而方便确定拆分包是否能够完成组帧,并且帧首包号和帧尾包号既可以是在每一个拆分包中都包含这两个字段,通过字段的不同,表示具体的某一个拆分包是否为首拆分包或者是否为尾拆分包,比如:作为首拆分包的帧首包号字段为1,其他拆分包的帧首包号字段为0,也可以是仅在首拆分包上设置帧首包号字段,仅在尾拆分包上设置帧尾包号字段;在其他实施例中,经过编码和拆分获得的拆分包还可以包括表示该拆分包解码所要参考的参考帧的参考帧标识,以确定组帧后的拆分包能否解码。
当作为发送端的服务器10做好了前述一种实施例中所述的准备,即将发送拆分包时,首先生成与拆分包的发送顺序相对应的发送序列号,并且将该发送序列号添加到所述拆分包,同时发送序列号与原始序列号也建立了对应关系,可见,发送序列号表明了拆分包的发送顺序。
发送序列号添加拆分包完成后,作为发送端的服务器10根据发送序列号发送拆分包,作为接收端的终端20接收到该拆分包后,根据当前接收到的拆分包的发送序列号与已经接收的拆分包的发送序列号的连续性来判断是否存在丢失的拆分包。
可以理解的是,前述拆分包第一次被传输时的过程,在一种实施例中,当某一个拆分包没有被作为接收端的终端20接收到时,即终端20接收到一个拆分包后,发现当前所接收到的拆分包的发送序列号与已接收的拆分包的发送序列号不连续时,会确定丢失的发送序列号,并向作为发送端的服务器10发送包含丢失的发送序列号的重传请求。
作为发送端的服务器10接收到包含丢失的发送序列号的重传请求,会获取需要重传的拆分包。由于重传请求仅包含丢失的发送序列号,因此作为发送端的服务器10会根据发送序列号和原始序列号的对应关系,确定出原始序列号,进而根据原始序列号与拆分包的对应关系,确定出具体的需要重传的拆分包。
需要注意的是,为了确定所查找的拆分包的发送顺序,方便及时掌握所查找的拆分包的接收情况,仍然需要在具体发送确定所查找的拆分包的发送顺序,从而作为发送端的服务器10需要根据当前的发送顺序,生成与所查找的拆分包的原始序列号相应的发送序列号(即重发发送序列号),并根据发送序列号(即重发发送序列号)发送拆分包(即所查找的拆分包),当然,作为接收端的终端20在接收到拆分包的时候,仍然会判断是否有丢失的拆分包,并不断循环上述过程,实现对拆分包的发送。
可以看出,通过拆分包同时设置原始序列号和发送序列号,一方面可以满足对拆分包的组帧要求和查找要求,另一方面,可以及时地缩短判断丢包的时间,无需等待到达设定的时间,提高了在网络抖动的环境下的适应能力,可以缩短视频帧的传输时间,保证流媒体的播放质量和人们观看流媒体时的体验。
基于以上说明,请参考图2,图2示出了一种视频帧丢包的处理方法的信令交互图。
如图中所示,本发明实施例所提供的基于通讯软件的素材获取方法包括以下步骤:
步骤s10:获得拆分包,所述拆分包包括表示所述拆分包的组帧顺序的原始序列号。
发送端获得拆分包,具体地,所获得的拆分包可以是首次发送所需要获得的拆分包,也可以是接收到重传请求后查找到的需要重传的拆分包。
在所获得的拆分包是首次发送的拆分包的情况下,在发送端首先利用编码器对视频的原始数据进行编码,由于编码出来的数据可能会比较大,则需要对数据进行拆包处理,拆分后的每一个拆分包同时具备标识其在接收端进行组帧的原始序列号,可以理解的是,原始序列号和拆分包是一一对应的,并且标识了拆分包的组帧顺序,并且在拆包时,可以同时获得多个拆分包和多个与不同的拆分包分别一一对应的原始序列号,然后在具体发送前,再获取当前要发送的拆分得到的拆分包。
在获取到的拆分包是通过重传请求查找到的拆分包的情况下,在发送端通过原始序列号与拆分包的对应关系,查找到即可。
需要说明的是,在一实施例中,原始序列号的排列顺序可以是按照组帧顺序依次加1,此种方式的原始序列号,在使用时的计算方法简单,更易操作;在其他实施例中,原始序列号的排列顺序还可以是其他的计算规则,比如顺序加2等,只要能够标识不同的拆分包,并可以说明拆分包的组帧顺序都是可以的。
步骤s11:生成与所述拆分包的发送顺序相对应的发送序列号,并将所述发送序列号添加到所述拆分包,所述发送序列号与所述原始序列号相对应。
得到拆分包后,由于拆分包的发送顺序和组帧顺序并非完全一致,为了标明拆分包的发送顺序,发送端还需要生成与拆分包的发送顺序相对应的发送序列号,并将发送序列号添加到拆分包,这样接收端接收到拆分包,根据拆分包的发送序列号就可以判断按照这个顺序发送的拆分包是否收到,当然,发送序列号与拆分包相对应,与原始序列号也相对应,但在拆分包需要重发的情况下,每发送一次便根据当前的发送顺序生成一个发送序列号,所以会有多个发送序列号对应一个原始序列号,也就是发送序列号与原始序列号的对应关系为多对一的关系。发送序列号的生成是随着发送顺序而定的,因此发送序列号是一个一个产生的。
从而,发送序列号对应的是拆分包的发送顺序,正常情况下,先发送的拆分包即发送序列号排列靠前的拆分包应当先被接收端接收,如果发送序列号靠后的拆分包先被接收,则先发送的拆分包丢包的概率较大,为保证传输的时效性,可以及时响应发送重传请求。
可以理解的是,为方便排序和计算,在一种实施例中,发送序列号的编辑可以是根据发送顺序依次加1的方式,当然,在其他实施例中,发送序列号的编辑也可以是其他方式,比如根据发送顺序依次加2或者甚至是减1等等,都是可以的。
步骤s12:根据所述发送序列号发送所述拆分包。
发送序列号生成完成,发送端即可根据发送序列号发送拆分包。
在没有重传的情况下,发送序列号可以跟原始序列号的排列相同,从而方便接收端对拆分包排序和组帧;在有重传的情况下,则需要根据当前的发送顺序,将下一顺序定为需要重传的拆分包的发送顺序,从而重传的拆分包能够以最快的速度再次发送至接收端,保证接收端的后续处理的及时性,而此种情况下,后续的首次发送的拆分包的发送序列号则在重新发送的拆分包的发送序列号后按照顺序生成,而拆分包的发送则是基于发送序列号所标识的顺序,不论拆分包是首次发送的拆分包还是重新发送的拆分包。
步骤s13:接收拆分包。
在发送端发送拆分包后,接收端即接收拆分包,可以理解的是,接收端接收的拆分包包括原始序列号和发送序列号。
在接收端接收到拆分包以后,一方面可以利用原始序列号对刚接收到的拆分包和已经接收到的拆分包进行排序,为后续的组帧做准备,另一方面则可以利用发送序列号判断是否有发送但未接收到(即丢失)的拆分包。
步骤s14:根据所述拆分包的发送序列号与已接受的拆分包的发送序列号的连续性判断是否存在丢失的拆分包。
发送序列号代表的是拆分包的发送顺序,因此可以理解为发送序列号生成则拆分包发送,当然发送序列号是按照发送顺序和编排规则生成,因此,接收端接收到拆分包后,根据拆分包的发送序列号与已接受的拆分包的发送序列号的连续性就可以判断是否存在丢失的拆分包。
需要说明的是,本发明实施例所述的发送序列号的连续性是指满足发送序列号编排规则下的连续,比如:当编排规则为顺序加1时,则发送序列号的连续是指相邻接收到的拆分包的发送序列号的差值是1,即1、2、3;而当编排规则为顺序加2时,则发送序列号的连续是指相邻接收到的拆分包的发送序列号的差值是2,即1、3、5。
具体在判断连续性时,在一种实施例中,可以首先计算当前接收到的拆分包的发送序列号与前一接收到的拆分包的发送序列号的差值,然后将差值所规定的发送序列号的编排规则的差值进行比较,如果一致,则连续;否则,则存在丢失的拆分包,通过计算,进一步可以得到丢失的拆分包的发送序列号,如果同时缺失了多个,则要获得多个缺失的发送序列号。
在其他实施例中,还可以通过其他方式判断发送序列号的连续性,比如:通过计算当前接收的拆分包的发送序列号与前面多个接收到的拆分包的发送序列号进行计算等等。
可以理解的是,每接收到一个拆分包,就利用该发送序列号与已接收到的拆分包的发送序列号进行确定,从而无需等待过长的时间,缩短了丢包的判断时间,提高了在网络抖动的环境下的适应能力,从而可以缩短视频帧的传输时间,进而保证流媒体的播放质量和人们观看流媒体时的体验。
作为本发明实施例公开内容的一种可选方式,图3是本发明实施例一种视频帧丢包的处理方法的另一信令交互图。
可以理解的是,本发明实施例公开的视频帧丢包的处理方法可以从获取拆分得到的拆分包的节点开始,也可以从获取重传请求中所包含的发送序列号所对应的拆分包的节点开始,为方便说明,在此以获取拆分得到的拆分包的节点开始进行介绍。
参照图3,本发明实施例所提供的视频帧丢包的处理方法包括以下步骤:
步骤s20:获得拆分得到的拆分包,所述拆分包包括表示所述拆分包的组帧顺序的原始序列号。
步骤s20可参照图2所示步骤s10部分的描述,首次发送,首先通过发送端的编码和拆包工作,得到拆分得到的拆分包,当然拆分包包括标识拆分包的组帧顺序的原始序列号;另外如果拆包工作已经完成,则直接找到下一个需要发送的拆分包即可。
步骤s21:生成与所述拆分包的发送顺序相对应的发送序列号,并将所述发送序列号添加到所述拆分包,所述发送序列号与所述原始序列号相对应。
步骤s21可参照图2所示步骤s11部分的描述,如果在拆分包的发送过程中,未发生拆分包重传的情况,为保证快速组帧,发送端按照组帧顺序生成发送序列号,即生成与原始序列号的顺序相应的发送序列号。
而如果在拆分包的发送过程中,发生了拆分包重传的情况,则不论后续发送的拆分包为重传还是首次发送,则均基于拆分包当前的发送顺序生成发送序列号,并将发送序列号添加到拆分包。
步骤s22:根据所述发送序列号发送所述拆分包。
步骤s22可参照图2所示步骤s12部分的描述,此处不再赘述。
步骤s23:接收拆分包。
步骤s23可参照图2所示步骤s13部分的描述,需要说明的是,接收到拆分包后,可以同时执行步骤s24和步骤s28,即一方面根据拆分包的发送序列号的连续性判断是否存在丢失的拆分包,另一方面根据拆分包的原始序列号对拆分包进行组帧。
步骤s24:判断所述拆分包的发送序列号与已接收的拆分包的发送序列号是否连续,如果连续,则执行步骤s23;如果不连续,则执行步骤s25。
步骤s24可参照图2所示步骤s14部分的描述,但在确定了拆分包的发送序列号与已接收的拆分包的发送序列号连续后,则会接收到该拆分包后继续接收后续发送的拆分包,其他相关内容,在此不再赘述。
步骤s25:确定丢失的所述发送序列号,发送包含丢失的所述发送序列号的重传请求。
接收端基于当前接收的拆分包的发送序列号与已接收到的拆分包的发送序列号的差值,并结合拆分包的发送序列号的编排规则,确定丢失的发送序列号,比如:当前接收的拆分包的发送序列号为5,而已接收到的拆分包的发送序列号为1、2、3,而拆分包的发送序列号的编排规则为依次加1,就可以确定丢失的拆分包的发送序列号为4,从而向发送端发送包含有发送序列号为4的重传请求。
步骤s26:是否接收到包含已丢失的发送序列号的重传请求,如果是,则执行步骤s27;如果否,则执行步骤s28。
发送端在发送完1个拆分包(包括首次发送的拆分包和重传的拆分包)后,需要判断是否接收到了重传请求,如果没有接收到,则执行步骤s28,继续查找下一个拆分得到的拆分包;如果接收到了重传请求,则执行步骤s27,为拆分包的重传做好准备。
步骤s27:根据所述丢失的发送序列号查找相对应的原始序列号及与所述相对应的原始序列号对应的拆分包,找到所查找的拆分包。发送序列号与原始序列号之间建立有多对一的关系,即同一个拆分包即使发送了多次,会生成多个发送序列号,但是仅有一个原始序列号,因此,一个发送序列号仅对应有一个原始序列号,从而根据发送序列号即可找到对应的原始序列号,而原始序列号与拆分包之间是一对一的关系,从而可以找到对应的拆分包。
步骤s27即为接收到重传请求的情况下,获得拆分包的一种具体实施方式,可以理解得是,得到需要重传的拆分包后,生成与所述拆分包的发送顺序相对应的发送序列号,再次发送所查找的拆分包
结合参考步骤s25,可以看出已经发送的拆分包的发送序列号为5,那么按照当前发送顺序,生成的与所查找的拆分包的原始序列号相应的发送序列号为6,然后执行步骤s22,根据所述发送序列号发送所述拆分包,下一个即发送查找的生成发送序列号为6的拆分包。
发送完成后,执行步骤s26,是否接收到包含已丢失的发送序列号的重传请求,若否,则会继续执行步骤s28、步骤s20至步骤s24,发送下一个首次发送的拆分包,并生成发送序列号7,而当接收端接收到了发送序列号为7的拆分包,但仍未收到发送序列号为6的拆分包时,可以判断发送序列号为6的拆分包丢失,从而可以继续执行步骤s26、步骤s27以及步骤s29。
步骤s28:根据已发送的拆分包的最后一个原始序列号,找到新的拆分包。
在确定需要发送下一个新的拆分包的情况下,具体条件可以为没有接收到重传请求,或者接收到重传请求但不满足重传条件,此时需要获取新的拆分包,为此,根据已经发送的拆分包的原始序列号,确定所发送的拆分包中原始序列号位于最后的一个,并基于最后的原始序列号确定下一个要发送的拆分包的原始序列号,找到新的查分包,进而转向步骤s20,获取到拆分得到的拆分包。
步骤s29:获得所查找的拆分包,并转向步骤s21。
在经过步骤s26确定接收到重传请求,并经过步骤s27,找到所查找到拆分包的情况下,获得所查找的拆分包,再执行步骤s21,根据当前的发送顺序,生成所述所查找的拆分包的发送序列号。
步骤s210:根据所述原始序列号,对所述拆分包进行组帧,得到所述拆分包的所属帧。
根据原始序列号对拆分包进行排序,如果拆分包满足了组帧的要求,则对拆分包进行组帧,进而可以得到拆分包的所属帧。
需要说明的是,即使发送序列号不连续,也需要根据原始序列号对拆分包进行组帧,即组帧的进行仅仅是基于拆分包的原始序列号。
当然得到拆分包的所属帧的具体方法可以有多种,在此不再赘述。
得到拆分包的所属帧后,还可以对所属帧进行后续的处理,在此实施例中,也不再赘述。
可以看出,即使重传的拆分包再次丢失,也可以很快地发现,从而及时地再次发出重传请求,接收端基于新的发送序列号再次查找原始序列号和拆分包,并进行再次发送。
作为本发明实施例公开内容的一种可选方式,图4是本发明实施例一种视频帧丢包的处理方法的又一信令交互图,参照图4,本发明实施例所提供的视频帧丢包的处理方法包括以下步骤:
步骤s30:获得拆分得到的拆分包,所述拆分包包括表示所述拆分包的组帧顺序的原始序列号和表示所述拆分包的重要性的重要性标识。
步骤s30可参照图3所示步骤s20部分的描述,需要说明的是,在本实施例中,拆分得到的拆分包,不仅包含原始序列号,还包含重要性标识,即该拆分包在整个视频播放中对播放质量的影响程度的标识,以便在接收到重传请求的时候,可以根据拆分包的重要性确定是否需要重传。
步骤s31:生成与所述拆分包的发送顺序相对应的发送序列号,并将所述发送序列号添加到所述拆分包,所述发送序列号与所述原始序列号相对应。
步骤s31可参照图3所示步骤s21的描述,在此不再赘述。
步骤s32:根据所述发送序列号发送所述拆分包。
步骤s32可参照图2所示步骤s12部分的描述,此处不再赘述。
步骤s33:接收拆分包。
步骤s33可参照图3所示步骤s23部分的描述,在此不再赘述。
步骤s34:判断所述拆分包的发送序列号与已接收的拆分包的发送序列号是否连续,如果连续,则执行步骤s33;如果不连续,则执行步骤s35。
步骤s34可参照图3所示步骤s24部分的描述,在此不再赘述。
步骤s35:确定丢失的所述发送序列号,发送包含丢失的所述发送序列号的重传请求。
步骤s35可参照图3所示步骤s25部分的描述,在此不再赘述。
步骤s36:是否接收到包含已丢失的发送序列号的重传请求,如果是,则执行步骤s37;如果否,则执行步骤s38。
步骤s36可参照图3所示步骤s26部分的描述,在此不再赘述。
步骤s37:根据所述丢失的发送序列号查找相对应的原始序列号及与所述相对应的原始序列号对应的拆分包,找到所查找的拆分包,获得所查找的拆分包。
步骤s37可参照图3所示步骤s27部分和步骤s28部分的描述,在此不再赘述。
步骤s38:根据已发送的拆分包的最后一个原始序列号,找到新的拆分包。
在确定需要发送下一个新的拆分包的情况下,具体条件可以为没有接收到重传请求,或者接收到重传请求但不满足重传条件,此时需要获取新的拆分包,为此,根据已经发送的拆分包的原始序列号,确定所发送的拆分包中原始序列号位于最后的一个,并基于最后的原始序列号确定下一个要发送的拆分包的原始序列号,找到新的查分包,进而转向步骤s30,获取到拆分得到的拆分包。
步骤s39:根据所述重要性标识确定所查找的拆分包的重要性。
找到与丢失的发送序列号所对应的拆分包后,可以根据所查找的拆分包的重要性标识确定所查找的拆分包的重要性。
具体地,所查找的拆分包的重要性可以分为2级、3级,甚至可以根据需要分为更多级,确定好了拆分包的重要性,则可以执行步骤s310。
步骤s310:确定当前网络传输速度与所查找的拆分包的重要性相应的网络传输速度是否匹配,如果是,则执行步骤s311;如果否,则执行步骤s38。
确定当前网络传输速度,如果当前网络传输速度很高,则重要性较低等级的拆分包也可以进行重新传输,而如果当前网络传输速度较低,则可以选择仅重传重要性等级较高的拆分包。
可以理解的是,可以提前设定与拆分包的重要性相匹配的网络传输速度,当确定完拆分包的重要性和当前网络传输速度后,即可以判断所查找的拆分包的重要性在当前网络传输速度下是否能够进行重传
具体地,现有的当前网络传输速度的方法有很多种,采用任何一种方式都是可以的。
当如果二者相互匹配,则执行步骤s311,即获取查找的拆分包,如果二者不匹配,则执行步骤s38,即找到新的拆分包。
步骤s311:获得所查找的拆分包,并转向步骤s31。
当当前网络速度能够满足所查找的拆分包的重要性时,则根据所找到的拆分包的获取到具体的所查找的拆分包。
完成步骤s311后,再执行步骤s31,根据当前的发送顺序,生成所述所查找的拆分包的发送序列号。
步骤s312:根据所述原始序列号,对所述拆分包进行组帧,得到所述拆分包的所属帧。
步骤s312可参照图3所示步骤s210部分的描述,在此不再赘述。
可以看出,本发明实施例所提供视频帧丢包的处理方法,会确定所查找的拆分包的重要性,并判断当前的网速是否能够传输所查找的拆分包,从而在网速不好的情况下,仅重新传输重要性等级较高的拆分包,提高了拆分包重传对于网络抖动的适应性。
作为本发明实施例公开内容的又一种可选方式,图5是本发明实施例一种视频帧丢包的处理方法的又一信令交互图,参照图5,本发明实施例所提供的视频帧丢包的处理方法包括以下步骤:
步骤s40:获得拆分得到的拆分包,所述拆分包包括表示所述拆分包的组帧顺序的原始序列号、表示所述拆分包的重要性的重要性标识、表示所述拆分包的所属帧的所属帧标识。
步骤s40可参照图4所示步骤s30部分的描述,需要说明的是,在本实施例中,拆分得到的拆分包,不仅包含原始序列号、重要性标识,还包括所属帧标识,即该拆分包所归属的帧的标识,以便确定某个拆分包的所属帧在。
步骤s41:生成与所述拆分包的发送顺序相对应的发送序列号,并将所述发送序列号添加到所述拆分包,所述发送序列号与所述原始序列号相对应。
步骤s41可参照图3所示步骤s21的描述,在此不再赘述。
步骤s42:根据所述发送序列号发送所述拆分包。
步骤s42可参照图2所示步骤s12部分的描述,此处不再赘述。
步骤s43:接收拆分包。
步骤s43可参照图3所示步骤s23部分的描述,在此不再赘述。
步骤s44:判断所述拆分包的发送序列号与已接收的拆分包的发送序列号是否连续,如果连续,则执行步骤s43;如果不连续,则执行步骤s45。
步骤s44可参照图3所示步骤s24部分的描述,在此不再赘述。
步骤s45:确定丢失的所述发送序列号,发送包含丢失的所述发送序列号的重传请求。
步骤s45可参照图3所示步骤s25部分的描述,在此不再赘述。
步骤s46:是否接收到包含已丢失的发送序列号的重传请求,如果是,则执行步骤s47;如果否,则执行步骤s48。
步骤s46可参照图3所示步骤s26部分的描述,在此不再赘述。
步骤s47:根据所述丢失的发送序列号查找相对应的原始序列号及与所述相对应的原始序列号对应的拆分包,找到所查找的拆分包,获得所查找的拆分包。
步骤s47可参照图3所示步骤s27部分和步骤s28部分的描述,在此不再赘述。
步骤s48:根据已发送的拆分包的最后一个原始序列号,找到新的拆分包。
在没有接收到重传请求确定需要发送下一个新的拆分包的情况下,此时需要获取新的拆分包,为此,根据已经发送的拆分包的原始序列号,确定所发送的拆分包中原始序列号位于最后的一个,并基于最后的原始序列号确定下一个要发送的拆分包的原始序列号,找到新的查分包,进而转向步骤s40,获取到拆分得到的拆分包。
步骤s49:根据所述重要性标识确定所查找的拆分包的重要性。
找到与丢失的发送序列号所对应的拆分包后,可以根据所查找的拆分包的重要性标识确定所查找的拆分包的重要性。
具体地,所查找的拆分包的重要性可以分为2级、3级,甚至可以根据需要分为更多级,确定好了拆分包的重要性,则可以执行步骤s410。
步骤s410:确定当前网络传输速度与所查找的拆分包的重要性相应的网络传输速度是否匹配,如果是,则执行步骤s411;如果否,则执行步骤s412。
确定当前网络传输速度,如果当前网络传输速度很高,则重要性较低等级的拆分包也可以进行重新传输,而如果当前网络传输速度较低,则可以选择仅重传重要性等级较高的拆分包。
可以理解的是,可以提前设定与拆分包的重要性相匹配的网络传输速度,当确定完拆分包的重要性和当前网络传输速度后,即可以判断所查找的拆分包的重要性在当前网络传输速度下是否能够进行重传
具体地,现有的当前网络传输速度的方法有很多种,采用任何一种方式都是可以的。
当如果二者相互匹配,则执行步骤s411,即获取查找的拆分包,如果二者不匹配,则执行步骤s412,即获取所述所查找的拆分包的所属帧标识。
步骤s411:获得所查找的拆分包,并转向步骤s41。
当当前网络速度能够满足所查找的拆分包的重要性时,则根据所找到的拆分包的获取到具体的所查找的拆分包。
完成步骤s411后,再执行步骤s41,根据当前的发送顺序,生成所述所查找的拆分包的发送序列号。
步骤s412:获取所述所查找的拆分包的所属帧标识。
由于拆分包包含了标识拆分包所属帧的所属帧标识,因此基于所查找的拆分包,可以获取所查找的拆分包的所属帧标识以及新的拆分包的所属帧标识。
步骤s413:根据已发送的拆分包的最后一个原始序列号和所查找的拆分包的所属帧标识,找到与所查找的拆分包的所属帧标识不同的首异帧拆分包。
基于已发送的拆分包的最后一个原始序列号,可以确定已发送的拆分包中组帧顺序位于最后一个的拆分包,进而可以确定接下来要首次进行发送的拆分包;由于视频帧组帧解码时,需要同一帧的拆分包全部都接收到才能解码,因此,如果所查找的拆分包(也就是需要重传的拆分包)不再重传,那么与该拆分包属于同一个视频帧的拆分包,如果还未进行发送和传输,也不需要再进行发送了,基于所查找的拆分包的所属帧标识,可以确定与其属于同一个视频帧的但未首次发送的拆分包,从而可以找到与未首次发送的与所查找的拆分包的所属帧不同的首个异帧拆分包。
当然,该异帧拆分包可以为已发送的拆分包的最后一个原始序列号后面的第一个拆分包,即与所查找的拆分包属于同一个所属帧的拆分包均已发送完成;也可以是经过所属帧标识的比较筛选后,所确定的第一个与所查找的拆分包属于不同视频帧的拆分包。
可以理解的是,在另一种具体实施方式中,在找到了首异帧拆分包的情况下,还可以进一步获取首异帧拆分包的重要性,如果当前网络传输速度与所述首异帧拆分包的重要性相应的网络传输速度匹配,则获得所述异帧拆分包;如果当前网络传输速度与所述首异帧拆分包的重要性相应的网络传输速度不匹配,根据所述首异帧拆分包的所属帧标识,查找新的异帧拆分包,比如可以通过基于找到的首异帧拆分包的原始序列号和所属帧标识找到与首异帧拆分包的所属帧标识不同的下一个拆分包。
步骤s414:获得首异帧拆分包,转向步骤s41。
如果找到了原始序列号位于已发送的拆分包中最后一个原始序列号之后,且拆分包的所属帧标识与所查找的拆分包的所属帧标识不同的第一个异帧拆分包,即为首异帧拆分包,则获得该拆分包,并转向步骤s41。
步骤s415:根据所述原始序列号,对所述拆分包进行组帧,得到所述拆分包的所属帧。
步骤s415可参照图3所示步骤s210部分的描述,在此不再赘述。
可以看出,本发明实施例所提供视频帧丢包的处理方法,会确定所查找的拆分包的重要性和所查找的拆分包的所属帧标识,不仅判断当前的网速是否能够传输所查找的拆分包,从而在网速不好的情况下,仅重新传输重要性等级较高的拆分包,提高了拆分包重传对于网络抖动的适应性,而且在当前网路不满足重传所查找的拆分包的情况下,避免再次发送与所查找的拆分包属于同一个视频帧的拆分包,进一步提高了对于网络的适应性和对于网络资源的充分利用。
作为本发明实施例公开内容的又一种可选方式,图6是本发明实施例一种视频帧丢包的处理方法的又一信令交互图,参照图6,本发明实施例所提供的视频帧丢包的处理方法包括以下步骤:
步骤s50:获得拆分得到的拆分包,所述拆分包包括表示所述拆分包的组帧顺序的原始序列号。
步骤s50可参照图3所示步骤s20部分的描述,再次不再赘述。
当然,在另一实施例中,也可以同时包含对拆分包的重要性标识,具体可参照图4所示步骤s30部分的描述,还可以同时包含对拆分包的所属帧的所属帧标识,具体可参照图5所述步骤s40部分的描述。
步骤s51:生成与所述原始序列号的顺序相应的发送序列号,并将所述发送序列号添加到所述拆分包,所述发送序列号与所述原始序列号相对应。
步骤s51可参照图3所示步骤s21的描述,在此不再赘述。
步骤s52:根据所述发送序列号发送所述拆分包。
步骤s52可参照图2所示步骤s12部分的描述,此处不再赘述。
步骤s53:接收拆分包。
步骤s53可参照图3所示步骤s23部分的描述,在此不再赘述。
步骤s54:判断所述拆分包的发送序列号与已接收的拆分包的发送序列号是否连续,如果连续,则执行步骤s53;如果不连续,则执行步骤s55。
步骤s54可参照图3所示步骤s24部分的描述,在此不再赘述。
步骤s55:确定丢失的所述发送序列号,发送包含丢失的所述发送序列号的重传请求。
步骤s55可参照图3所示步骤s25部分的描述,在此不再赘述。
步骤s56:是否接收到包含已丢失的发送序列号的重传请求,如果是,则执行步骤s57;如果否,则执行步骤s58。
步骤s56可参照图3所示步骤s26部分的描述,在此不再赘述。
步骤s57:根据所述丢失的发送序列号查找相对应的原始序列号及与所述相对应的原始序列号对应的拆分包。
步骤s57可参照图3所示步骤s27部分的描述,在此不再赘述。
步骤s58:根据已发送的拆分包的最后一个原始序列号,找到新的拆分包。
步骤s58可参照图3所示步骤s28部分的描述,在此不再赘述。
步骤s59:获得所查找的拆分包。
步骤s58可参照图3所示步骤s29部分的描述,在此不再赘述。
接下来的步骤s510-步骤s512是执行根据所述原始序列号,对所述拆分包进行组帧,得到所述拆分包的所属帧步骤的具体一种实施方式。
步骤s510:根据所述原始序列号排列所述拆分包。
接收端,对于接收到的拆分包,按照拆分包的原始序列号进行排序,即使在有丢包的情况下,每接收到一个拆分包也会进行排序,而当接收到的拆分包为重传的拆分包时,则会根据重传的拆分包的原始序列号将该拆分包插到已经排序的拆分包序列中。
步骤s511:判断所述拆分包是否满足组帧条件;所述组帧条件包括:所述拆分包的所属帧的首拆分包和尾拆分包已接收,且所述首拆分包与所述尾拆分包以及二者间排列的中间拆分包的原始序列号连续;其中,所述拆分包的所属帧的首拆分包由帧首包号标识,尾拆分包由帧尾包号标识,如果满足,则执行步骤s512;如果不满足,则接收端继续执行步骤s53,再次接收拆分包。
每当接收到一个拆分包,完成前述排序步骤s510后,即可以判断所述拆分包是否满足组帧条件,具体的组帧条件包括:
1、拆分包的所属帧的首拆分包和尾拆分包已经接收;
2、首拆分包和尾拆分包以及二者中间拆分包的原始序列号连续。
满足上述条件则说明,该拆分包的所属帧所包含的各个拆分包已经全部收到,从而可以确定已经满足了组帧的条件。
由于存在拆分包的重传,当接收的拆分包为首拆分包、尾拆分包或者中间拆分包时,都有可能由于当前的拆分包的获取而能够组成一个完整的视频帧,因此每接收到一个拆分包最好都进行判断,以提高拆分包的组帧和解码的速度。
需要说明的是,本发明实施例所述的拆分包的所属帧的首拆分包由帧首包号标识,尾拆分包由帧尾包号标识,在一种实施例中,在发送端,仅对所属帧的首拆分包设置帧首包号标识,则如果一个拆分包包含帧首包号标识则该拆分包即为首拆分包;仅对尾拆分包设置帧尾包号标识,则如果一个拆分包包含帧尾包号标识则该拆分包即为尾拆分包;在另一种实施例中,在发送端,可以对所有的拆分包设置帧首包号标识和帧尾包号标识,但是通过设置不同的值确定一个拆分包是否为首拆分包或者尾拆分包,比如:可以设置首拆分包的帧首包号标识为“1”,尾拆分包和中间拆分包的帧首包号标识为“0”,则在接收端,当返现一个拆分包的帧首包号标识为“1”时则该拆分包为首拆分包;也可以在发送端设置尾拆分包的帧尾包号标识为“1”,首拆分包和中间拆分包的帧尾包号标识为“0”,则在接收端,当一个拆分包的帧尾包号标识为“1”时则该拆分包为尾拆分包。
可以理解的是,在视频帧的传输过程中,首拆分包和尾拆分包的数量均与视频帧的数量相等。
步骤s512:对按照原始序列号排序后的所述首拆分包,所述中间拆分包及所述尾拆分包进行组帧,得到所述拆分包的所属帧。
当满足组帧条件后,即可以进行组帧,进而得到所述拆分包的所属帧。
步骤s513:判断根据所述参考帧标识所确定的所述拆分包的参考帧是否为所属帧或解码的视频帧,若是,则执行步骤s514,若否,则返回执行步骤s53。
得到所属帧后,需要对所述拆分包的所属帧进行解码,解码后的视频帧才能够进行播放,为了保证解码后播放的视频帧的图像效果,在一种实施例中,首先根据在发送端所设置的拆分包的参考帧标识确定拆分包的参考帧,然后判断该参考帧是否是刚组帧完成的所属帧,或者已经解码的视频帧,从而保证解码后的视频帧的播放连续性更好;当然,在另一种实施例中,也可以不进行参考帧的判断,直接对所述拆分包的所属帧进行解码。
步骤s514:解码所述拆分包的所属帧。
可以看出,本发明实施例所提供视频帧丢包的处理方法,通过对拆分包的所属帧所包含的首拆分包的帧首包号标识、尾拆分包的帧尾包号标识以及原始序列号的设置,可以直接确定所属帧的组帧方式和组帧的可能性,操作方法简单,效率较高。
下面对站在发送端的角度,对本发明实施例提供的视频帧丢包的处理装置进行介绍,下文描述的视频帧丢包的处理装置可以认为是,发送端(如:服务器)为实现本发明实施例提供的视频帧丢包的处理方法所需设置的功能模块架构。下文描述的视频帧丢包的处理装置的内容,可与上文描述的视频帧丢包的处理方法的内容相互对应参照。
图7为本发明实施例提供的视频帧丢包的处理装置的一框图,该视频帧丢包的处理装置可应用于终端,参照图7,该视频帧丢包的处理装置可以包括:
拆分包获取单元100,适于获得拆分包,所述拆分包包括表示所述拆分包组帧顺序的原始序列号。
发送端的拆分包获取单元100获得拆分包,具体地,所获得的拆分包可以是首次发送所需要获得的拆分包,也可以是接收到重传请求后查找到的需要重传的拆分包。
在所获得的拆分包是首次发送的拆分包的情况下,在发送端首先利用编码器对视频的原始数据进行编码,由于编码出来的数据可能会比较大,则需要对数据进行拆包处理,拆分后的每一个拆分包同时具备标识其在接收端进行组帧的原始序列号,可以理解的是,原始序列号和拆分包是一一对应的,并且标识了拆分包的组帧顺序,并且在拆包时,可以同时获得多个拆分包和多个与不同的拆分包分别一一对应的原始序列号,然后在具体发送前,拆分包获取单元100再获取当前要发送的拆分得到的拆分包。
在获取到的拆分包是通过重传请求查找到的拆分包的情况下,在发送端的拆分包获取单元100通过原始序列号与拆分包的对应关系,查找到即可。
需要说明的是,在一实施例中,原始序列号的排列顺序可以是按照组帧顺序依次加1,此种方式的原始序列号,在使用时的计算方法简单,更易操作;在其他实施例中,原始序列号的排列顺序还可以是其他的计算规则,比如顺序加2等,只要能够标识不同的拆分包,并可以说明拆分包的组帧顺序都是可以的。
发送序列号生成单元110,适于生成与所述拆分包的发送顺序相对应的发送序列号,并将所述发送序列号添加到所述拆分包,所述发送序列号与所述原始序列号相对应。
得到拆分包后,由于拆分包的发送顺序和组帧顺序并非完全一致,为了标明拆分包的发送顺序,发送端的发送序列号生成单元110还需要生成与拆分包的发送顺序相对应的发送序列号,并将发送序列号添加到拆分包,这样接收端接收到拆分包,根据拆分包的发送序列号就可以判断按照这个顺序发送的拆分包是否收到,当然,发送序列号与拆分包相对应,与原始序列号也相对应,但在拆分包需要重发的情况下,每发送一次便根据当前的发送顺序生成一个发送序列号,所以会有多个发送序列号对应一个原始序列号,也就是发送序列号与原始序列号的对应关系为多对一的关系。发送序列号的生成是随着发送顺序而而定的,因此发送序列号是一个一个产生的。
从而,发送序列号对应的是拆分包的发送顺序,正常情况下,先发送的拆分包即发送序列号排列靠前的拆分包应当先被接收端接收,如果发送序列号靠后的拆分包先被接收,则先发送的拆分包丢包的概率较大,为保证传输的时效性,可以及时响应发送重传请求。
可以理解的是,为方便排序和计算,在一种实施例中,发送序列号的编辑可以是根据发送顺序依次加1的方式,当然,在其他实施例中,发送序列号的编辑也可以是其他方式,比如根据发送顺序依次加2或者甚至是减1等等,都是可以的。
拆分包发送单元120,适于根据所述发送序列号发送所述拆分包,以便接收端根据当前接收的拆分包的发送序列号与已接收的拆分包的发送序列号的连续性判断是否存在丢失的拆分包。
发送序列号生成完成,发送端的拆分包发送单元120即可根据发送序列号发送拆分包。
在没有重传的情况下,发送序列号可以跟原始序列号的排列相同,从而方便接收端对拆分包排序和组帧;在有重传的情况下,则需要根据当前的发送顺序,将下一顺序定为需要重传的拆分包的发送顺序,从而重传的拆分包能够以最快的速度再次发送至接收端,保证接收端的后续处理的及时性,而此种情况下,后续的首次发送的拆分包的发送序列号则在重新发送的拆分包的发送序列号后顺序生成,而拆分包的发送则是基于发送序列号所标识的顺序,不论拆分包是首次发送的拆分包还是重新发送的拆分包。
可见,通过发送端的拆分包获取单元100和发送序列号生成单元110的设置,拆分包同时具备了发送序列号和原始序列号,一方面可以保证视频帧解码的顺利进行,即使是后续收到的拆分包,也能够在收到后根据原始序列号排列插入到其组帧的位置,另一方面,基于发送系列号的连续性,接收端可以及时发现丢包,并执行判断,为缩短判断丢包的时间提供了基础,提高了在网络抖动的环境下的适应能力,从而可以缩短视频帧的传输时间,进而保证流媒体的播放质量和人们观看流媒体时的体验。
本发明实施例提供的终端可以通过程序形式装载上述所述的程序模块架构,以实现本发明实施例提供的终端执行的素材获取方法;可选的,图8示出了本发明实施例提供的发送端设备的一种可选硬件架构,可以包括:至少一个处理器1,至少一个通信接口2,至少一个存储器3和至少一个通信总线4;
在本发明实施例中,处理器1、通信接口2、存储器3、通信总线4的数量为至少一个,且处理器1、通信接口2、存储器3通过通信总线4完成相互间的通信;显然,图7所示的处理器1、通信接口2、存储器3和通信总线4的通信连接示意仅是可选的一种方式;
可选的,通信接口2可以为通信模块的接口,如gsm模块的接口;
处理器1可能是中央处理器cpu,或者是特定集成电路asic(applicationspecificintegratedcircuit),或者是被配置成实施本发明实施例的一个或多个集成电路。
存储器3可能包含高速ram存储器,也可能还包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。
其中,存储器3存储有程序,处理器1调用存储器3所存储的程序,以实现本发明实施例提供的终端执行的素材获取方法。
下面对站在接收端的角度,对本发明实施例提供的视频帧丢包的处理装置进行介绍,下文描述的视频帧丢包的处理装置可以认为是,接收端设备为实现本发明实施例提供的视频帧丢包的处理方法所需设置的功能模块架构。下文描述的视频帧丢包的处理装置的内容,可与上文描述的视频帧丢包的处理方法的内容相互对应参照。
图9为本发明实施例提供的视频帧丢包的处理装置的另一框图,该视频帧丢包的处理装置可应用于接收端设备,参照图8,该视频帧丢包的处理装置可以包括:
拆分包接收单元200,适于通接收拆分包,所述拆分包包括原始序列号和发送序列号;所述原始序列号表示所述拆分包的组帧顺序,所述发送序列号与所述拆分包的发送顺序相对应,所述发送序列号与所述原始序列号相对应;
在接收端的拆分包接收单元200接收到拆分包以后,接收端一方面可以利用原始序列号对刚接收到的拆分包和已经接收到的拆分包进行排序,为后续的组帧做准备,另一方面则可以利用发送序列号判断是否有发送但未接收到(即丢失)的拆分包。
丢包确定单元210,适于根据所述拆分包的发送序列号与已接收的拆分包的发送序列号的连续性判断是否存在丢失的拆分包。
发送序列号代表的是拆分包的发送顺序,因此可以理解为发送序列号生成则拆分包发送,当然发送序列号是按照发送顺序和编排规则生成,因此,接收端接收到拆分包后,根据拆分包的拆分包的发送序列号与已接受的拆分包的发送序列号的连续性就可以判断是否存在丢失的拆分包。
需要说明的是,本发明实施例所述的发送序列号的连续性是指满足发送序列号编排规则下的连续,比如:当编排规则为顺序加1时,则发送序列号的连续是指相邻接收到的拆分包的发送序列号的差值是1,即1、2、3;而当编排规则为顺序加2时,则发送序列号的连续是指相邻接收到的拆分包的发送序列号的差值是2,即1、3、5。
具体在判断连续性时,在一种实施例中,可以首先计算当前接收到的拆分包的发送序列号与前一接收到的拆分包的发送序列号的差值,然后将差值所规定的发送序列号的编排规则的差值进行比较,如果一致,则连续;否则,则存在丢失的拆分包,通过计算,进一步可以得到丢失的拆分包的发送序列号,如果同时缺失了多个,则要获得多个缺失的发送序列号。
在其他实施例中,还可以通过其他方式判断发送序列号的连续性,比如:通过计算当前接收的拆分包的发送序列号与前面多个接收到的拆分包的发送序列号进行计算等等。
从而,每接收到一个拆分包,就利用该发送序列号与已接收到的拆分包的发送序列号进行确定,从而无需等待过长的时间,缩短了丢包的判断时间,提高了在网络抖动的环境下的适应能力,从而可以缩短视频帧的传输时间,进而保证流媒体的播放质量和人们观看流媒体时的体验。
本发明实施例提供的接收端可以通过程序形式装载上述所述的程序模块架构,以实现本发明实施例提供的接收端的视频帧丢包的处理方法;可选的,接收端的硬件架构可一同参照图7所示,包括:至少一个存储器3和至少一个处理器1;
其中,存储器存储有程序,处理器调用所述程序,以实现本发明实施例提供的接收端的视频帧丢包的处理方法。
本发明实施例还提供一种计算机可读存储介质,计算机可读存储介质存储有计算机可执行指令,当该指令被处理器执行时可以实现如上所述视频帧丢包的处理方法。
获得拆分包,所述拆分包包括表示所述拆分包组帧顺序的原始序列号;生成与所述拆分包的发送顺序相对应的发送序列号,并将所述发送序列号添加到所述拆分包,所述发送序列号与所述原始序列号相对应,根据所述发送序列号发送所述拆分包,以便当前接收的拆分包的发送序列号与已接收的拆分包的发送序列号的连续性判断是否存在丢失的拆分包。这样,通过设置用于确定拆分包的组帧顺序的原始序列号,可以保证接收端在接收到拆分包的时候,根据原始序列号对多个拆分包进行排序,保证属于同一个视频帧的拆分包顺利组帧;而发送序列号对应的是拆分包的发送顺序,当接收端接收到该拆分包的时候,通过发送序列号就可以判断在该接收到的拆分包之前所发送的拆分包是否收到,并且发送序列号的顺序性代表了拆分包发送的前后时间,如果接收端根据接收到的拆分包的发送序列号排列,发现发送序列号不连续时,就可以判断缺失的发送序列号的拆分包丢包,从而可以及时地进行后续的处理,而无需继续等待到设定的时间。可见,通过发送序列号和原始序列号的设置,一方面可以保证视频帧解码的顺利进行,即使是后续收到的拆分包,也能够在收到后根据原始序列号排列插入到其组帧的位置,另一方面,基于发送系列号的连续性,接收端可以及时发现丢包,并执行判断,为缩短判断丢包的时间提供了基础,提高了在网络抖动的环境下的适应能力,从而可以缩短视频帧的传输时间,进而保证流媒体的播放质量和人们观看流媒体时的体验。
上述本发明的实施方式是本发明的元件和特征的组合。除非另外提及,否则所述元件或特征可被视为选择性的。各个元件或特征可在不与其它元件或特征组合的情况下实践。另外,本发明的实施方式可通过组合部分元件和/或特征来构造。本发明的实施方式中所描述的操作顺序可重新排列。任一实施方式的一些构造可被包括在另一实施方式中,并且可用另一实施方式的对应构造代替。对于本领域技术人员而言明显的是,所附权利要求中彼此没有明确引用关系的权利要求可组合成本发明的实施方式,或者可在提交本申请之后的修改中作为新的权利要求包括。
本发明的实施方式可通过例如硬件、固件、软件或其组合的各种手段来实现。在硬件配置方式中,根据本发明示例性实施方式的方法可通过一个或更多个专用集成电路(asic)、数字信号处理器(dsp)、数字信号处理器件(dspd)、可编程逻辑器件(pld)、现场可编程门阵列(fpga)、处理器、控制器、微控制器、微处理器等来实现。
在固件或软件配置方式中,本发明的实施方式可以模块、过程、功能等形式实现。软件代码可存储在存储器单元中并由处理器执行。存储器单元位于处理器的内部或外部,并可经由各种己知手段向处理器发送数据以及从处理器接收数据。
对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其他实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是符合与本文所公开的原理和新颖特点相一致的最宽的范围。
虽然本发明实施例披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。
1.一种视频帧丢包的处理方法,其特征在于,包括:
获得拆分包,所述拆分包包括表示所述拆分包的组帧顺序的原始序列号;
生成与所述拆分包的发送顺序相对应的发送序列号,并将所述发送序列号添加到所述拆分包,所述发送序列号与所述原始序列号相对应;
根据所述发送序列号发送所述拆分包,以便接收端根据当前接收的拆分包的发送序列号与已接收的拆分包的发送序列号的连续性判断是否存在丢失的拆分包。
2.如权利要求1所述的视频帧丢包的处理方法,其特征在于,所述获得拆分包的步骤包括:
当未接收到包含丢失的发送序列号的重传请求时,根据已发送的拆分包的最后一个原始序列号,找到新的拆分包,获得新的拆分包。
3.如权利要求1所述的视频帧丢包的处理方法,其特征在于,所述获得拆分包的步骤包括:
当接收到包含丢失的发送序列号的重传请求时,根据所述丢失的发送序列号查找相对应的原始序列号及与所述相对应的原始序列号对应的拆分包,找到所查找的拆分包,获得所查找的拆分包。
4.如权利要求3所述的视频帧丢包的处理方法,其特征在于,所述拆分包还包括表示所述拆分包的重要性的重要性标识;
所述获得拆分包的步骤包括:
所述当接收到包含丢失的发送序列号的重传请求时,根据所述丢失的发送序列号查找相对应的原始序列号及与所述相对应的原始序列号对应的拆分包,找到所查找的拆分包的步骤之后还包括:
根据所述重要性标识确定所查找的拆分包的重要性;
若当前网络传输速度与所查找的拆分包的重要性相应的网络传输速度匹配,则获得所述所查找的拆分包;
若当前网络传输速度与所述所查找的拆分包的重要性相应的网络传输速度不匹配,则根据已发送的拆分包的最后一个原始序列号,找到新的拆分包,获得新的拆分包。
5.如权利要求4所述的视频帧丢包的处理方法,其特征在于,所述拆分包还包括表示所述拆分包的所属帧的所属帧标识,
所述根据已发送的拆分包的最后一个原始序列号,找到新的拆分包,获得新的拆分包的步骤包括:
获取所述所查找的拆分包的所属帧标识;
根据已发送的拆分包的最后一个原始序列号和所查找的拆分包的所属帧标识,找到与所查找的拆分包的所属帧标识不同的首异帧拆分包;
获得所述首异帧拆分包。
6.如权利要求5所述的视频帧丢包的处理方法,其特征在于,
所述根据已发送的拆分包的最后一个原始序列号和所查找的拆分包的所属帧标识,找到与所查找的拆分包的所属帧标识不同的首异帧拆分包的步骤还包括:
根据所述重要性标识确定所述首异帧拆分包的重要性;
若当前网络传输速度与所述首异帧拆分包的重要性相应的网络传输速度匹配,获得所述异帧拆分包。
7.如权利要求6所述的视频帧丢包的处理方法,其特征在于,
所述获得拆分包的步骤还包括:
若当前网络传输速度与所述首异帧拆分包的重要性相应的网络传输速度不匹配,根据所述首异帧拆分包的所属帧标识,查找新的异帧拆分包。
8.如权利要求1-7任一项所述的视频帧丢包的处理方法,其特征在于,所述拆分包所归属的帧为所属帧,所述所属帧包括首拆分包和尾拆分包,所述首拆分包由帧首包号标识,所述尾拆分包由帧尾包号标识。
9.如权利要求8所述的视频帧丢包的处理方法,其特征在于,所述拆分包还包括参考帧标识,所述参考帧标识适于标识所述拆分包的参考帧,以便所述接收端根据所述参考帧的完整性确定是否解码所述所属帧。
10.一种视频帧丢包的处理方法,其特征在于,包括:
接收拆分包,所述拆分包包括原始序列号和发送序列号;所述原始序列号表示所述拆分包的组帧顺序,所述发送序列号与所述拆分包的发送顺序相对应,所述发送序列号与所述原始序列号相对应;
根据所述拆分包的发送序列号与已接收的拆分包的发送序列号的连续性判断是否存在丢失的拆分包。
11.如权利要求10所述的视频帧丢包的处理方法,其特征在于,还包括:
当所述拆分包的发送序列号与已接收的拆分包的发送序列号不连续时,确定丢失的发送序列号,发送包含丢失的发送序列号的重传请求。
12.如权利要求10或11所述的视频帧丢包的处理方法,其特征在于,还包括:
根据所述原始序列号,对所述拆分包进行组帧,得到所述拆分包的所属帧。
13.如权利要求12所述的视频帧丢包的处理方法,其特征在于,
所述根据所述原始序列号,对所述拆分包进行组帧,得到所述拆分包的所属帧的步骤包括:
根据所述原始序列号排列所述拆分包;
判断所述拆分包是否满足组帧条件;所述组帧条件包括:所述拆分包的所属帧的首拆分包和尾拆分包已接收,且所述首拆分包与所述尾拆分包间排列的中间拆分包的原始序列号连续;其中,所述拆分包的所属帧的首拆分包由帧首包号标识,尾拆分包由帧尾包号标识;
若所述拆分包满足组帧条件,按照原始序列号对所述首拆分包,所述中间拆分包及所述尾拆分包进行组帧,得到所述拆分包的所属帧。
14.如权利要求13所述的视频帧丢包的处理方法,其特征在于,所述拆分包还包括参考帧标识,所述参考帧标识适于标识所述拆分包的参考帧;
所述处理方法还包括:
当根据所述参考帧标识所确定的所述拆分包的参考帧为所述所属帧或解码完成的视频帧时,解码所述拆分包的所属帧。
15.如权利要求14所述的视频帧丢包的处理方法,其特征在于,所述接收完整的视频帧为所属帧或所述所属帧的前一帧。
16.一种视频帧丢包的处理装置,其特征在于,包括:
拆分包获取单元,适于获得拆分包,所述拆分包包括表示所述拆分包组帧顺序的原始序列号;
发送序列号生成单元,适于生成与所述拆分包的发送顺序相对应的发送序列号,并将所述发送序列号添加到所述拆分包,所述发送序列号与所述原始序列号相对应;
拆分包发送单元,适于根据所述发送序列号发送所述拆分包,以便接收端根据当前接收的拆分包的发送序列号与已接收的拆分包的发送序列号的连续性判断是否存在丢失的拆分包。
17.一种发送端设备,其特征在于,包括至少一个存储器和至少一个处理器;所述存储器存储有程序,所述处理器调用所述程序,以执行如权利要求1-9任一项所述的视频帧丢包的处理方法。
18.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,其特征在于,当该指令被处理器执行时可以实现如权利要求1-9任一项所述的视频帧丢包的处理方法。
19.一种视频帧丢包的处理装置,其特征在于,包括:
拆分包接收单元,适于接收拆分包,所述拆分包包括原始序列号和发送序列号;所述原始序列号表示所述拆分包的组帧顺序,所述发送序列号与所述拆分包的发送顺序相对应,所述发送序列号与所述原始序列号相对应;
丢包确定单元,适于根据所述拆分包的发送序列号与已接收的拆分包的发送序列号的连续性判断是否存在丢失的拆分包。
20.一种接收端设备,其特征在于,包括至少一个存储器和至少一个处理器;所述存储器存储有程序,所述处理器调用所述程序,以执行如权利要求10-15任一项所述的视频帧丢包的处理方法。
21.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,其特征在于,当该指令被处理器执行时可以实现如权利要求10-15任一项所述的视频帧丢包的处理方法。
技术总结