实时视频传输方法、装置、设备及系统与流程

文档序号:11180566阅读:1696来源:国知局
实时视频传输方法、装置、设备及系统与流程

本发明属于流媒体数据网络传输技术领域,具体涉及一种实时视频传输方法、装置、设备及系统。



背景技术:

随着网络技术的不断发展,人们对于实时视频业务等占用较大带宽的网络通信业务的需求不断加强。目前常见的传输实时视频流的做法是通过将ts(transportstream,传输流)承载在rtp(real-timetransportprotocol,实时传输协议)上,而rtp底层使用udp(userdatagramprotocol,用户数据报协议)进行传输,目前大量的使用wifi及3g、4g等无线网络通信连接互联网,由于udp本身是不可靠传输协议,以及无线网络的相对不稳定性,不可避免的造成部分rtp数据丢失。

为了解决rtp丢包问题,ietf(theinternetengineeringtaskforce,国际互联网工程任务组)分别制订了fec(前向纠错,也叫前向纠错码)和nack(协商确认,起到丢包重传的作用)两种算法来解决这个问题。但是,使用fec算法会增加数据的冗余,加大流媒体数据的占用带宽。nack算法引入了确认重传,会导致实时性较差。

根据现有技术常用的视频压缩编码算法,视频画面被编码为内部编码帧(i帧,又称关键帧)、多个前向预测帧(p帧)和双向内插帧(b帧)组成的图像序列。关键帧通常是每个gop(groupofpictures,画面组)的第一个帧,经过适度地压缩,做为随机访问的参考点,可以当成图像。p帧由在它前面的p帧和i帧预测而来,视频数据传输的过程中,由于数据丢失,会造成视频无法显示或显示模糊、卡顿,如果i帧数据不完整,会造成解码失败,无法显示视频画面,如果p帧丢失会影响到后面p帧的解码显示,使画面出现马赛克,p帧丢失的越多,马赛克越严重。在进行传输过程中,丢弃b帧数据包对于整个视频的解码显示影响很小。

申请号为201410577593.8的中国专利,公开了一种视频传输方法,通过获取当前网络传输质量信息,查找对应的视频编码参数,根据视频编码参数去除图片帧信息,再调整视频的码率和帧率,对视频编码后进行传输。该方法在网络质量下降时候调整了编码参数,降低了视频质量,导致视频画面的不清晰。另外,在网络质量经常变化情况下,该方法发送端会频繁地改变视频编码参数,进行相应的编码处理,导致处理效率的低下和处理延时的增大,影响接收端的用户体验。



技术实现要素:

本发明的目的之一在于克服以上缺点,实现在网络质量出现下降的环境下,尽可能降低网络带宽的使用,同时保证视频的传输质量。

为了解决上述技术问题,本发明提供了一种实时视频传输方法,包括以下步骤:

步骤1:发送端将视频帧数据编码为关键帧或非关键帧,发送rtp数据包给接收端;所述关键帧的发送时机由配置的间隔参数确定;

步骤2:接收端对rtp数据包进行处理,若处理成功,则显示视频帧,若处理失败,则发送重编关键帧或重传关键帧中缺失的rtp数据请求给发送端;

步骤3:发送端接收后,重编关键帧并修改关键帧的发送时机后向接收端发送,或向接收端重传关键帧中缺失的rtp数据;

重复上述步骤1-3直至所有视频帧数据传输完成。

本发明提出动态的关键帧间隔,在网络质量正常的情况下通过设置较大的关键帧间隔,从而减少关键帧的数量,降低传输的总数据量;在网络质量下降导致数据处理失败的情况下,由接收端发送重编关键帧或重传关键帧中缺失的rtp数据包请求。对于重编关键帧请求,发送端根据请求动态地进行关键帧编码并修改关键帧发送时机,减少接收端视频恢复的等待时间,保证视频画面的及时恢复。

进一步地,所述步骤1,还包括:

发送端将已发送的rtp数据包放入发送数据缓冲区,当接收到重传关键帧中缺失的rtp数据请求时,优先查找所述发送数据缓冲区。

通过设置发送数据缓冲区,提高发送端重传关键帧中缺失的rtp数据时候查找数据的处理效率,缩短了处理时间。

