一种自适应重传等待时间的视频接收方法及系统与流程

文档序号:20765451发布日期:2020-05-15 18:51阅读:245来源:国知局
一种自适应重传等待时间的视频接收方法及系统与流程

本发明涉及一种自适应重传等待时间的视频接收方法,同时涉及相应的视频接收系统,属于ip多媒体监控调度通信领域。



背景技术:

目前ip多媒体监控调度系统中的视频通话在网络条件不好的条件下,明显影响视频的质量,导致视频卡顿、延时。

现有视频接收方法一般接收到完整一帧视频数据包后把该帧视频数据包发送到解码层进行解码显示。在存在网络丢包、乱序的情况下,会缓存不完整的视频帧,等待重传包或者乱序包接收到后,排序过程判断到完整视频帧后再进行一帧视频数据送入解码层进行解码显示。

另外,在网络不好的情况下一旦所接收的视频数据包发生丢包,视频数据包排序缓存过程会一直等待丢失包传输到本地。如果丢失包的等待时间设置的过大,则在存在丢失包且重传失败的情况一直等待,导致视频解码过程卡顿严重。如果丢失包的等待时间设置的过小,则重传包或者乱序包还没传输到本地就已经丢弃掉该帧数据,导致视频卡顿加重,视频质量严重下降。



技术实现要素:

本发明所要解决的首要技术问题在于提供一种自适应重传等待时间的视频接收方法。

本发明所要解决的另一技术问题在于提供一种自适应重传等待时间的视频接收系统。

为了实现上述目的,本发明采用下述的技术方案:

根据本发明实施例的第一方面,提供一种自适应重传等待时间的视频接收方法,包括如下步骤:

步骤s1:持续接收每一帧视频数据对应的rtp数据包,并按照视频帧顺序依次判断每一帧所述视频数据的rtp数据包是否满足完整一帧;

步骤s2:如果判断到某一帧视频数据的rtp数据包满足完整一帧,则输出到解码层进行解码显示;否则,动态调整重传等待时间;

步骤s3:如果某一帧视频数据缺少的rtp数据包在所述重传等待时间内接收成功,则输出到所述解码层进行解码显示;否则,丢弃该帧视频数据,遍历下一个视频数据的rtp数据包。

其中较优地,步骤s1包括如下子步骤:

步骤s11:将接收的rtp数据包保存在缓存队列中;

步骤s12:根据每个所述rtp数据包的封装消息,将所述rtp数据包进行排序;

步骤s13:根据排序后的rtp数据包,依次判断每一帧所述视频数据的rtp数据包是否满足完整一帧。

其中较优地,将所述rtp数据包进行排序时,每接收一个rtp数据包,根据所述rtp数据包的序列号,并按照序列号从小到大的顺序,将所述rtp数据包插入到所述缓存队列中按顺序已进行保存的rtp数据包的相应位置。

其中较优地,判断每一帧所述视频数据的rtp数据包是否满足完整一帧包括如下子步骤:

步骤s130:根据包含有帧结束符的rtp数据包,确认出每一帧所述视频数据的rtp数据包范围;

步骤s131:根据每一帧所述视频数据的rtp数据包范围,判断每一帧所述视频数据是否缺失rtp数据包。

其中较优地,判断到所述某一帧视频数据的rtp数据包不满足完整一帧,动态调整所述重传等待时间,包括如下子步骤:

步骤21:计算当前不完整帧视频数据的重传包时间;

步骤s22:计算所述当前不完整帧视频数据的视频帧间隔时间;

步骤s23:根据所述重传包时间和所述视频帧间隔时间,确定出所述当前不完整帧视频数据的重传等待时间。

其中较优地,所述当前不完整帧视频数据的重传包时间为当前某一段时间内,计算所接收的多个缺失的rtp数据包的重传包时间的平均值。

其中较优地,每个缺失的rtp数据包的重传包时间为从向视频发送端请求重新发送所缺失的某一个rtp数据包开始,到视频接收端接收到重新发送的所述rtp数据包所经历的时间。

其中较优地,所述当前不完整帧视频数据的视频帧间隔时间为位于所述当前不完整帧视频数据前某一段时间内最后多帧视频数据的视频帧间隔时间的平均值。

其中较优地,所述当前不完整帧视频数据的重传等待时间为所述当前不完整帧视频数据的重传包时间和视频帧间隔时间中数值大的一个。

根据本发明实施例的第二方面,提供一种自适应重传等待时间的视频接收系统,包括依次连接的视频接收模块、重传包模块和视频解码模块;

所述视频接收模块,用于持续接收每一帧视频数据对应的rtp数据包;

所述重传包模块,用于按照视频帧顺序依次判断每一帧所述视频数据的rtp数据包是否满足完整一帧,如果是则输出到所述视频解码模块进行解码显示;否则,动态调整重传等待时间,并判断所缺少的rtp数据包在所述重传等待时间内是否能接收成功,如果接收成功则则输出到所述视频解码模块进行解码显示,否则丢弃当前不完整帧视频数据,遍历下一个视频数据的rtp视频包。

