一种基于UDP的视频快速传输方法及系统与流程

文档序号:31053296发布日期:2022-08-06 09:02阅读:192来源:国知局
一种基于UDP的视频快速传输方法及系统与流程
一种基于udp的视频快速传输方法及系统
技术领域
1.本发明涉及云手机技术领域,特别是涉及一种云手机与真机之间的基于udp(user datagram protocol,用户数据包协议)的视频快速传输方法及系统。


背景技术:

2.云手机是通过在云服务器端通过虚拟容器的方式,将一台云服务器划分成多个虚拟机来独立运行的android系统,然后提供远程操作让手机等终端设备操作使用,使得各种应用运行在云端,方便管理,可以大大减少真实手机本地资源的消耗。
3.由于程序运行在云端,真机需要看到云手机的运行界面,并进行操作,因此需要的把云手机的运行界面编码后传送给真机界面播放显示;在真机模拟场景,真机也需要把本地摄像头的数据采集编码后,传送到云手机端进行解码识别使用。
4.随着云游戏、云应用、云教育、云健身等应用场景场景越来越多,真机和云机之间会进行大量的视频数据传输,由于云手机的终端的使用无线网络,网络环境比较复杂。如何在真机和云机之间进行高可靠、高质量和低延时的快速视频数据传输成为云手机体验的重要指标,这都需要一种高效快速的云手机视频快速传输技术来支持。
5.目前一些实现云手机通信的实现案例多数都是集成了一些开源的音视频通信协议,比如webrtc,webrtc的好处是免费,强大的nat和防火墙穿透技术,现在webrtc技术内置于浏览器中,用户就可以通过浏览器来实现实时通信。
6.但是针对云手机的场景,webrtc有一定的局限性,比如:webrtc主要面向web应用,虽然也可以用于native开发,但是由于涉及到的领域知识(音视频采集、处理、编解码、实时传输等)较多,整个框架设计比较复杂,api粒度也比较细,导致连工程项目的编译都不是一件容易的事;webrtc的传输设计基于p2p,难以保障传输质量,优化手段也有限,只能做一些端到端的优化,难以应对复杂的互联网环境,比如对跨地区、跨运营商、低带宽、高丢包等场景;webrtc更多的针对视频聊天的场景,很多云手机的场景比如真机模拟、多平互动并不适用,用在云手机上会存在一定局限性。


技术实现要素:

7.为克服上述现有技术存在的不足,本发明之目的在于提供一种基于udp的视频快速传输方法及系统,实现了云手机与真机之间基于udp的视频数据的快速传输,并结合智能重传(arq)、前向纠错(fec)技术,降低了网络抖动带来的影响,并结合容错措施适当丢帧并快速恢复,充分保证视频数据传输的可靠性和实时性。
8.为达上述目的,本发明提出一种基于udp的视频快速传输方法,包括如下步骤:
9.步骤s1,在传输层,在udp数据报文的基础上对udp数据报文中的数据增加包含序列号以及拥塞发送控制窗口字段的控制头,并对增加控制头后的数据报文进行封装;
10.步骤s2,在传输层采用滑动窗口机制发送封装后的视频数据包。
11.优选地,所述滑动窗口机制为发送方在滑动窗口内发送多个数据包,然后等待接
收方确认,接收方维护一个接收窗口,以限制发送方在未收到确认之前只能发送拥塞窗口值大小的数据。
12.优选地,步骤s2进一步包括:
13.步骤s200,数据包发送采用慢开始,然后实时发送数据的窗口值指数增长的方式,直到实时发送数据的窗口值达到拥塞窗口值;
14.步骤s201,根据接收方对当前滑动窗口内的数据包的接收结果调整滑动窗口的拥塞窗口值。
15.优选地,于步骤s200中,从1个数据包开始发送数据,然后呈指数增长,直至实时发送数据的窗口值增加至当前数据包中的拥塞窗口值。
16.优选地,步骤s201进一步包括:
17.步骤s201a,根据接收方对当前滑动窗口内的数据包的接收结果判断是否出现丢包,若未出现丢包,则进入步骤s201b,否则进入步骤s201c;
18.步骤s201b,若未出现丢包,则进一步判断当前视频编码码率是否满足视频传输带宽,若满足,则按照当前窗口值继续通信;若不满足,则提高当前视频编码码率,并增加滑动窗口的拥塞窗口值及实时发送数据的窗口值,直到当前视频编码码率达到配置的码率值后停止增加;
19.步骤s201c,若出现丢包,则启动智能重传策略。
20.优选地,所述智能重传策略包括发送方超时重传、接收主动请求快速重传,所述发送方超时重传主要依据rto重传超时时间来进行,所述接收主动请求快速重传是指当接收方接收到了序号跳跃的数据包,则立即给发送方发送最后一个连续的数据包的ack,发送方则以ack跨越数为依据,决定是否快速重传。
21.优选地,所述智能重传策略还包括选择性重传,只重传真正丢失的数据包。
22.优选地,在出现丢包由发送方进行重传时,由发送方进行fec编码引入冗余包,接收方进行fec解码并恢复丢失的数据包。
23.优选地,于步骤s201c中,若丢包严重,则减小拥塞发送控制窗口值,并相应进行减低视频编码码率,从而保证正常传输。
24.为达到上述目的,本发明还提供一种基于udp的视频快速传输系统,包括:
25.数据包封装处理单元,用于在udp数据报文的基础上增加控制头,在传输层对视频数据进行封装;
26.数据包发送传输单元,在传输层,在udp数据报文的基础上对udp数据报文中的数据增加包含序列号以及拥塞发送控制窗口字段的控制头,并对增加控制头后的数据报文进行封装。
27.与现有技术相比,本发明一种基于udp的视频快速传输方法及系统通过在传输层实现拥塞控制机制,结合智能重传(arq)、前向纠错(fec)等技术实现一套网络优化策略,降低网络抖动带来的影响,结合容错措施,适当丢帧并快速恢复,充分保证数据传输的可靠性性和实时性,本发明与基于tcp的数据传输方式相比,以较小的带宽的代价,大大减低了延时,尤其是在网络拥堵情况下解决了tcp协议的网络速度慢的问题,适合网络复杂的环境,更加符合云手机对延时要求很高的场景。
附图说明
28.图1为本发明一种云手机与真机的数据通信方法的步骤流程图;
29.图2为本发明实施例中采用自定义的网络传输协议进行数据通信的示意图;
30.图3为本发明一种云手机与真机的数据通信系统的系统结构图。
具体实施方式
31.以下通过特定的具体实例并结合附图说明本发明的实施方式,本领域技术人员可由本说明书所揭示的内容轻易地了解本发明的其它优点与功效。本发明亦可通过其它不同的具体实例加以施行或应用,本说明书中的各项细节亦可基于不同观点与应用,在不背离本发明的精神下进行各种修饰与变更。
32.图1为本发明一种基于udp的视频快速传输方法的步骤流程图。如图1所示,本发明一种基于udp的视频快速传输方法,包括如下步骤:
33.步骤s1,在传输层,在udp数据报文的基础上对udp数据报文中的数据增加控制头,并对增加控制头后的数据报文进行封装。
34.udp协议能实现快速传输,但udp协议包头中并没有定义一个序列号字段,udp协议层无法确认是否丢包,也就无法检测当前网络是否拥塞,是一种不可靠的传输协议。因此,本发明为了实现udp的可靠传输,在udp数据报文的基础上增加控制头,在传输层对数据进行封装,该控制头格式如下表1所示:
35.表1
[0036][0037]
其中,各字段定义如下:
[0038]
sessionid:会话id
[0039]
command:区分数据包的类型
[0040]
fragment:数据分包传输序号
[0041]
wnd:拥塞发送控制窗口
[0042]
timestamp:发送时刻的时间戳
[0043]
seqno:发送序列号
[0044]
unackno:待接收消息序列号
[0045]
也就是说,由于udp在网络中的传输是不可靠的,因此可能会出现丢包和包的乱序,本发明通过参考tcp的拥塞控制方法,在udp数据报文的基础上的控制头中包含序列号字段seqno、拥塞发送控制窗口wnd等信息,以在传输层实现拥塞控制。
[0046]
步骤s2,在传输层采用滑动窗口机制发送封装后的数据包。
[0047]
在本发明中,为了提高发送速度,发送方可以不必每发送一个包后就进行等待确认,而是可以发送多个包出去,然后等待接收方一一确认;又由于接收方不可能同时处理无限多的数据,因此需要限制发送方往网络中发送的数据数量,接收方维护一个接收窗口,接
收方限制发送方在未收到确认之前只能发送所述拥塞发送控制窗口wnd大小的数据,这个机制叫做滑动窗口机制,在本发明中,发送方可以是云手机端,也可以是真机端,同样地,接收方也可以是云手机端或真机端。
[0048]
具体地,如图2所示,步骤s2进一步包括:
[0049]
步骤s200,数据包发送采用慢开始,然后窗口值指数增长的方式,直到窗口值达到拥塞窗口值。
[0050]
具体地,所述慢开始是指先从1个数据包即窗口值为1个数据包大小,开始发送,然后呈指数增长,即实时发送数据的窗口值呈指数增长,所述指数增长指以2的次方一直翻倍(1,2,4,8...)增长,直至窗口值增加至拥塞窗口值,所述拥塞窗口值为当前数据包的控制头中包括的拥塞发送控制窗口wnd值,表示一定时间内限制发送的数据包。
[0051]
步骤s201,根据接收方对当前滑动窗口内的数据包的接收结果调整滑动窗口的拥塞窗口值。
[0052]
在本发明中,发送方不是每发送一个包后则进行等待确认,而是在滑动窗口内发送多个数据包,然后等待接收方确认,若滑动窗口内的数据包在规定时间内正常完成接收,则增加滑动窗口的窗口拥塞值,例如:当发送的数据包《拥塞窗口值wnd时,按2的指数对实时发送数据的窗口值进行翻倍增加,而当发送的数据包》=拥塞窗口值wnd后,则按加1的方式增加窗口拥塞值,同时按加1的方式增加实时发送数据的窗口值,直到出现拥塞丢包或当前视频编码码率(也就是说,本发明中视频编码码率根据动态码率调整,具体的动态码率调整可采用现有技术)达到配置的码率值,则停止增加,该配置的码率值一般为用户设定分辨率(比如高清720p)对应的最大码率。
[0053]
当出现丢包现象,即rto时间内没有收到接收方回复数据包的ack,则判断丢包,此时启动智能重传策咯,并在必要时(例如当丢包的数据超过设定值,则认为丢包严重,数据拥塞时),调低滑动窗口水位,即减小拥塞发送控制窗口,即拥塞窗口值wnd(例如按2的指数减少),并相应进行减低视频编码码率,以保证正常传输。
[0054]
具体地,步骤s201进一步包括:
[0055]
步骤s201a,根据接收方对当前滑动窗口内的数据包的接收结果判断是否出现丢包,若未出现丢包,则进入步骤s201b,否则进入步骤s201c。
[0056]
在本发明中,接收方维护一个接收窗口以限制发送方在未收到确认之前只能发送窗口拥塞值wnd大小的数据,当接收窗口收到序号的分包,将该数据放入接收队列供应用层取用,具体地,如果按照顺序接收到数据包,则直接处理,即放入接收队列,并返回接收结果;如果收到的数据在窗口范围内但顺序有点乱,那么则将数据先保存起来,在一个滑动窗口数据包接收完后则根据顺序进行处理并返回接收结果,例如接收到序号为n的数据包,下一个数据包应是序号为n+1的数据包,而此时接收到序号n+2的数据包,则先将序号为n+2的数据包缓存起来,等到接收到序号为n+1的数据包后,再将序号为n+1和序号为n+2一起处理,放入接收队列。
[0057]
步骤s201b,若未出现丢包,则认为滑动窗口内的数据包在规定时间内正常完成接收,则进一步判断当前视频编码码率是否满足视频传输带宽,若满足,则按照当前窗口值继续通信;若不满足,则提高当前视频编码码率,并增加滑动窗口的拥塞窗口值,此时拥塞窗口值以加1的方式增加,同时按加1的方式增加实时发送数据的窗口值,直到当前视频编码
码率达到配置的码率值后停止增加;
[0058]
步骤s201c,若出现丢包,则启动智能重传策略,并在丢包严重的情况下,则调低滑动窗口水位,即减小拥塞窗口值,即拥塞发送控制窗口wnd,并相应进行减低视频编码码率,从而保证正常传输。所述智能重传策略包括发送方超时重传、接收主动请求快速重传以及选择性重传。
[0059]
具体地,所述发送方超时重传主要依据rto(retransmission time out)重传超时时间来进行,本发明的方法在快速模式下1次rto即发起重传,保证可靠性的同时,大大减少重传时间,保证了实时性。
[0060]
所述接收方主动请求快速重传是指,如果接收端接收到了序号跳跃的数据包,则立即给发送方发送最后一个连续的数据包的ack(重复确认),以ack跨越数为依据,决定是否快速重传,本发明默认设置为ack跨越2个包,直接发起重传,不等rto重传超时时间,充分保证实时性。
[0061]
tcp丢包时会全部重传从丢的那个包开始以后的数据包,而本发明采用选择性重传,例如根据需要重传的数据是否超过了预设时间来确定是否重传,假设延时要求为200ms,若数据包已经超过了该时间,则无必要再重传,从而实现只重传真正丢失的数据包,为了保证质量和实时性,在网络比较差的情况下,可以选择只针对i帧重传,避免黑屏,可以保证云手机的最基本使用,这样可以大大减少重传的次数,减少拥塞,加快恢复,充分保证实时性。
[0062]
优选地,在出现丢包由发送方进行重传时,由发送方进行fec编码引入冗余包,接收方进行fec解码并恢复丢失的数据包,在终端算力足够和网络抖动明显的情况下,能提升udp传输的丢包、乱序抵抗力,为上层服务提供有力保障。比如一个丢包的数据包为m个字节,发送方通过fec编码,在包头增加n个字节,然后传输的数据是(m+n)个字节,当由于传输网络抖动,导致数据包里面有p(p《n)个数据出错了,可以根据编码所增加的n个字节发现并恢复这p个出错的数据,不需要重新传输改数据包,从而减少延迟。
[0063]
优选地,在本发明中,超时重传和快速重传可以是并列的,即符合条件就执行,选择性重传则是在超时重传和快速重传效果不大的情况下,则采取丢掉一些无用数据,只传最重要的数据,比如i帧。
[0064]
优选地,在本发明中,在传输过程中还需引入一些必要的业务层容错机制,最严重的情况就是丢帧,会导致画面短暂花屏,要能用i帧快速恢复,也就是根据延时情况,延时比较长时进行丢帧,清除延时过长的缓存,避免延时叠加;如果网络确实很差,则丢的包比较多,只传能独立解码的i帧。
[0065]
图3为本发明一种基于udp的视频快速传输系统的系统结构图。如图3所示,本发明一种基于udp的视频快速传输系统,包括:
[0066]
数据包封装处理单元30,用于在传输层,在udp数据报文的基础上对udp数据报文中的数据增加控制头,并对增加控制头后的数据报文进行封装。
[0067]
udp协议能实现快速传输,但udp协议包头中并没有定义一个序列号字段,udp协议层无法确认是否丢包,也就无法检测当前网络是否拥塞,是一种不可靠的传输协议。因此,本发明为了实现udp的可靠传输,在udp数据报文的基础上增加控制头,在传输层对数据进行封装,该控制头格式如下表2所示:
[0068]
表2
[0069][0070]
其中,各字段定义如下:
[0071]
sessionid:会话id
[0072]
command:区分数据包的类型
[0073]
fragment:数据分包传输序号
[0074]
wnd:拥塞发送控制窗口
[0075]
timestamp:发送时刻的时间戳
[0076]
seqno:发送序列号
[0077]
unackno:待接收消息序列号
[0078]
也就是说,由于udp在网络中的传输是不可靠的,因此可能会出现丢包和包的乱序,本发明通过参考tcp的拥塞控制方法,在udp数据报文的基础上的控制头中包含序列号字段seqno、拥塞发送控制窗口wnd等信息,以在传输层实现拥塞控制。
[0079]
数据包发送传输单元31,在传输层采用滑动窗口机制发送封装后的数据包。
[0080]
在本发明中,为了提高发送速度,发送方可以不必每发送一个包后就进行等待确认,而是可以发送多个包出去,然后等待接收方一一确认;又由于接收方不可能同时处理无限多的数据,因此需要限制发送方往网络中发送的数据数量,接收方维护一个接收窗口,接收方限制发送方在未收到确认之前只能发送所述拥塞发送控制窗口wnd大小的数据,这个机制叫做滑动窗口机制,在本发明中,发送方可以是云手机端,也可以是真机端,同样地,接收方也可以是云手机端或真机端。
[0081]
具体地,数据包发送传输单元31进一步包括:
[0082]
初始发送处理模块310,用于数据包发送采用慢开始,然后窗口值指数增长的方式,直到窗口值达到拥塞窗口值。
[0083]
具体地,所述慢开始是指先从1个数据包即窗口值为1个数据包大小,开始发送,然后呈指数增长,即实时发送数据的窗口值呈指数增长,所述指数增长指以2的次方一直翻倍(1,2,4,8...)增,直至窗口值增加至拥塞窗口值,所述拥塞窗口值为当前数据包的控制头中包括的拥塞发送控制窗口wnd值,表示一定时间内限制发送的数据包。
[0084]
拥塞调整模块311,用于根据接收方对当前滑动窗口内的数据包的接收结果调整滑动窗口的拥塞窗口值。
[0085]
在本发明中,发送方不是每发送一个包后则进行等待确认,而是在滑动窗口内发送多个数据包,然后等待接收方确认,若滑动窗口内的数据包在规定时间内正常完成接收,则增加滑动窗口的窗口拥塞值,例如:当发送的数据包《拥塞窗口值wnd时,按2的指数对实时发送数据的窗口值进行翻倍增加,而当发送的数据包》=拥塞窗口值wnd后,则按加1的方式增加窗口拥塞值,同时按加1的方式增加实时发送数据的窗口值,直到出现拥塞丢包或当
前视频编码码率(也就是说,本发明中视频编码码率根据动态码率调整,具体的动态码率调整可采用现有技术)达到配置的码率值,则停止增加,该配置的码率值一般为用户设定分辨率(比如高清720p)对应的最大码率。
[0086]
当出现丢包现象,即rto时间内没有收到接收方回复数据包的ack,则判断丢包,此时启动智能重传策咯,并在必要时(例如当丢包的数据超过设定值,则认为丢包严重,数据拥塞时),调低滑动窗口水位,即减小拥塞发送控制窗口,即拥塞窗口值wnd(例如按2的指数减少),并相应进行减低视频编码码率,以保证正常传输。
[0087]
具体地,拥塞调整模块311进一步包括:
[0088]
丢包判断模块,用于根据接收方对当前滑动窗口内的数据包的接收结果判断是否出现丢包,若未出现丢包,则进入步骤未丢包处理单元,否则进入步骤丢包处理单元。
[0089]
在本发明中,接收方维护一个接收窗口以限制发送方在未收到确认之前只能发送窗口拥塞值wnd大小的数据,当接收窗口收到序号的分包,将该数据放入接收队列供应用层取用,具体地,如果按照顺序接收到数据包,则直接处理,即放入接收队列,并返回接收结果;如果收到的数据在窗口范围内但顺序有点乱,那么则将数据先保存起来,在一个滑动窗口数据包接收完后则根据顺序进行处理并返回接收结果,例如接收到序号为n的数据包,下一个数据包应是序号为n+1的数据包,而此时接收到序号n+2的数据包,则先将序号为n+2的数据包缓存起来,等到接收到序号为n+1的数据包后,再将序号为n+1和序号为n+2一起处理,放入接收队列。
[0090]
未丢包处理单元,用于在判断未出现丢包时,认为滑动窗口内的数据包在规定时间内正常完成接收,则进一步判断当前视频编码码率是否满足视频传输带宽,若满足,则按照当前窗口值继续通信;若不满足,则提高当前视频编码码率,并增加滑动窗口的拥塞窗口值,此时拥塞窗口值以加1的方式增加,同时按加1的方式增加实时发送数据的窗口值,直到当前视频编码码率达到配置的码率值后停止增加;
[0091]
丢包处理单元,用于在判断出现丢包时启动智能重传策略,并在丢包严重的情况下,则调低滑动窗口水位,即减小拥塞窗口值,即拥塞发送控制窗口wnd,并相应进行减低视频编码码率,从而保证正常传输。所述智能重传策略包括发送方超时重传、接收主动请求快速重传以及选择性重传。
[0092]
具体地,所述发送方超时重传主要依据rto(retransmission time out)重传超时时间来进行,本发明的方法在快速模式下1次rto即发起重传,保证可靠性的同时,大大减少重传时间,保证了实时性。
[0093]
所述接收方主动请求快速重传是指,如果接收端接收到了序号跳跃的数据包,则立即给发送方发送最后一个连续的数据包的ack(重复确认),以ack跨越数为依据,决定是否快速重传,本发明默认设置为ack跨越2个包,直接发起重传,不等rto重传超时时间,充分保证实时性。
[0094]
tcp丢包时会全部重传从丢的那个包开始以后的数据包,而本发明采用选择性重传,例如根据需要重传的数据是否超过了预设时间来确定是否重传,假设延时要求为200ms,若数据包已经超过了该时间,则无必要再重传,从而实现只重传真正丢失的数据包,为了保证质量和实时性,在网络比较差的情况下,可以选择只针对i帧重传,避免黑屏,可以保证云手机的最基本使用,这样可以大大减少重传的次数,减少拥塞,加快恢复,充分保证
实时性。
[0095]
优选地,在出现丢包由发送方进行重传时,由发送方进行fec编码引入冗余包,接收方进行fec解码并恢复丢失的数据包,在终端算力足够和网络抖动明显的情况下,能提升udp传输的丢包、乱序抵抗力,为上层服务提供有力保障。比如一个丢包的数据包为m个字节,发送方通过fec编码,在包头增加n个字节,然后传输的数据是(m+n)个字节,当由于传输网络抖动,导致数据包里面有p(p《n)个数据出错了,可以根据编码所增加的n个字节发现并恢复这p个出错的数据,不需要重新传输改数据包,从而减少延迟。
[0096]
优选地,在本发明中,超时重传和快速重传可以是并列的,即符合条件就执行,选择性重传则是在超时重传和快速重传效果不大的情况下,则采取丢掉一些无用数据,只传最重要的数据,比如i帧。
[0097]
优选地,在本发明中,在传输过程中还需引入一些必要的业务层容错机制,最严重的情况就是丢帧,会导致画面短暂花屏,要能用i帧快速恢复,也就是根据延时情况,延时比较长时进行丢帧,清除延时过长的缓存,避免延时叠加;如果网络确实很差,则丢的包比较多,只传能独立解码的i帧。
[0098]
综上所述,本发明一种基于udp的视频快速传输方法及系统通过在传输层实现拥塞控制机制,结合智能重传(arq)、前向纠错(fec)等技术实现一套网络优化策略,降低网络抖动带来的影响,结合容错措施,适当丢帧并快速恢复,充分保证数据传输的可靠性性和实时性,本发明与基于tcp的数据传输方式相比,以较小的带宽的代价,大大减低了延时,尤其是在网络拥堵情况下解决了tcp协议的网络速度慢的问题,适合网络复杂的环境,更加符合云手机对延时要求很高的场景。
[0099]
上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何本领域技术人员均可在不违背本发明的精神及范畴下,对上述实施例进行修饰与改变。因此,本发明的权利保护范围,应如权利要求书所列。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1