进一步地,所述步骤2接收端对rtp数据包进行处理,具体为:

接收rtp数据包至接收数据缓冲区;

判断rtp数据包是否为请求重传关键帧中缺失的数据;

若非重传关键帧中缺失的rtp数据,进行正常数据帧处理;

若是重传关键帧中缺失的rtp数据,进行关键帧重处理。

进一步地,所述步骤2还包括:接收端设置等待缓冲区,用于缓存重传关键帧已接收的rtp数据包。

本发明的接收端采用了双缓冲区机制,等待缓冲区缓存重传关键帧已接收的rtp数据包,接收数据缓冲区可以继续接收后续的rtp数据包,进行组帧操作,当不完整的关键帧接收完 整后,可以连续解码显示重传关键帧及后续的视频帧,减少由于等待重传数据造成的实时视频延时。

进一步地,所述接收端是根据设置的抖动延时从所述接收缓冲区读取rtp数据包。

通过添加抖动延时可缓解由于网络传输过程中造成的rtp数据包乱序的问题。

进一步地,所述正常数据帧处理,包括以下步骤:

对接收数据缓冲区中的rtp包进行组帧,并判断视频帧是否完整;

若视频帧完整,则进行视频帧解码操作,解码成功则标识处理结果为成功,否则标识处理结果为失败,并发送重编关键帧请求给发送端;

若视频帧不完整,则进一步判断视频帧是否为关键帧,若该视频帧为关键帧,将已接收的rtp数据包写入等待缓冲区,标记处理结果为失败,并发送重传关键帧中缺失的rtp数据请求给发送端,通知发送端重传关键帧中丢失的rtp数据;若该视频帧为非关键帧,则丢弃该视频帧,再判断两连续的关键帧之间已经抛弃的非关键帧数量是否达到阈值,若已经达到阈值,标记处理结果为失败,并发送重编关键帧请求给发送端,否则标记处理结果为成功。

上述技术方案在视频帧不完整的情况下,会根据视频帧的类型进行不同的处理:如果是关键帧则请求重传关键帧中缺失的rtp数据包,这样能够保证视频画面的完整性;如果是非关键帧且累计丢弃帧数在设置阀值范围内,则直接丢弃帧,等待下一个视频帧,这样处理的有益效果是减少重编关键帧的网络开销,保证视频的流畅度,而对视频画面的影响只有轻微马赛克或较小的延时;如果累计非关键帧丢弃帧数达到阀值,此时发送重编关键帧请求,保证视频画面的清晰度。

进一步地,所述进行关键帧重处理,包括以下步骤:

将接收的重传关键帧的rtp数据包写入等待缓冲区;

对等待缓冲区中的rtp包进行组帧,并判断等待缓冲区的重传关键帧是否完整;

若重传关键帧完整,则进行视频帧解码操作,解码成功则标识处理结果为成功,否则标识处理结果为失败,并发送重编关键帧请求给发送端;

若重传关键帧不完整,则进一步判断是否等待超时,若等待未超时,则继续等待,否则清空接收数据缓冲区和等待缓冲区,标识处理结果为失败,并发送重编关键帧请求给发送端。

上述技术方案通过设置等待超时阀值,保证在网络质量下降的情况下,接收端不会无限制的一直等待接收请求重传的关键帧中的rtp数据包而导致视频画面的卡顿。

相应地,本发明还提供了一种实时视频传输装置,包括:

发送模块一,用于执行步骤1:发送端将视频帧数据编码为关键帧或非关键帧,发送rtp数据包给接收端;所述关键帧的发送时机由配置的间隔参数确定;

接收模块,用于执行步骤2:接收端对rtp数据包进行处理,若处理成功,则显示视频帧,若处理失败,则发送重编关键帧或重传关键帧中缺失的rtp数据请求给发送端;

发送模块二,用于执行步骤3:发送端接收后,重编关键帧并修改关键帧的发送时机后向接收端发送,或向接收端重传关键帧中缺失的rtp数据;

循环模块,用于重复上述步骤1-3直至所有视频帧数据传输完成。

进一步地,所述接收模块,包括:

接收单元,用于接收rtp数据包至接收数据缓冲区;

判断单元,用于判断rtp数据包是否为请求重传关键帧中缺失的数据;