与现有技术相比较,本发明所提供的自适应重传等待时间的视频接收方法及系统具有如下特点:

1.综合网络情况和视频帧间隔时间来动态调整重传等待时间,比固定等待时间更灵活,减少了网络状况好的情况下多等待,网络状况不好的情况下丢弃帧等异常情况。

2.一帧视频数据在接收到后会等待一个重传包的时间,保证丢失的数据包有足够的时间来重发并接收。

3.根据视频帧间隔来调整重传等待时间,保证低帧率情况下有更多的机会接收重传包。

4.有效改善了网络波动情况下的视频卡顿问题,有效提升了指挥调度系统的监控视频质量,并且更灵活、方便。

附图说明

图1为本发明所提供的自适应重传等待时间的视频接收方法的流程图;

图2为本发明所提供的自适应重传等待时间的视频接收系统的结构图。

具体实施方式

下面结合附图和具体实施例对本发明的技术内容做进一步的详细说明。

为了减少视频卡顿现象,达到提高ip多媒体指挥调度系统的视频解码效果的目的,如图1所示,本发明所提供的自适应重传等待时间的视频接收方法,包括如下步骤:

步骤s1:持续接收每一帧视频数据对应的rtp数据包,并按照视频帧顺序依次判断每一帧视频数据的rtp数据包是否满足完整一帧。

在进行ip多媒体监控调度系统的视频通话业务时,摄像头所采集的视频数据将以每秒多帧的传输速度传输至视频接收端。例如,摄像头每秒向视频接收端传输15~30帧视频数据。其中,将摄像头所采集的每一帧视频数据封装成多个rtp数据包后,传输至视频接收端。视频接收端持续接收每一帧视频数据对应的rtp数据包,并按照视频帧顺序依次判断每一帧视频数据的rtp数据包是否满足完整一帧,包括如下子步骤:

步骤s11:将接收的rtp数据包保存在缓存队列中。

在视频接收端设置有缓存队列,用于保存接收到的rtp数据包。

步骤s12:根据每个rtp数据包的封装消息,将rtp数据包进行排序。

视频接收端每接收一个rtp数据包,不仅会将该rtp数据包保存至缓存列表,还会根据该rtp数据包的封装消息,将该rtp数据包插入到缓存队列中已经排好序的rtp数据包的相应位置。

具体的说,每个rtp数据包的封装消息包含有序列号、时间戳、同步源标识符等信息。其中本自适应重传等待时间的视频接收方法主要使用每个rtp数据包的封装消息中的序列号和时间戳。并且,在每一帧视频数据的最后一个rtp数据包中还包含有帧结束符,一般为1,用于判断每一帧视频数据是否结束。根据每一帧视频数据已经编好序列号的rtp数据包,视频接收端每接收一个rtp数据包,就会根据该rtp数据包的序列号,并按照序列号从小到大的顺序,将该rtp数据包插入到缓存队列中按顺序已进行保存的rtp数据包的相应位置。

步骤s13:根据排序后的rtp数据包,依次判断每一帧视频数据的rtp数据包是否满足完整一帧。

对缓存队列中按顺序已进行保存的rtp数据包,按照从序列号最小的开始,逐帧判断视频数据的rtp数据包是否满足完整一帧。rtp数据包是否满足完整一帧的过程包括如下子步骤:

步骤s130:根据包含有帧结束符的rtp数据包,确认出每一帧视频数据的rtp数据包范围;

由于在每一帧视频数据的最后一个rtp数据包中包含有帧结束符,一般为1,因此,对缓存队列中按顺序已进行保存的rtp数据包,按照从序列号最小的开始,以包含有帧结束符的rtp数据包作为每一帧是视频数据的最后一个rtp数据包,确认出每一帧视频数据的rtp数据包范围。例如,缓存队列中按顺序已进行保存的rtp数据包有100个,那么rtp数据包的排序为1~100,从第1个rtp数据包开始,假设第10个rtp数据包的帧结束符为1,则认为该帧视频数据包括10个rtp数据包,排序为1~10。

步骤s131:根据每一帧视频数据的rtp数据包范围,判断每一帧视频数据是否缺失rtp数据包。

由于每一帧视频数据的rtp数据包的序列号是连续的,因此,可以判断出步骤s130得到的每一帧视频数据的rtp数据包中是否缺失rtp数据包。如果判断到某一帧视频数据的rtp数据包出现缺失rtp数据包的情况,则认为该帧视频数据的rtp数据包不完整,即该帧视频数据的rtp数据包不满足完整一帧视频数据。例如,步骤s130得到的某一帧视频数据的10个rtp数据包中缺少序列号为7和9的rtp数据包,则认为该帧视频数据的rtp数据包不完整。

步骤s2:如果判断到某一帧视频数据的rtp数据包满足完整一帧,则输出到解码层进行解码显示;否则,动态调整重传等待时间。

