低延时图像传输方法、装置、设备及存储介质
技术领域
本发明实施例涉及数据处理技术领域,尤其涉及一种低延时图像传输方法、装置、设备及存储介质。
背景技术
随着网络技术的高速发展,无线数据传输在通信等领域得到了普遍的应用,极大的方便了人们的生活。其中,无线数据传输可以包括图像数据传输、音频数据传输等。
相关技术中,图像数据传输可通过选择不同的传输协议来传输图像数据。例如,传输控制协议(Transmission Control Protocol,简称TCP)、用户数据报协议(UserDatagram Protocol,简称UDP)及基于UDP的数据传输协议(UDP-based Data TransferProtocol,简称UDT)。然而,TCP是一种面向连接、可靠的、基于字节流的传输层通信协议,那么基于TCP协议传输时,在传输数据之前,接收端和发送端需要通过多次握手协议建立可靠的连接,在数据传递时还需要确认、纠错、重发、拥塞控制机制,从而通过TCP协议传输数据时存在较大延迟,使得数据传输速率较慢;UDP是一种无连接协议,发送端只需要将数据发送到网络上由接收端来抓取数据,数据收发过程中也无需对连接状态和数据可靠性进行维护,从而数据传输速率快,延时小,但是由于UDP是一个非连接协议且无数据可靠保护机制,因此可靠性较低;UDT是一种面向连接的双向的应用层协议,能够支持可靠的数据传输,但是存在实时性不高的问题。
因此,如何在降低图像数据传输过程中的延迟同时,提高图像数据传输的实时性及可靠性成为目前亟需解决的问题。
发明内容
本发明实施例提供一种低延时图像传输方法、装置、设备及存储介质,用于解决相关技术中,亟需一种在降低图像数据传输过程中的延迟的同时,提高数据传输可靠性及实时性的问题。
第一方面,本发明实施例提供了一种低延时图像传输方法,应用于发送端,该方法包括:
对获取的视频图像进行编码生成编码序列,并根据输出码率输出所述编码序列至封装器;
所述封装器按照预设的数据封装方式对所述编码序列进行封装得到数据包;
基于用户数据包协议发送缓存区中的数据包至接收端,以指示所述接收端根据接收到的数据包向发送端反馈数据应答包;
根据所述接收端反馈的数据应答包,基于快速重传机制和重传超时时间机制将丢包进行重传操作。
第二方面,本发明实施例还提供了一种低延时图像传输方法,应用接收端,所述方法包括:
基于用户数据包协议接收发送端发送的数据包,其中所述数据包由发送端通过如下操作得到:对获取的视频图像进行编码生成编码序列,并根据确定的输出码率输出所述编码序列至封装器;所述封装器按照预设的数据封装方式对所述编码序列进行封装得到数据包;
将携带有数据包确认信息的数据应答包发送至所述发送端;
对成功接收的数据包还原为视频图像,并显示所述视频图像。
第三方法,本发明实施例还提供了一种低延时图像传输装置,配置于发送端,包括:
编码模块,用于对获取的视频图像进行编码生成编码序列,并根据输出码率,输出所述编码序列至封装器;
封装器,用于按照预设的数据封装方式,对所述编码序列进行封装得到数据包;
第一发送模块,用于基于用户数据包协议发送缓存区中的数据包至接收端,以指示所述接收端根据接收到的数据包,向发送端反馈数据应答包;
重传模块,用于根据所述接收端反馈的数据应答包,基于快速重传机制和重传超时时间机制将丢包进行重传操作。
第四方面,本发明实施例还提供了一种低延时图像传输装置,配置于接收端,所述装置包括:
接收模块,用于基于用户数据包协议接收发送端发送的数据包,其中所述数据包由发送端通过如下操作得到:对获取的视频图像进行编码生成编码序列,并根据输出码率输出所述编码序列至封装器;所述封装器按照预设的数据封装方式对所述编码序列进行封装得到数据包;
第二发送模块,用于将携带有数据包确认信息的数据应答包发送至所述发送端;
显示模块,用于对成功接收的数据包还原为视频图像,并显示所述视频图像。
第五方面,本发明实施例还提供了一种计算机设备,所述计算机设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上任一实施例所述的低延时图像传输方法。
第六方面,本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序包括程序指令,所述程序指令被处理时执行时实现如上任一实施例所述的低延时图像传输方法。
本发明实施例公开的技术方案,具有如下有益效果:
本发明通过对获取的视频图像进行编码生成编码序列,并根据输出码率输出编码序列至封装器,封装器按照预设的数据封装方式对编码序列进行封装得到数据包,然后基于用户数据包协议发送缓存区中的数据包至接收端,以指示接收端根据接收到的数据包向发送端反馈数据应答包,根据接收端反馈的数据应答包,基于快速重传机制和重传超时时间机制将丢包进行重传操作。由此,通过采用预设的封装方式对图像数据进行封装,并基于用户数据包协议发送数据包及重传机制进行丢包重传,以提高图像数据传输速度,降低传输时的延迟,同时还能提高图像数据传输的可靠性及实时性,从而为显示高质量图像提供条件。
附图说明
图1是本发明实施例一提供的一种低延时图像传输方法的流程示意图;
图2(a)是本发明实施例一提供的一种预定义的协议头的示意图;
图2(b)是本发明实施例一提供的向接收端发送的数据包示意图;
图3是本发明实施例二提供的一种低延时图像传输方法的流程示意图;
图4(a)是本发明实施例一提供的利用现有编码标准对视频图像进行编码的示意图;
图4(b)是本发明实施例一提供的利用循环帧内刷新技术对现有编码标准对视频图像编码后进行再处理的示意图;
图5是本发明实施例三提供的一种低延时图像传输方法的流程示意图;
图6是本发明实施例四提供的一种低延时图像传输装置的结构示意图;
图7是本发明实施例五提供的一种低延时图像传输装置的结构示意图;
图8是本发明实施例六提供的一种计算机设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明实施例作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明实施例,而非对本发明实施例的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明实施例相关的部分而非全部结构。
本发明主要针对相关技术中,如何在降低图像数据传输过程中的延迟同时,提高图像数据传输实时性及可靠性的问题,提出一种低延时图像传输方法。
本发明提出的低延时图像传输方法,通过对获取的视频图像进行编码生成编码序列,并根据输出码率输出编码序列至封装器,封装器按照预设的数据封装方式对编码序列进行封装得到数据包,然后基于用户数据包协议发送缓存区中的数据包至接收端,以使接收端根据接收到的数据包向发送端反馈数据应答包,根据接收端反馈的数据应答包,基于快速重传机制和重传超时时间机制将丢包进行重传操作。由此,通过采用预设的封装方式对图像数据进行封装,并基于用户数据包协议发送数据包及重传机制进行丢包重传,以提高图像数据传输速度,降低传输时的延迟,同时还能提高图像数据传输的可靠性及实时性,从而为显示高质量图像提供条件。
下面参考附图描述本发明实施例的低延时图像传输方法、装置、设备及存储介质进行详细说明。
实施例一
图1是本发明实施例一提供的一种低延时图像传输方法的流程示意图,本发明实施例可适用于在局域网中图像数据传输的场景,该方法可由低延时图像传输装置来执行,以实现对图像传输进行控制,该低延时图像传输装置可以由软件和/硬件实现,并可应用于发送端中。其中,在本实施例中,发送端可以是,但不限于:相机、智能设备,可穿戴设备等。该方法具体包括如下:
S101,对获取的视频图像进行编码生成编码序列,并根据输出码率输出所述编码序列至封装器。
需要说明的是,本实施例中获取的视频图像,可以是接收端中的图像采集装置采集的视频图像,也可以是从接收端的存储单元中获取的视频图像,此处对其不做具体限定。
其中,图像采集装置可以是但不限于:摄像头、摄像机、相机、扫描仪及其他带有拍照功能的装置。
可选的,本实施例可根据现有的编码标准对获取的视频图像进行编码生成编码序列,然后将编码序列根据输出码率输出至封装器。
示例性的,对视频图像进行编码时,可先将获取的视频图像编码到画面组中,其中一个画面组包括12个图像片段。然后,按照现有的编码标准对每个画面组中每个图像片段进行数字格式转换以得到编码序列。
其中,现有的编码标准,例如MPEG1标准、MPEG2标准、H.261标准、H.263标准、H.264标准、AVC标准、AVS标准、HEVC标准等等。作为一种可选的方式,本实施例可采用H.264标准对视频图像进行压缩编码。
进一步的,将编码序列输出至封装器时,首先确定是否为首次输出编码序列,若是,则根据初始码率将编码序列输出至封装器;若否,则可基于当前网络状态确定对应的输出码率,并根据输出码率将编码序列输出至封装器。
其中,基于当前网络状态确定输出码率,可通过以下两种方式确定:
方式一:
根据所述接收端反馈的数据应答包携带的数据包确认信息,确定所述接收端未接收到的数据包数量;根据所述未接收到的数据包数量和已发送数据包总数量,计算数据包的丢失率;根据所述数据包的丢失率确定当前网络状态;根据所述当前网络状态确定所述编码序列的输出码率。
其中,数据包确认信息包括:接收到的数据包序列号。
具体实现时,可通过对数据应答包进行解析获取数据包确认信息,并根据数据包确认信息包括的接收到的数据包序列号,确定已发送的数据包中哪些数据包出现丢包。然后,根据出现丢包的数据包数量和已发送数据包数量,计算数据包的丢失率,以根据丢失率确定当前网络状态。根据当前网络状态,动态确定编码序列的输出码率,从而使得确定的数据码流适应不同网络状态的要求,有利于减少画面卡顿和花屏。
方式二:
根据缓存区中待发送数据包的网络延迟确定当前网络状态;根据当前网络状态确定编码序列的输出码率。
具体实现时,可根据网络延时,在预设的网络延时与码率的对应关系中确定对应的码率,并根据确定的码率对编码器1中的码率进行更新。
例如,若初始码率为:512千位每秒(kbps),当确定缓存区中发送队列中待发送数据包的网络延迟超过500ms,则说明当前网络状态差,那么可根据500ms在预设的网络延时与码率的对应关系中确定对应的码率为231kbps,则可根据231kbps替换512kbps,以对输出码率进行更新。
S102,所述封装器按照预设的数据封装方式对所述编码序列进行封装得到数据包。
预设的数据封装方式,可以是技术人员根据实际应用需求自定义设置的封装方式,此处对其不做具体限定。例如,预定义封装协议头等。
例如,若预设的数据封装方式是技术人员在编码序列前添加预定义的协议头,则封装器可首先获取预定义的协议头,然后将编码序列封装在预定义的协议头中,以实现对图像数据的可靠性及拥塞控制。
可选的,本实施例中预定义的协议头,可如图2(a)所述。具体的,参见图2(a),预定义的协议头长度为22字节:
其中,第1-2个字节中的内容为魔数(magic number,简称Magic),用于进行发送端和接收端的数据类型匹配操作。也就是说,当发送端的数据包协议头中魔数字段的数据类型与接收端中的数据类匹配时,才能成功接收接收,否则接收失败;
第3-6个字节的内容为分片数据长度(length,简称Len);
第7个字节的内容为命令码(command,简称Cmd),用于表征该分片数据的类型。通常预先定义的命令码包括:码流数据包,数据应答包、音频数据包等。其中,数据应答包是由接收端发送给发送端,表示指定数据包序列号的数据包已经接收到,用于达到数据的可靠性;
第8-11个字节的内容为数据包序列号(sequence number,简称Sn),通常从零开始递增;
第12个字节的内容为记录分片时的倒序序号(fragment,简称Frag),其中当编码序列大于最大分段大小(Maxitum Segment Size,简称MSS)时,将编码序列进行分片。实际应用中,因为UDP数据包的最大净载荷为1472字节,而预定义的协议头为22字节,则可确定MSS=1472-22=1450字节。那么当编码序列大小大于1450字节时则需要根据MSS对该编码序列进行分片,以使编码序列小于或等于MSS;
第13-14个字节的内容为发送端当前可用的窗口大小,通过Wnd表示,Wnd全称为window size;
第15-18个字节的内容为数据包的发送时间戳,以用于估算往返时延(Round-TripTime,简称RTT);
第19-22个字节的内容为当前未收到的数据包序列号,通过Una表示,Una全称为unacknowledged。即通过Una来表示该序列号之前的数据包均接收到,用于支持数据传输的可靠性。
例如,若发送端中可用窗口大小为5,则发送端可向接收端发送5个数据包,若接收端接收到上述5个数据包,则向发送端发送数据应答包时可将Una字段中填写为6,以表示第1至第5个数据包已成功接收。从而使得发送端可根据Una字段中的6向接收端发送第6-第10个数据包,以此类推直至数据包发送完成。
可以理解的是,本实施例通过在编码序列前面添加预定义的协议头以实现数据封装,从而根据后续接收端返回的响应数据包,确定已发送的数据包中哪些序列号的数据包出现丢包,从而控制出现丢包的数据包进行重传,提高数据传输的可靠性。
也就是说,本实施例中所述封装器按照预设的数据封装方式,对所述编码序列进行封装得到数据包,包括:
获取预定义的协议头;
将所述编码序列封装在预定义的协议头中,以对所述编码序列进行封装处理。
S103,基于用户数据包协议发送缓存区中的数据包至接收端,以使所述接收端根据接收到的数据包向发送端反馈数据应答包。
本实施例通过用户数据包协议发送数据包,可以避免建立发送端与接收端建立连接,以及对连接状态进行维护,从而可使得数据传输速度快,并且本实施例是通过自定义的协议头对编码序列进行封装,实现了在提高数据传输速度的同时,还能提高数据传输的可靠性。
S104,根据所述接收端反馈的数据应答包,基于快速重传机制和重传超时时间机制将丢包进行重传操作。
其中,接收端反馈的数据应答包携带有数据包确认信息。也就是说,本实施例通过对接收端反馈的数据应答包进行解析,得到数据应答包中携带的数据包确认信息,然后根据数据包确认信息确定是否出现数据包丢失,若存在则将丢失的数据包基于快速重传机制和重传超时时间(Retransmission Time Out,简称RTO)机制,将丢包进行重传操作,以实现更快检测丢包达到快速重传出现丢包的数据包的效果,降低数据包传输的延迟。
例如,若发送端向接收端依次发送16个数据包,分别表示为第1至第16个数据包(如图2(b)),由于局域网的特点接收端可能首先接收到第12个数据包(即乱序接收),此时接收端会向发送端反馈一个数据应答包,以表示第12个数据包已经成功接收。然而,发送端接收到第12个数据包的确认信息时,并没有接收到第8个至第11个数据包的确认信息,则说明第8个-第11个数据包出现了丢包。此时发送端可根据预设的丢包偏移量Nack=3,将第8个和第9个数据包发送至缓存区中的重传队列中,以基于快速重传机制和重传超时时间机制控制重传队列将第8个和第9个数据包重新发送至接收端,直至接收第8个和第9个数据包的确认信息为止。相应的,对第10个数据包及第11个数据包采用类似方式进行重传。
其中,预设的丢包偏移量Nack可根据实际应用进行适应性设置,此处对其不做具体限定。例如,还可设置为2等。
本发明实施例提供的低延时图像传输方法,通过对获取的视频图像进行编码生成编码序列,并根据输出码率,输出编码序列至封装器,封装器按照预设的数据封装方式,对编码序列进行封装得到数据包,然后基于用户数据包协议发送缓存区中的数据包至接收端,以使接收端根据接收到的数据包,向发送端反馈数据应答包,根据接收端反馈的数据应答包,基于快速重传机制和重传超时时间机制将丢包进行重传操作。由此,通过采用预设的封装方式对图像数据进行封装,并基于用户数据包协议发送数据包及重传机制进行丢包重传,以提高图像数据传输速度,降低传输时的延迟,同时还能提高图像数据传输的可靠性及实时性,从而为显示高质量图像提供条件。
实施例二
通过上述分析可知,本发明实施例通过按照预设数据封装方式对编码序列进行封装,并将其发送至接收端,以根据接收端反馈的数据应答包,基于快速重传机制和重传超时时间机制将丢包进行重传操作。
在本发明的另一种实现场景中,本实施例在对获取的视频图像进行编码生成编码序列之后,还可对编码序列中各帧大小进行均匀处理,以使接收端接收到数据包之后可以更平滑的显示图像帧,减少图像显示卡顿现象。下面结合图3,对本发明实施例的低延时图像传输方法的上述情况进行具体说明。
图3是本发明实施例二提供的一种低延时图像传输方法的流程示意图。
如图3所示,该低延时图像传输方法可以包括以下步骤:
S301,对获取的视频图像进行编码生成编码序列,并利用循环帧内刷新技术对编码序列中各帧图像大小进行均匀处理。
在本发明实施例中,为了利于编码序列网络传输,使得图像帧之间的间隔时间波动小、图像数据传输更稳定。本实施例还可利用循环帧内刷新(Cyclic Intra Refresh)技术对编码序列进行处理。其中,Cyclic Intra Refresh技术通过将一个I帧编码的宏块分散在多个P帧中,使得每一个帧的大小相对平均。
例如,如图4(a)所示,利用H.264编码标准对视频图像进行编码之后,存在普通画面组中I帧大小达到P帧的20倍(图中I帧标记为410、P帧标记为411),使得数据帧数据大小不均匀。由于接收端通常是在接收到完整的数据帧之后才进行解码,这就存在不均匀的数据会导致接收端接收到的数据帧所花费的时间不稳定,波动较大,导致图像显示时出现卡顿,图像显示效果差。
如图4(b)所示,本实施例通过利用Cyclic Intra Refresh技术对编码序列进行处理,以将I帧的数据平均分配给所在画面组中的其他P帧(图中I帧标记为410、P帧标记为411),使得画面组中I帧与P帧之间的数据相差减少,使得各帧数据大小更均匀,从而接收端在接收数据帧时所花费的时间更均匀、稳定,进而图像显示时更流畅,显示效果更好。
S302,根据输出码率输出所述处理后的编码序列至封装器。
S303,所述封装器按照预设的数据封装方式对所述编码序列进行封装得到数据包。
S304,基于用户数据包协议发送缓存区中的数据包至接收端,以使所述接收端根据接收到的数据包向发送端反馈数据应答包。
S305,若已接收到所述接收端发送的序列号为N的数据包的数据应答包,而未接收到序列号为N-K及N-K之前的数据包的数据应答包,则确定所述序列号为N-K及N-K之前的数据包为丢包,将所述序列号为N-K及N-K之前的数据包进行重传操作;其中K为预置数据包数,K<N。
其中,K可根据实际应用需求进行适应性设置,此处对其不做具体限定。例如,K可以设置为2,或者也可以设置为3等等。需要说明的是,本实施例中K即为上述实施例中丢包偏移量Nack。
例如,若K为3时,发送端接收到第12个数据包的数据应答包,而未接收到第9个和第10个数据包的数据应答包,则可确定第9个数据包和第10个数据包出现丢包,则将第9个和第10个数据包进行重传操作。
S306,若超过重传超时时间仍未接收到所述接收端反馈的已发送数据包对应的数据应答包,则确定该数据包为丢包,将该数据包进行重传操作。
S307,若重传超时时间内接收到所述接收端反馈的已发送数据包对应的数据应答包,则确定该数据包已被成功接收,则结束对该数据包重传操作。
在本发明的另一实施例中,若发送端检测到已发送任意数据包出现丢包,则将丢失的数据包发送至缓存区中的重传队列中,并基于快速重传机制和重传超时时间机制控制重传队列将出现丢失的数据包重新发送至接收端。
需要说明的是,本实施例中重传超时时间机制,可通过减少重传超时时间降低数据包发送至接收端的延迟。
其中,减少重传超时时间,可根据数据包发送的时间戳和数据应答包的接收时间戳,计算数据交互的往返时延(Round Trip Time,简称RTT)。然后根据数据交互的往返时延,计算重传超时时间。
其中,根据数据交互的往返时延,计算重传超时时间,可通过如下公式(1)实现:
其中,RTTd是RTTs的偏差加权平均值,Beta=1/4。
例如,若数据包的发送时间为12:30:00、应答数据包的接收时间为12:35:05,则计算数据包的往返时延为1.5s,则根据上述公式(1),计算重传超时时间为:RTTs=RTT(1)=1.5s;RTO=RTTs+4RTTd=1.5+4*0.75=4.5s。若初始RTO为6s,则为根据计算得到的4.5s对初始RTO进行更新,以减小RTO,提高数据包发送速度。
作为一种可选的实现方式,本实施例可根据实际应用经验,将重传超时时间减少为30毫秒(ms)。
本发明实施例提供的低延时图像传输方法,对获取的视频图像进行编码生成编码序列之后,还可利用循环帧内刷新技术对编码序列中各帧图像大小进行均匀处理,然后根据输出码率输出处理后的编码序列至封装器,以使封装器按照预设的数据封装方式,对处理后的编码序列进行封装得到数据包,然后基于用户数据包协议发送缓存区中的数据包至接收端,以指示接收端根据接收到的数据包,向发送端反馈数据应答包,根据接收端反馈的数据应答包,基于快速重传机制和重传超时时间机制将丢包进行重传操作。由此,通过采用预设的封装方式对图像数据进行封装,并基于用户数据包协议发送数据包及重传机制进行丢包重传,以提高图像数据传输速度,降低传输时的延迟,同时还能提高图像数据传输的可靠性及实时性,从而为显示高质量图像提供条件。此外还有利于编码序列网络传输,使得图像帧之间的间隔时间波动小、图像数据传输更稳定。
实施例三
下面结合附图,以接收端为例对本发明实施例提出的低延时图像传输方法进行详细描述。
图5是本发明实施例三提供的一种低延时图像传输方法的流程示意图。
如图5所示,该低延时图像传输方法可以包括以下步骤:
S501,基于用户数据包协议接收发送端发送的数据包,其中所述数据包由发送端通过如下操作得到:对获取的视频图像进行编码生成编码序列,并根据输出码率输出所述编码序列至封装器;所述封装器按照预设的数据封装方式,对所述编码序列进行封装得到数据包。
需要说明的是,本实施例中得到数据包的具体方式,可参见上述实施例,此处对其不做过多赘述。
S502,将携带有数据包确认信息的数据应答包发送至所述发送端。
在本实施例中,所述数据确认信息包括:接收到的数据包序列号。
示例性的,接收到发送端发送的数据包之后,接收端对该数据包进行解封装。然后,根据自身接收数据类型与发送端发送的数据包中协议头中魔数字段的数据类型进行匹配,若类型相同,则确定该数据包接收成功,否则接收失败。
在接收数据包成功时,向发送端反馈该数据包的数据应答包,并将包括该数据包序列号的数据包确认信息携带在上述数据应答包中,以使发送端根据数据应答包确定发送的数据包中哪些数据包被成功接收,哪些数据包没有被成功接收(丢包)。然后,将属于丢包的数据包进行重传操作。
S503,对成功接收的数据包还原为视频图像,并显示所述视频图像。
示例性的,可通过软件解码器将编码序列依次转换为图像片段,并将图像片段组合为解码帧图像。
进一步的,当得到解码帧图像之后,显示器可对解码帧图像进行渲染,并显示得到的完整图像。
本发明实施例提供的低延时图像传输方法,通过采用预设的封装方式对图像数据进行封装,并基于用户数据包协议发送数据包及重传机制进行丢包重传,以提高图像数据传输速度,降低传输时的延迟,同时还能提高图像数据传输的可靠性及实时性,从而为显示高质量图像提供条件。
实施例四
为了实现上述目的,本发明实施例五提出了一种低延时图像传输装置,其中该低延时图像传输装置,配置于发送端。
图6是本发明实施例四提供的一种低延时图像传输装置的结构示意图。
如图6所示,本发明实施例低延时图像传输装置包括:编码模块610、封装器612、第一发送模块614及重传模块616。
其中,编码模块610,用于对获取的视频图像进行编码生成编码序列,并根据输出码率,输出所述编码序列至封装器;
封装器612,用于按照预设的数据封装方式对所述编码序列进行封装得到数据包;
第一发送模块614,用于基于用户数据包协议发送缓存区中的数据包至接收端,以指示所述接收端根据接收到的数据包向发送端反馈数据应答包;
重传模块616,用于根据所述接收端反馈的数据应答包,基于快速重传机制和重传超时时间机制将丢包进行重传操作。
作为本发明实施例的一种可选的实现方式,重传模块616,具体用于:
若已接收到所述接收端发送的序列号为N的数据包的数据应答包,而未接收到序列号为N-K及N-K之前的数据包的数据应答包,则确定所述序列号为N-K及N-K之前的数据包为丢包,将所述序列号为N-K及N-K之前的数据包进行重传操作;其中K为预置数据包数,K<N;
若超过重传超时时间仍未接收到所述接收端反馈的已发送数据包对应的数据应答包,则确定该数据包为丢包,将该数据包进行重传操作。
作为本发明实施例的一种可选的实现方式,还包括:处理模块。
处理模块,用于利用循环帧内刷新技术对编码序列中各帧图像大小进行均匀处理。
作为本发明实施例的一种可选的实现方式,封装器612具体用于:
获取预定义的协议头;
将所述编码序列封装在预定义的协议头中以对所述编码序列进行封装处理。
作为本发明实施例的一种可选的实现方式,所述装置,还包括:第一确定模块、计算模块、第二确定模块及第三确定模块。
其中,第一确定模块,用于根据所述接收端反馈的数据应答包携带的数据包确认信息,确定所述接收端未接收到的数据包数量;
计算模块,用于根据所述未接收到的数据包数量和已发送数据包总数量计算数据包的丢失率;
第二确定模块,用于根据所述数据包的丢失率确定当前网络状态;
第三确定模块,用于根据所述当前网络状态确定所述编码序列的输出码率。
作为本发明实施例的一种可选的实现方式,所述第二确定模块,具体用于:
根据缓存区中待发送数据包的网络延迟确定当前网络状态。
作为本发明实施例的一种可选的实现方式,数据应答包携带的数据包确认信息包括:接收到的数据包序列号。
需要说明的是,前述对低延时图像传输方法实施例的解释说明也适用于该实施例的低延时图像传输装置,其实现原理类似,此处不再赘述。
本发明实施例提供的低延时图像传输装置,通过对获取的视频图像进行编码生成编码序列,并根据输出码率输出编码序列至封装器,封装器按照预设的数据封装方式对编码序列进行封装得到数据包,然后基于用户数据包协议发送缓存区中的数据包至接收端,以指示接收端根据接收到的数据包向发送端反馈数据应答包,根据接收端反馈的数据应答包,基于快速重传机制和重传超时时间机制将丢包进行重传操作。由此,通过采用预设的封装方式对图像数据进行封装,并基于用户数据包协议发送数据包及重传机制进行丢包重传,以提高图像数据传输速度,降低传输时的延迟,同时还能提高图像数据传输的可靠性及实时性,从而为显示高质量图像提供条件。
实施例五
图7是本发明实施例五提供的一种低延时图像传输装置的结构示意图,其中该低延时图像传输装置,配置于接收端。
如图7所示,本发明实施例低延时图像传输装置包括:接收模块710、第二发送模块712及显示模块714。
其中,接收模块710,用于基于用户数据包协议接收发送端发送的数据包,其中所述数据包由发送端通过如下操作得到:对获取的视频图像进行编码生成编码序列,并根据输出码率输出所述编码序列至封装器;所述封装器按照预设的数据封装方式,对所述编码序列进行封装得到数据包;
第二发送模块712,用于将携带有数据包确认信息的数据应答包发送至所述发送端;
显示模块714,用于对成功接收的数据包还原为视频图像,并显示所述视频图像。
作为本发明实施例的一种可选的实现方式,所述数据应答包携带的数据包确认信息包括:接收到的数据包序列号。
需要说明的是,前述对低延时图像传输方法实施例的解释说明也适用于该实施例的低延时图像传输装置,其实现原理类似,此处不再赘述。
本发明实施例提供的低延时图像传输装置,通过采用预设的封装方式对图像数据进行封装,并基于用户数据包协议发送数据包及重传机制进行丢包重传,以提高图像数据传输速度,降低传输时的延迟,同时还能提高图像数据传输的可靠性及实时性,从而为显示高质量图像提供条件。
实施例六
图8是本发明实施例六提供的一种计算机设备的结构示意图,参见图8,本实施例提供了一种计算机设备800,其包括:一个或多个处理器820;存储装置810,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器820执行,使得所述一个或多个处理器820实现本发明实施例所提供的低延时图像传输方法,包括:
对获取的视频图像进行编码生成编码序列,并根据输出码率输出所述编码序列至封装器;
所述封装器按照预设的数据封装方式,对所述编码序列进行封装得到数据包;
基于用户数据包协议发送缓存区中的数据包至接收端,以指示所述接收端根据接收到的数据包向发送端反馈数据应答包;
根据所述接收端反馈的数据应答包,基于快速重传机制和重传超时时间机制将丢包进行重传操作。
当然,本领域技术人员可以理解,处理器820还可以实现本发明任意实施例所提供的低延时图像传输方法的技术方案。
图8显示的计算机设备800仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图8所示,计算机设备800以通用计算设备的形式表现。计算机设备800的组件可以包括但不限于:一个或者多个处理器820,存储装置810,连接不同系统组件(包括存储装置810和处理器820)的总线850。
总线850表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
计算机设备800典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机设备800访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
存储装置810可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)811和/或高速缓存存储器812。计算机设备800可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统813可以用于读写不可移动的、非易失性磁介质(图8未显示,通常称为“硬盘驱动器”)。尽管图8中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线850相连。存储装置810可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块815的程序/实用工具814,可以存储在例如存储装置810中,这样的程序模块815包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块815通常执行本发明所描述的任意实施例中的功能和/或方法。
计算机设备800也可以与一个或多个外部设备860(例如键盘、指向设备、显示器870等)通信,还可与一个或者多个使得用户能与该计算机设备800交互的设备通信,和/或与使得该计算机设备800能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口830进行。并且,计算机设备800还可以通过网络适配器840与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图8所示,网络适配器840通过总线850与计算机设备800的其它模块通信。应当明白,尽管图中未示出,可以结合计算机设备800使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
处理器820通过运行存储在存储装置810中的程序,从而执行各种功能应用以及数据处理,例如实现本发明实施例所提供的低延时图像传输方法。
本发明实施例还提供了一种计算机设备,其包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明实施例所提供的低延时图像传输方法,包括:
基于用户数据包协议,接收发送端发送的数据包,其中所述数据包由发送端通过如下操作得到:对获取的视频图像进行编码生成编码序列,并根据输出码率输出所述编码序列至封装器;所述封装器按照预设的数据封装方式,对所述编码序列进行封装得到数据包;
将携带有数据包确认信息的数据应答包发送至所述发送端;
对成功接收的数据包还原为视频图像,并显示所述视频图像。
当然,本领域技术人员可以理解,处理器还可以实现本发明任意实施例所提供的低延时图像传输方法的技术方案。该计算机设备的硬件结构以及功能可参见实施例六的内容解释。
实施例七
本实施例提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序包括程序指令,所述程序指令被处理时执行时实现实施例一和实施例二中任一实施例所述的低延时图像传输方法,该方法包括:
对获取的视频图像进行编码生成编码序列,并根据输出码率输出所述编码序列至封装器;
所述封装器按照预设的数据封装方式,对所述编码序列进行封装得到数据包;
基于用户数据包协议发送缓存区中的数据包至接收端,以指示所述接收端根据接收到的数据包向发送端反馈数据应答包;
根据所述接收端反馈的数据应答包,基于快速重传机制和重传超时时间机制将丢包进行重传操作。
当然,本发明实施例所提供的一种计算机可读存储介质,其可执行指令不限于如上所述的方法操作,还可以执行本发明实施例一和二中任一实施例所提供的低延时图像传输方法中的相关操作。
本发明实施例的计算机可读存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读存储介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
本发明实施例还提供了另一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序包括程序指令,所述程序指令被处理时执行时用于执行实施例三中所述的低延时图像传输方法,该方法包括:
基于用户数据包协议,接收发送端发送的数据包,其中所述数据包由发送端通过如下操作得到:对获取的视频图像进行编码生成编码序列,并根据输出码率输出所述编码序列至封装器;所述封装器按照预设的数据封装方式对所述编码序列进行封装得到数据包;
将携带有数据包确认信息的数据应答包发送至所述发送端;
对成功接收的数据包还原为视频图像,并显示所述视频图像。
当然,本发明实施例所提供的一种计算机可读存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明实施例三所提供的低延时图像传输方法中的相关操作。对存储介质的介绍可参见实施例七中的内容解释。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。