第一处理单元,用于若非重传关键帧中缺失的rtp数据,进行正常数据帧处理;

第二处理单元,用于若是重传关键帧中缺失的rtp数据,进行关键帧重处理。

进一步地,所述接收模块,还包括:

等待缓冲单元,用于接收端设置等待缓冲区,缓存重传关键帧已接收的rtp数据包。

进一步地,所述第一处理单元,包括:

第一判断构件,用于对接收数据缓冲区中的rtp包进行组帧,并判断视频帧是否完整;

第一解码构件,用于若视频帧完整,则进行视频帧解码操作,解码成功则标识处理结果为成功,否则标识处理结果为失败,并发送重编关键帧请求给发送端;

第一处理构件,用于若视频帧不完整,则进一步判断视频帧是否为关键帧,若该视频帧为关键帧,将已接收的rtp数据包写入等待缓冲区,标记处理结果为失败,并发送重传关键帧中缺失的rtp数据请求给发送端,通知发送端重传关键帧中丢失的rtp数据;若该视频帧为非关键帧,则丢弃该视频帧,再判断两连续的关键帧之间已经抛弃的非关键帧数量是否达到阈值,若已经达到阈值,标记处理结果为失败,并发送重编关键帧请求给发送端,否则标记处理结果为成功。

进一步地,所述第二处理单元,包括:

第二接收构件,用于将接收的重传关键帧的rtp数据包写入等待缓冲区;

第二判断构件,用于对等待缓冲区中的rtp包进行组帧,并判断等待缓冲区的重传关键帧是否完整;

第二解码构件,用于若重传关键帧完整,则进行视频帧解码操作,解码成功则标识处理结果为成功,否则标识处理结果为失败,并发送重编关键帧请求给发送端;

第二处理构件,用于若重传关键帧不完整,则进一步判断是否等待超时,若等待未超时,则继续等待,否则清空接收数据缓冲区和等待缓冲区,标识处理结果为失败,并发送重编关键帧请求给发送端。

相应地,本发明还提供了一种用于实时视频传输的设备,所述用于实时视频传输的设备为发送设备或接收设备,

所述发送设备用于将视频帧数据编码为关键帧或非关键帧,发送rtp数据包给接收设备;所述关键帧的发送时机由配置的间隔参数确定;所述发送设备还用于重编关键帧并修改关键帧的发送时机后向接收设备发送,或向接收设备发送请求的重传关键帧中缺失的rtp数据;

所述接收设备用于对rtp数据包进行处理,若处理成功,则显示视频帧,若处理失败,则发送重编关键帧或重传关键帧中缺失的rtp数据请求给发送设备。

相应地,本发明还提供了一种实时视频传输系统,包括发送端和接收端,所述发送端用于将视频帧数据编码为关键帧或非关键帧,发送rtp数据包给接收端;所述关键帧的发送时机由配置的间隔参数确定;所述发送端还用于重编关键帧并修改关键帧的发送时机后向接收端发送,或向接收端发送请求的重传关键帧中缺失的rtp数据;

所述接收端用于对rtp数据包进行处理,若处理成功,则显示视频帧,若处理失败,则发送重编关键帧或重传关键帧中缺失的rtp数据请求给发送端。

进一步地,所述发送端设置发送数据缓冲区用于缓存已发送的rtp数据包,当接收到重传关键帧中缺失的rtp数据请求时,优先查找所述发送数据缓冲区。

进一步地,所述接收端设置接收数据缓冲区和等待缓冲区,所述接收数据缓冲区用于缓存接收到的rtp数据包,所述等待缓冲区用于缓存重传关键帧已接收的rtp数据包。

综上所述,本发明技术方案的有益效果有:

1.本发明提出动态的关键帧间隔,在网络质量正常的情况下通过设置较大的关键帧间隔,从而减少关键帧的数量,降低传输的总数据量;在网络质量下降导致数据处理失败的情况下,由接收端发送重编关键帧或重传关键帧中缺失的rtp数据包请求。对于重编关键帧请求,发送端根据请求动态地进行关键帧编码并修改关键帧发送时机,减少接收端视频恢复的等待时间,保证视频画面的及时恢复;