如果步骤s130得到的某一帧视频数据的rtp数据包中没有缺失rtp数据包,则将该帧视频数据的rtp数据包输出到解码层进行解码显示。如果步骤s130得到的某一帧视频数据的rtp数据包中有缺失rtp数据包,则采用如下步骤实现动态调整所缺失的rtp数据包的重传等待时间。

步骤21:计算当前不完整帧视频数据的重传包时间。

由于视频接收端连续不间断的接收rtp数据包,并连续逐帧判断每一帧视频数据的rtp数据包是否有缺失,如果某一帧视频数据的rtp数据包有缺失,则向视频发送端请求重新发送该帧视频数据所缺失的rtp数据包,视频发送端将所缺失的的rtp数据包重新发送给视频接收端。将从向视频发送端请求重新发送该帧视频数据所缺失的某一个rtp数据包开始,到视频接收端接收到重新发送的某一帧视频数据所缺失的一个rtp数据包所经历的时间,作为该帧视频数据某一个缺失的rtp数据包的重传包时间(roundtriptime,rtt)。那么,在当前某一段时间内,计算所接收的多个缺失的rtp数据包的重传包时间的平均值,作为当前不完整帧视频数据的重传包时间。这样,可以根据当前网络状况,实时更新当前不完整帧视频数据的重传包时间。

步骤s22:计算当前不完整帧视频数据的视频帧间隔时间。

由于每一帧视频数据的每个rtp数据包所携带的时间戳信息相同,那么根据每一帧视频数据的每个rtp数据包所携带的时间戳信息,可以计算出生成一帧视频数据的视频帧间隔时间。例如,第一帧视频数据在第1ms时候生成,第2帧视频数据在第41ms时候生成,那么,生成第2帧视频数据的视频帧间隔时间为40ms。采用上述计算一帧视频数据的视频帧间隔时间的方法,计算出位于当前不完整帧视频数据前某一段时间内最后多帧视频数据的视频帧间隔时间的平均值,作为当前不完整帧视频数据的视频帧间隔时间。其中,根据每秒实际所传视频数据的帧数,确定位于当前不完整帧视频数据前某一段时间内最后多帧视频数据的数量。例如,每秒实际所传视频数据的帧数为30帧时,当前不完整帧视频数据为第31帧,可以计算出当前不完整帧视频数据前1秒内1~30帧视频数据的视频帧间隔时间的平均值,作为当前不完整帧视频数据的视频帧间隔时间。

步骤s23:根据重传包时间和视频帧间隔时间,确定出当前不完整帧视频数据的重传等待时间。

从步骤21和步骤s22得到的当前不完整帧视频数据的重传包时间和视频帧间隔时间中选取数值最大的,作为当前不完整帧视频数据的重传等待时间。

步骤s3:如果某一帧视频数据缺少的rtp数据包在重传等待时间内接收成功,则输出到解码层进行解码显示;否则,丢弃该帧视频数据,遍历下一个视频数据的rtp数据包。

如果当前不完整帧视频数据在其重传等待时间内可以接收到全部所缺少的rtp数据包,则将该帧视频数据输出到解码层进行解码显示。如果当前不完整帧视频数据在其重传等待时间内无法全部接收到全部所缺少的rtp数据包,则丢弃该帧视频数据,并根据步骤s1和s2的方法继续遍历缓存队列中下一个视频数据的rtp数据包,如此往复,直到遍历完所有帧视频数据。

如图2所示,本发明还提供了一种自适应重传等待时间的视频接收系统,包括依次连接的视频接收模块1、重传包模块2和视频解码模块3。

视频接收模块1,用于持续接收每一帧视频数据对应的rtp数据包。该视频接收模块1的功能同步骤s1中相关描述,在此不再赘述。

重传包模块2,用于按照视频帧顺序依次判断每一帧视频数据的rtp数据包是否满足完整一帧,如果是则输出到视频解码模块3进行解码显示;否则,动态调整重传等待时间,并判断所缺少的rtp数据包在重传等待时间内是否能接收成功,如果接收成功则则输出到视频解码模块3进行解码显示,否则丢弃当前不完整帧视频数据,遍历下一个视频数据的rtp数据包。该视频接收模块1的功能同步骤s1中相关描述,在此不再赘述。

与现有技术相比较,本发明所提供的自适应重传等待时间的视频接收方法及系统具有如下特点:

1.综合网络情况和视频帧间隔时间来动态调整重传等待时间,比固定等待时间更灵活,减少了网络状况好的情况下多等待,网络状况不好的情况下丢弃帧等异常情况。

2.一帧视频数据在接收到后会等待一个重传包的时间,保证丢失的数据包有足够的时间来重发并接收。

3.根据视频帧间隔来调整重传等待时间,保证低帧率情况下有更多的机会接收重传包。

4.有效改善网络波动情况下的视频卡顿问题,有效提升指挥调度系统监控视频质量,并且更灵活、方便。

以上对本发明所提供的自适应重传等待时间的视频接收方法及系统进行了详细的说明。对本领域的一般技术人员而言,在不背离本发明实质精神的前提下对它所做的任何显而易见的改动,都将属于本发明专利权的保护范围。

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