2.发送端设置发送数据缓冲区,提高重传关键帧中缺失的rtp数据时候查找数据的处理效率,缩短了处理时间。接收端设置等待缓冲区和接收数据缓冲区,可同时并发处理rtp数据包,将重传关键帧中缺失的rtp数据导致的等待时间降至最少;

3.在视频帧不完整的情况下,会根据视频帧的类型进行不同的处理:如果是关键帧则请求重传关键帧中缺失的rtp数据,这样能够保证视频画面的完整性;如果是非关键帧且累计丢弃帧数在设置阀值范围内,则直接丢弃帧,等待下一个视频帧,这样可减少重编关键帧的网络开销,保证视频的流畅度,而对视频画面的影响只有轻微马赛克或较小的延时;如果连续两关键帧之间累计非关键帧丢弃帧数达到阀值,此时发送重编关键帧请求,保证视频画面 的清晰度;

4.接收端通过添加抖动延时缓解由于网络传输过程中造成的rtp数据包乱序的问题,同时通过设置等待超时阀值,保证在网络质量下降的情况下,接收端不会无限制的一直等待接收重传的关键帧rtp数据包而导致视频画面的卡顿。

附图说明

图1是本发明实施例的一种实时视频传输方法步骤流程图。

图2是本发明实施例的一种接收端对rtp数据包进行处理步骤流程图。

图3是本发明实施例的一种正常数据帧处理步骤流程图。

图4是本发明实施例的一种关键帧重处理步骤流程图。

图5是本发明实施例的一种实时视频传输装置结构框架图。

图6是本发明实施例的一种接收模块结构框架图。

图7是本发明实施例的一种第一处理单元结构框架图。

图8是本发明实施例的一种第二处理单元结构框架图。

图9是本发明实施例的一种用于实时视频传输的发送设备结构图。

图10是本发明实施例的另一种用于实时视频传输的接收设备结构图。

图11是本发明实施例的一种实时视频传输系统结构框架图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

如图1,是本发明实施例的一种实时视频传输方法步骤流程图,包括以下步骤:

步骤1:发送端将视频帧数据编码为关键帧或非关键帧,发送rtp数据包给接收端;所述关键帧的发送时机由配置的间隔参数确定;

众所周知,视频就是利用人类视觉暂留的原理通过播放一系列的图片,使人眼产生运动的感觉,其中每一幅静止的图片,我们称之为视频帧。为了方便视频文件在网络传输和存储,需要对视频进行压缩编码,减小文件体积。

目前常见的运动图像专家组压缩标准第2版(mpeg-2,movingpictureexpertsgroupcompressionstandardversion2)、h.264/avc(mpeg-4高级视频编码,advancedvideo coding)、视频编解码器-1(videocodec1,vc-1)、数字音视频编解码标准(avs,audiocodingstandard)等视音频压缩编码算法中,视频画面被编码为由内部编码帧(i帧,又称关键帧)、多个前向预测帧(p帧)和双向内插帧(b帧)组成的图像序列。i帧通常是每个gop(groupofpictures,画面组)的第一个帧,经过适度地压缩,做为随机访问的参考点,可以理解为这一帧画面的完整保留,解码时只需要本帧数据就可以完成;p帧表示这一帧跟之前的一个i帧(或p帧)的差别,解码时需要用之前缓存的画面叠加上本帧定义的差别,生成最终画面,前面的p帧丢失会影响到后面p帧的解码显示,使画面出现马赛克;b帧记录的是本帧与前后帧的差别,换言之,要解码b帧,不仅要取得之前的缓存画面,还要解码之后的画面,通过前后画面与本帧数据的叠加取得最终的画面。

三类帧里面,i帧压缩率最小,p帧压缩率其次,b帧压缩率最高,从对视频画面质量的影响来看,i帧影响最大,p帧其次,b帧影响很小。本发明的技术方案中,所述关键帧指的是i帧,所述非关键帧包括p帧和b帧,在不同网络质量环境下,本技术方案采用设置关键帧间隔参数来控制关键帧的数量,从而控制整个传输视频的数据量,该间隔参数可以根据网络质量情况设定不同的值,在网络质量允许的情况下尽可能设置较大的间隔参数。例如,在一网络环境较差的实施例中,该间隔参数设置为每隔5秒编码发送一幅关键帧数据;在另一网络环境较好的实施例中,间隔参数可以设置为10秒。

步骤2:接收端对rtp数据包进行处理,若处理成功,则显示视频帧,若处理失败,则发送重编关键帧或重传关键帧中缺失的rtp数据请求给发送端;

在视频传输的过程中,接收端主要负责接收rtp数据包,对rtp数据包进行组帧,再根据视频帧的不同类型采用对应方式解码成静态图像帧,最后将图像进行显示。在网络数据传输过程中,通常会遇到两种异常情况:第一种,由于网络的不稳定导致静态图像帧的数据包丢失,接收端无法得到完整的图像帧数据,此时接收端可根据对画面质量影响大小,决定是否向发送端请求重传rtp数据包;第二种,图像帧数据完整,但是在解码过程中出现错误,此时接收端将请求发送端重新编码关键帧。同时,由于视频是由一系列有序的图像画面组成,当进行重传rtp数据包的时候,后续的视频帧可进行组帧处理,但必须等待重传视频帧接收完整、组帧、解码、显示完成后,才能继续解码显示后续的视频帧;当请求重编视频帧的时候,接收端必须等待重编数据帧接收、组帧、解码、显示之后,再依次处理后续图像帧。

步骤3:发送端接收后,重编关键帧并修改关键帧的发送时机后向接收端发送,或向接收端重传关键帧中缺失的rtp数据;

虽然通过设置较大的关键帧间隔参数可以大大减少视频数据传输量,提高视频的流畅度,但是在发送数据包解码失败的时候,会造成视频画面的恢复时间较长,为解决该问题,本发 明的技术方案允许接收端在数据包解码失败的时候发送重编关键帧请求,发送端接收到重编关键帧请求后,立即将要求重编的图像帧编码为关键帧后做为下一帧发送给接收端,实现动态调整关键帧的发送时机。当接收端发现数据包丢失时,发送重传关键帧中缺失的rtp数据请求,发送端接收到请求后,查找要求重传的关键帧中缺失的rtp数据并发送给接收端。通过固定间隔编码关键帧和根据接收端动态请求编码关键帧这两种方式的相结合,可以实现保证视频画面质量的前提下,减少视频数据传输量,提高流畅度。

例如,在一具体的实施例中,在关键帧发送频率固定的情况下,发送端设置的关键帧间隔参数为10秒,在传输数据正常的情况下每间隔10秒发送一次关键帧,优选地,视频刚开始传输时可进行特殊处理,发送端视频数据开始传送的第0秒、第2秒、第4秒编码成关键帧,这样可以解决发送端和接收端处理时间不一致造成的开头部分数据丢失问题(由于刚开始发送关键帧的时间间隔短,即使接收端未成功接收前面一两帧的关键帧,对视频现实影响不大);同时,如果前4秒有收到重编关键帧的请求,为了避免频繁的发送关键帧,发送端不进行处理。从第4秒后开始,发送端每间隔10秒发送一次关键帧,即第14秒,第24秒…依此类推。如果有收到接收端重编关键帧的请求,立即将要求重编的图像帧编码为关键帧后做为下一帧发送给接收端,从发送该重编的关键帧起,然后再每间隔10秒发送下一个关键帧。例如,发送端第24秒编码关键帧后,在第28秒接收到重编关键帧请求,则立即将请求重编的图像帧编码为关键帧,并发送给接收端;然后在第38秒进行下一次发送关键帧。

当发送端接收到重传关键帧请求时,会将已经发送过的图像帧数据再次发送给接收端,优选地,本发明技术方案中的发送端还可设置发送数据缓冲区,缓存发送的rtp数据包,当接收到重传关键帧缺失的rtp数据包请求时,优先查找所述发送数据缓冲区。正常情况下,需要重传的关键帧均为刚发送不久的数据,通过设置发送数据缓冲区,可以减少从原始视频数据文件查找数据的概率,提高查找效率。例如,在网络延时较小的实施例中,可设置发送数据缓冲区大小为保存最近2秒钟已发送rtp数据;在网络延时较大的实施例中,可设置发送数据缓冲区大小为保存最近5秒钟已发送rtp数据。

重复上述步骤1-3直至所有视频帧数据传输完成。发送端和接收端协同工作,直至整个视频包含的所有图像帧都按照顺序接收、组帧、解码、显示完成。

如图2,是本发明实施例的一种接收端对rtp数据包进行处理步骤流程图,包括以下步骤:

步骤一、接收端将接收到的rtp数据包缓存至接收数据缓冲区;

接收端将所有的接收数据都存放在接收数据缓冲区内,再对数据进行组帧、解码、显示处理,由于视频图像帧的连续性,必须当前视频帧显示之后,才能显示下一帧视频图像。

在一优选的实施例中,除了接收数据缓冲区,接收端还设置等待缓冲区,在请求重传关键帧中缺失的rtp数据的情况下,用于缓存已接收不完整的帧数据,这样处理的有益效果是,接收数据缓冲区可以继续接收后续rtp数据包,进行后续视频帧的组帧处理,待重传关键帧接收完整、组帧、解码、显示完成后可立即解码显示后续视频帧,减少重传关键帧处理后的恢复时间。

步骤二、判断rtp数据包是否为重传关键帧中缺失的rtp数据;接收端根据接收数据包的类型选择后续的处理路径,做不同的处理;

步骤三、若非重传关键帧中缺失的rtp数据,进行正常数据帧处理;

如图3,是本发明实施例的一种正常数据帧处理步骤流程图,步骤如下:

对接收数据缓冲区中的rtp包进行组帧,并判断视频帧是否完整;

由于在视频数据网络传输过程中,一幅静态视频帧数据通常被分解成多个rtp数据包发送,每个rtp包都有网络序列号用于标识出数据的先后顺序,接收端收到rtp数据包后,要根据rtp包头信息,将多个rtp数据包组成原始的视频帧数据。

在一优选的实施例中,接收端对rtp数据包进行组帧前,是根据设置的抖动延时从接收缓冲区读取rtp数据包,添加抖动延时可缓解网络传输过程中rtp数据包乱序的问题。

若视频帧完整,则进行视频帧解码操作,解码成功则标识处理结果为成功,否则标识处理结果为失败;此处的解码是根据数据帧的类型做不同的处理:如果是i帧,只需要本帧数据就可以还原视频画面;如果是p帧,需要用之前缓存的画面叠加上本帧数据定义的差别,生成最终画面;如果是b帧,不仅要取得之前的缓存画面,还要解码之后的画面,通过前后画面的与本帧数据的叠加取得最终的画面。若解码成功,则显示该视频帧,若解码失败,需要发送重编关键帧请求。

若视频帧不完整,则进一步判断,若该视频帧为关键帧,将rtp数据包写入等待缓冲区以便后续接收重传数据后再次组帧,并标记处理结果为失败。由于关键帧对画面质量影响较大,这种情况下,接收端都将发起重传关键帧中缺失的rtp数据请求;

若该视频帧不完整且为非关键帧,由于少量的非关键帧缺失对视频画面质量影响较小,所以本技术方案采用了直接丢弃该视频帧的方式,这样就不需要进行数据的重传,减少网络带宽的占用。但是,如果在两连续的关键帧之间直接抛弃的非关键帧达到一定的数量,也会引起视频画面卡顿或马赛克等情况,所以本技术方案可设置在两连续的关键帧之间丢弃非关键帧的上限阈值,若已经达到该上限阈值,标记处理结果为失败,请求重编关键帧,否则标记处理结果为成功,不请求重编关键帧。例如,在一具体实施例中,两连续的关键帧之间允许抛弃非关键帧的上限阈值设置为10,接收端每次处理关键帧的时候,都将抛弃非关键帧的 累计值置零,当接收端抛弃一张非关键帧时,将累计值加1,若累计值不大于10,则继续处理后续视频帧,若累计值大于10,请求发送端重编关键帧,同时将累计值重新置零。

步骤四、若是重传关键帧中缺失的rtp数据,进行关键帧重处理。

如图4,是本发明实施例的一种关键帧重处理步骤流程图,步骤如下:

将接收的重传关键帧rtp数据包写入等待缓冲区;由于等待缓冲区里面已经缓存了之前收到的部分数据,后续只要将重传的rtp数据包写入等待缓冲区。

对等待缓冲区中的rtp包进行组帧,并判断等待缓冲区的重传关键帧数据是否完整;此处的组帧操作,与正常数据帧处理中的组帧操作方式一致。

若重传关键帧完整,则进行视频帧解码操作,解码成功则标识处理结果为成功,否则标识处理结果为失败;此处解码处理方式和正常帧处理方式一致,解码成功视频帧的进行画面显示,若解码失败,需要发送重编关键帧请求。

若重传关键帧不完整,此时需要根据设置的超时阈值判断,若等待时间未超过阈值,则继续等待,若等待时间已经超过阈值,这时候同时清空接收数据缓冲区和等待缓冲区,标识处理结果为失败,发送重编关键帧请求。

如图5,是本发明实施例的一种实时视频传输装置结构框架图,包括:

发送模块一,用于执行步骤1:发送端将视频帧数据编码为关键帧或非关键帧,发送rtp数据包给接收端;所述关键帧的发送时机由配置的间隔参数确定;

接收模块,用于执行步骤2:接收端对rtp数据包进行处理,若处理成功,则显示视频帧,若处理失败,则发送重编关键帧或重传关键帧中缺失的rtp数据请求给发送端;

发送模块二,用于执行步骤3:发送端接收后,重编关键帧并修改关键帧的发送时机后向接收端发送,或向接收端重传关键帧中缺失的rtp数据;

循环模块,用于重复上述步骤1-3直至所有视频帧数据传输完成。

如图6,是本发明实施例的一种接收模块结构框架图,包括:

接收单元,用于接收rtp数据包至接收数据缓冲区;

等待缓冲单元,用于接收端设置等待缓冲区,缓存重传关键帧已接收的rtp数据包;

判断单元,用于判断rtp数据包是否为请求重传关键帧中缺失的数据;

第一处理单元,用于若非重传关键帧中缺失的rtp数据,进行正常数据帧处理;

第二处理单元,用于若是重传关键帧中缺失的rtp数据,进行关键帧重处理。

如图7,是本发明实施例的一种第一处理单元结构框架图,包括:

第一判断构件,用于对接收数据缓冲区中的rtp包进行组帧,并判断视频帧是否完整;

第一解码构件,用于若视频帧完整,则进行视频帧解码操作,解码成功则标识处理结果 为成功,否则标识处理结果为失败,并发送重编关键帧请求给发送端;

第一处理构件,用于若视频帧不完整,则进一步判断视频帧是否为关键帧,若该视频帧为关键帧,将已接收的rtp数据包写入等待缓冲区,标记处理结果为失败,并发送重传关键帧中缺失的rtp数据请求给发送端,通知发送端重传关键帧中丢失的rtp数据;若该视频帧为非关键帧,则丢弃该视频帧,再判断两连续的关键帧之间已经抛弃的非关键帧数量是否达到阈值,若已经达到阈值,标记处理结果为失败,并发送重编关键帧请求给发送端,否则标记处理结果为成功。

如图8,是本发明实施例的一种第二处理单元结构框架图,包括:

第二接收构件,用于将接收的重传关键帧的rtp数据包写入等待缓冲区;

第二判断构件,用于对等待缓冲区中的rtp包进行组帧,并判断等待缓冲区的重传关键帧是否完整;

第二解码构件,用于若重传关键帧完整,则进行视频帧解码操作,解码成功则标识处理结果为成功,否则标识处理结果为失败,并发送重编关键帧请求给发送端;

第二处理构件,用于若重传关键帧不完整,则进一步判断是否等待超时,若等待未超时,则继续等待,否则清空接收数据缓冲区和等待缓冲区,标识处理结果为失败,并发送重编关键帧请求给发送端。

同时,本发明提供了一种用于实时视频传输的设备,该设备可以为接收设备或发送设备,具体可以是手机、梯口机、门口机、室内机等具有视频传输功能的设备。其中,发送设备用于将视频帧数据编码为关键帧或非关键帧,发送rtp数据包给接收设备;关键帧的发送时机由配置的间隔参数确定;另外,发送设备还用于重编关键帧并修改关键帧的发送时机后向接收设备发送,或向接收设备发送请求的重传关键帧中缺失的rtp数据;

接收设备用于对rtp数据包进行处理,若处理成功,则显示视频帧,若处理失败,则发送重编关键帧或重传关键帧中缺失的rtp数据请求给发送设备。如图9,是本发明实施例的一种用于实时视频传输的发送设备结构图,通过包含本发明的实时视频传输装置中的发送模块一、发送模块二以及循环模块,可实现实时视频传输发送端的功能。其中,发送模块一,用于将视频帧数据编码为关键帧或非关键帧,发送rtp数据包给接收端;所述关键帧的发送时机由配置的间隔参数确定;发送模块二,用于重编关键帧并修改关键帧的发送时机后向接收端发送,或向接收端重传关键帧中缺失的rtp数据;循环模块,用于循环处理发送模块一和发送模块二的步骤直至所有视频帧数据传输完成。

如图10,是本发明实施例的另一种用于实时视频传输的接收设备结构图,通过包含本发明的实时视频传输装置中的接收模块,可实现实时视频传输接收端的功能。其中,接收模块 用于对rtp数据包进行处理,若处理成功,则显示视频帧,若处理失败,则发送重编关键帧或重传关键帧中缺失的rtp数据请求给发送端。

在实际应用中,通过上述的发送端设备和接收端设备的协同工作,实现实时视频传输的功能。例如,在门禁系统的来访客人视频传输过程中,发送端为门口机,接收端为室内机。门口机和室内机应用本发明的实时视频传输装置进行实时视频传输时,

门口机的发送模块一,用于将采集的来访客人视频帧数据编码为关键帧或非关键帧,并拆分成rtp数据包给室内机;其中,关键帧的发送时机由配置的间隔参数确定;

室内机的接收模块,用于接收门口机发送的rtp数据包,对rtp数据包进行组帧,再根据视频帧的不同类型采用对应方式解码成静态图像帧,最后将图像显示在室内机的屏幕上。在处理过程中,如果视频帧的数据不完整,此时室内机可根据对画面质量影响大小,决定是否向门口机请求重传缺失的数据包;如果图像帧数据完整,但是在解码过程中出现错误,此时室内机将请求门口机重编关键帧。

门口机的发送模块二,用于在接收到重编关键帧请求时,重编关键帧并修改关键帧的发送时机后向室内机发送;或接收到重传关键帧缺失的rtp数据请求时,向室内机重传缺失的rtp数据包;

门口机的循环模块,用于重复上述步骤直至所有视频帧数据发送给室内机。

又如,监控系统中摄像头视频采集点和控制中心的视频数据传输,视频点播应用中的服务器和手机客户端之间的视频传输,均可采用本发明装置。总之,两个以上设备之间需要进行实时视频传输时,均可应用本发明的装置。

如图11,是本发明实施例的一种实时视频传输系统结构框架图,包括发送端和接收端,发送端和接收端通过网络连接,发送端用于将视频帧数据编码为关键帧或非关键帧,其中关键帧为i帧,非关键帧包含p帧和b帧,并将视频帧数据拆分成多个rtp数据包发送给接收端;发送端根据配置的间隔参数确定关键帧;同时,发送端还用于重编关键帧并修改关键帧的发送时机后向接收端发送,或向接收端重传关键帧中缺失的rtp数据;

接收端主要负责接收rtp数据包,对rtp数据包进行组帧,再根据视频帧的不同类型采用对应方式解码成静态图像帧,最后将图像进行显示。同时,当某一静态图像帧发送过程中出现数据包丢失导致数据不完整时,接收端根据对画面质量影响情况确定是否需要请求重传关键帧中缺失的rtp数据;或在解码过程中出现错误的时候,发送重编关键帧请求。

在一优选的实施例中,实时视频传输系统的发送端可设置发送数据缓冲区用于缓存已发送的rtp数据包,当接收到重传关键帧中缺失的rtp数据请求时,优先查找所述发送数据缓冲区,提高查找速度,缩短处理时间。

在另一优选的实施例中,实时视频传输系统的接收端可设置接收数据缓冲区和等待缓冲区,接收数据缓冲区用于缓存接收到的rtp数据包,等待缓冲区用于缓存重传关键帧已经接收的rtp数据包,通过双缓冲区机制,等待缓冲区保存不完整的帧数据,接收数据缓冲区可以继续接收后续rtp数据包,进行后续视频帧的组帧处理,待重传关键帧接收完整、组帧、解码、显示完成后可立即解码显示后续视频帧,减少重传关键帧处理后的恢复时间。

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