发明内容
本申请实施例提供了一种基于ARQ的UDP协议数据传输方法、系统及设备,用于解决现有采用tcp协议传输流媒体的视频数据,存在延迟时间长、画面不流畅、花屏等的技术问题。
为了实现上述目的,本申请实施例提供如下技术方案:
一种基于ARQ的UDP协议数据传输方法,包括以下步骤:
获取发送端向接收端传输的应用数据和确认报文,将所述应用数据根据UDP协议生成m个分片报文,并将m个所述分片报文存储至发送队列;
所述发送端根据所述确认报文向所述接收端发送数据上传请求,所述接收端根据所述数据上传请求向所述发送端回传窗口信息报文;
所述发送端根据所述窗口信息报文从所述发送队列中选取n个分片报文,并按照丢包重发策略将n个所述分片报文逐一传送至所述接收端;
所述接收端对接收的每个所述分片报文进行解析,得到分片报文和与该分片报文对应的报文序号,若所述报文序号为期望接收报文序号,则更新所述接收端的期望接收报文序号以及所述接收端向所述发送端回传应答指令;
其中,所述应答指令包括最大接收报文序号和丢包率,所述窗口信息报文包括窗口信息,n、m为大于1的自然数,n小于m。
优选地,所述接收端根据所述数据上传请求向所述发送端回传窗口信息报文之前,该基于ARQ的UDP协议数据传输方法包括:
根据所述数据上传请求,查询所述接收端的接收窗口是否接收数据的剩余空间;
若所述接收端的接收窗口没有接收数据的剩余空间,则所述发送端向所述接收端发送窗口探测报文;所述接收端根据所述窗口探测报文向所述发送端回传窗口信息报文;
若所述接收端的接收窗口有接收数据的剩余空间,所述接收端根据所述剩余空间向所述发送端回传窗口信息报文;
其中,所述窗口信息报文的窗口信息包括接收端接收报文数据的接收窗口大小。
优选地,所述发送端根据所述窗口信息报文从所述发送队列中选取n个分片报文包括:根据所述接收窗口大小和分片报文的发送窗口大小,确定所述发送端向所述接收端传送分片报文的个数,并根据个数从所述发送队列中选取n个分片报文。
优选地,按照丢包重发策略将每个所述分片报文传送至所述接收端过程中,包括:所述发送端每向所述接收端发送一次所述分片报文,则更新一次与该分片报文对应的重发送次数,若所述重发送次数大于第一预设值,则所述发送端重新将该分片报文传送至所述接收端;
获取所述发送端与所述接收端之间传输分片报文的被跳过次数,若所述被跳过次数大于第二预设值,则所述发送端将被跳过的分片报文重新传送至所述接收端。
优选地,按照丢包重发策略将每个所述分片报文传送至所述接收端之后,包括:若在t时间后,所述发送端未接收到所述应答指令,则所述发送端重新将该分片报文传送至所述接收端。
优选地,该基于ARQ的UDP协议数据传输方法包括:根据所述最大接收报文序号清除所述发送端中已被所述接收端接收的分片报文,以及根据所述丢包率调整所述发送端的拥塞控制窗口。
优选地,根据所述应答指令调整所述发送端的拥塞控制窗口的步骤包括:
若所述丢包率不大于第一阈值,增大所述拥塞控制窗口;
若所述丢包率大于第一阈值且不大于第二阈值,所述拥塞控制窗口的大小不变;
若所述丢包率大于第二阈值,按照调整规则调整所述拥塞控制窗口;
其中,所述调整规则为:W=W0*(1-D),W0为发送端当前的拥塞控制窗口,D为丢包率,W为调整后的拥塞控制窗口。
优选地,该基于ARQ的UDP协议数据传输方法包括:所述接收端对接收所述发送端发送的数据进行解析,得到解析报文;若所述解析报文不为所述分片报文,则清除所述解析报文并更新期望接收报文序号。
本申请还提供一种基于ARQ的UDP协议数据传输系统,包括发送端和接收端,所述发送端和所述接收端均包括发送线程、发送缓冲区、发送队列、接收线程、接收缓冲区、接收队列和拥塞控制窗口,所述发送端和所述接收端按照上述所述的基于ARQ的UDP协议数据传输方法进行数据传输;
所述发送队列,用于存储应用数据生成的m个分片报文;
所述发送线程,用于从所述发送队列选取待发送的分片报文传送至所述发送缓冲区;
所述发送缓冲区,用于存放待发送的分片报文;
所述接收队列,用于存储接收的分片报文;
所述接收线程,用于将所述发送端发送的分片报文传送至所述接收缓冲区;
所述接收缓冲区,用于存放接收的分片报文。
本申请还提供一种终端设备,包括处理器和存储器;
所述存储器,用于存储程序代码,并将所述程序代码传输给所述处理器;
所述处理器,用于根据所述程序代码中的指令执行上述所述的基于ARQ的UDP协议数据传输方法。
从以上技术方案可以看出,本申请实施例具有以下优点:该基于ARQ的UDP协议数据传输方法、系统及设备,该方法包括获取发送端向接收端传输的应用数据和确认报文,将应用数据根据UDP协议生成m个分片报文,并将m个分片报文存储至发送队列;发送端根据确认报文向接收端发送数据上传请求,接收端根据数据上传请求向发送端回传窗口信息报文;发送端根据窗口信息报文从发送队列中选取n个分片报文,并按照丢包重发策略将n个分片报文逐一传送至接收端;接收端对接收的每个分片报文进行解析,得到分片报文和与该分片报文对应的报文序号,若报文序号为期望接收报文序号,则更新接收端的期望接收报文序号以及接收端向发送端回传应答指令。通过该基于ARQ的UDP协议数据传输方法实现发送端与接收端之间视频数据的传输,该UDP协议数据传输方法能够可以降低直播视频传输的延迟,画面延迟可以缩短达到500毫秒,直播画面可以实现秒快,增强用户的服务体验,在网络环境频繁抖动下,可以解决画面卡顿,画面播放不畅度问题,解决了现有采用tcp协议传输流媒体的视频数据,存在延迟时间长、画面不流畅、花屏等的技术问题。
具体实施方式
为使得本申请的发明目的、特征、优点能够更加的明显和易懂,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本申请一部分实施例,而非全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
本申请的专利术语:
自动重传请求(Automatic Repeat-reQuest,ARQ)是OSI模型中数据链路层的错误纠正协议之一。它包括停止等待ARQ协议和连续ARQ协议,错误侦测(Error Detection)、正面确认(Positive Acknowledgment)、逾时重传(Retransmission after Timeout)与负面确认即以重传(Negative Acknowledgment and Retransmission)等机制。
Internet协议集支持一个无连接的传输协议,该协议称为用户数据报协议(UDP,User Datagram Protocol)。UDP为应用程序提供了一种无需建立连接就可以发送封装的IP数据包的方法。
本申请提出一种基于ARQ的UDP协议数据传输方法、系统及设备,用于解决了现有采用tcp协议传输流媒体的视频数据,存在延迟时间长、画面不流畅、花屏等的技术问题。
实施例一:
图1为本申请实施例所述的基于ARQ的UDP协议数据传输方法的步骤流程图,图2为本申请实施例所述的基于ARQ的UDP协议数据传输方法中分片报文的结构图。
如图1所示,本申请提供一种基于ARQ的UDP协议数据传输方法,包括以下步骤:
S10.获取发送端向接收端传输的应用数据和确认报文,将应用数据根据UDP协议生成m个分片报文,并将m个分片报文存储至发送队列。
需要说明的是,在步骤S10中一是获取发送端向接收端传输的应用数据和确认报文;二是将应用数据根据UDP协议生成m个分片报文,并将m个分片报文存储至发送队列。在本实施例中,通过UDP协议将应用数据分为m个分片报文是通信领域比较成熟的技术,此处不做详述。其中,网络数据指从网络中获取的数据,此数据通过报文协议封装得到应用数据。
在本申请实施例中,发送端和接收端均包括发送线程、发送缓冲区、发送队列、接收线程、接收缓冲区、接收队列和拥塞控制窗口。
需要说明的是,在发送端和接收端中均创新udp socket,创建的udp socket包括发送线程、发送缓冲区、发送队列、接收线程、接收缓冲区、接收队列和拥塞控制窗口。在本实施例中,发送端和接收端的初始化期望接收报文序号均为0。发送端将应用数据依据UDP协议生成最小传输协议的m个分片报文,m个分片报文加入发送队列中。其中,发送端和接收端均可以为客户端或服务端,若发送端为客户端,则接收端为服务端;若发送端为服务端,则接收端为客户端。
如图2所示,在本申请实施例中,分片报文的结构包括报文标识、会话标识、交互指令、丢包率、分片id、剩余接收窗口大小、时间戳、分片报文序列号、待接收报文序列号、数据长度、下次超时重传时间、分片超时重传时间、收到确认被跳过次数和分片报文重发送次数。
需要说明的是,报文标识(flag):占用2字节、其报文以$#开头,用于判断报文协议。会话标识(session):占用30字节,此字段标识通信双方一次完整会话,很多时候,通信双方会出现多个业务场景,如视频传输、语音对讲、云台控制等;因此使用会话标识区分不同的通信业务场景。交互指令:占用30字节,定义通信两端的报文操作内容,指令包括:会话创建、发送、确认、窗口探测和窗口信息;会话创建:通知服务端,有用户需要建立会话;发送:识别该报文载荷为用户数据;确认:标识该报文为确认报文,告诉接收端已收到报文;窗口探测:标识该报文为探测报文,请求接收端返回接收窗口大小等信息;窗口信息:标识该报文为窗口信息报文,告知接收端当前接收端口大小等信息。丢包率lossrate:占用2字节,标识传输分片报文丢包率。分片id frg:占用32字节,在不同的网络中都有最大的网络传输单元,需要传输的数据如果大于最大传输单元,网络路由会将其进行分片后再传输;为了减少网络路由分片,提高转发速率,因此在应用层协议将数据进行分片,然后进行网络发送;每一个分片都需要分片id,方便接收端收到分片数据后进行重组。剩余接收窗口大小cwnd:占用32字节,发送报文的时候附带发送端剩余接收窗口大小,接收端能及时获取发送端的窗口信息,方便快速调整窗口发送缓冲区。时间戳ts:占用32字节,标识每一个报文生成的时间。待接收报文序列号una:占用32字节,接收端期待下一个报文的序列号,通过此信息,发送端可以知道接收到已收到的报文序列号。数据长度datelen:占用32字节,分片载荷数据的长度。下次超时重传时间resendts:占用32字节,用于报文重传,在下次超时重传的时间内还没收到应答指令,判断报文已丢失,需要重传此报文。分片超时重传时间rto:占用32字节,记录报文超时重传的时间间隔。收到确认被跳过的次数:占用32字节,用于判断当前报文是否丢失,例如:发送1、2、3、4、5报文时,如果只收到1、3、4、5报文的确认,报文2被跳过3次,可以认为报文2已经丢失,不等待报文2的确认可以马上重传。分片报文重发送次数xmit:占用32字节,记录此分片报文重发送次数,如果重传次数超过预设值,可以认为网络环境差,此次会话失效,需要调整参数重新建立会话。
在本申请实施例中,获取发送端向接收端传输的应用数据和确认报文之前,该基于ARQ的UDP协议数据传输方法还包括:发送端向接收端发送会话创建指令,接收端根据会话创建指令应答发送端,以使发送端与接收端之间建立连接。
S20.发送端根据确认报文向接收端发送数据上传请求,接收端根据数据上传请求向发送端回传窗口信息报文。
需要说明的是,在步骤S20中能够让发送端向接收端传输数据的数据上传请求,发送端向接收端发送确认报文这个数据上传请求,接收端根据数据上传请求以及结合自身情况向发送端回传窗口信息报文。在本实施例中,在步骤S20中,主要是发送端确认接收端能够接收分片报文的窗口信息。
S30.发送端根据窗口信息报文从述发送队列中选取n个分片报文,并按照丢包重发策略将n个分片报文逐一传送至接收端。
需要说明的是,在步骤S30中发送端根据接收端的窗口信息确定能够向接收端传输的n个分片报文。在本实施例中,发送端的发送线程从发送队列中取n个分片报文放到发送缓冲区中,在周期定时间隔中,通过丢包重发策略,从发送缓冲区取符合发送的条件的分片报文发送给接收端,同时,发送端通知上层当前发送缓冲区的空闲容量。
S40.接收端对接收的每个分片报文进行解析,得到分片报文和与该分片报文对应的报文序号,若报文序号为期望接收报文序号,则更新接收端的期望接收报文序号以及接收端向发送端回传应答指令。其中,应答指令包括最大接收报文序号和丢包率,窗口信息报文包括窗口信息,n、m为大于1的自然数,n小于m。
需要说明的是,接收端接收分片报文后,将接收的分片报文保存存进接收缓冲区,判断与该分片报文对应的报文序号是否为期望接收报文序号,若是,则将该分片报文添加到接收队列,期望接收报文号自动更新,即是期望接收报文号加1,且给发送端返回具有最大接收报文序号的应答指令。在本实施例中,发送端收到接收端已接收的最大接收报文序号,此时可以判断比此报文序号小的分片报文为接收端已收到的分片报文,将这些分片报文从发送端的发送缓冲区移除、删除或清除。
在本申请实施例中,该基于ARQ的UDP协议数据传输方法包括:在接收端接收的分片报文的报文序号为期望接收报文序号,计算接收端的丢包率,并将丢包率通过应答指令传回给发送端。
需要说明的是,计算接收端的丢包率的公式为:丢包率=(期望接收的分片报文数量-实际接收的分片报文数量)/期望接收的分片报文数量*100%。期望接收的分片报文数量=接收队列中分片报文的最大报文序号-接收队列中分片报文的最小报文序号+1;实际接收的分片报文数量=接收队列中分片报文的总数。
本申请提供的基于ARQ的UDP协议数据传输方法,包括获取发送端向接收端传输的应用数据和确认报文,将应用数据根据UDP协议生成m个分片报文,并将m个分片报文存储至发送队列;发送端根据确认报文向接收端发送数据上传请求,接收端根据数据上传请求向发送端回传窗口信息报文;发送端根据窗口信息报文从发送队列中选取n个分片报文,并按照丢包重发策略将n个分片报文逐一传送至接收端;接收端对接收的每个分片报文进行解析,得到分片报文和与该分片报文对应的报文序号,若报文序号为期望接收报文序号,则更新接收端的期望接收报文序号以及接收端向发送端回传应答指令。通过该基于ARQ的UDP协议数据传输方法实现发送端与接收端之间视频数据的传输,该UDP协议数据传输方法能够可以降低直播视频传输的延迟,画面延迟可以缩短达到500毫秒,直播画面可以实现秒快,增强用户的服务体验,在网络环境频繁抖动下,可以解决画面卡顿,画面播放不畅度问题,解决了现有采用tcp协议传输流媒体的视频数据,存在延迟时间长、画面不流畅、花屏等的技术问题。
在本申请的一个实施例中,接收端根据数据上传请求向发送端回传窗口信息报文之前,该基于ARQ的UDP协议数据传输方法包括:
根据数据上传请求,查询接收端的接收窗口是否接收数据的剩余空间;
若接收端的接收窗口没有接收数据的剩余空间,则发送端向接收端发送窗口探测报文;接收端根据窗口探测报文向发送端回传窗口信息报文;
若接收端的接收窗口有接收数据的剩余空间,接收端根据剩余空间向发送端回传窗口信息报文;
其中,窗口信息报文的窗口信息包括接收端接收报文数据的接收窗口大小;
发送端根据窗口信息报文从发送队列中选取n个分片报文包括:根据接收窗口大小和分片报文的发送窗口大小,确定发送端向所述接收端传送分片报文的个数,并根据个数从发送队列中选取n个分片报文。
需要说明的是,该基于ARQ的UDP协议数据传输方法需要根据接收端接收窗口的大小确定发送端发送分片报文的个数。在本实施例中,发送端向接收端发送分片报文之前,先确定接收端是否存在接收分片报文的窗口(窗口指的是接收数据的剩余空间)。在接收端没有接收分片报文的窗口时,则发送端需要增加窗口探测任务或根据已有的窗口探测任务向接收端发送窗口探测报文,之后接收端根据接收窗口探测报文的窗口信息任务向发送端回传窗口信息报文,而发送端根据窗口信息报文的接收窗口大小以及每个分片报文的窗口大小计算得到发送端能够向接收端传输分片报文的个数。
在本申请实施例中,若当前发送窗口的容量大小为a,接收端的接收窗口的容量大小为k,当a>k时,n=k;当a≤k时,n=a。
在本申请的一个实施例中,按照丢包重发策略将每个分片报文传送至接收端过程中,该基于ARQ的UDP协议数据传输方法包括:发送端每向接收端发送一次分片报文,则更新一次与该分片报文对应的重发送次数,若重发送次数大于第一预设值,则发送端重新将该分片报文传送至接收端;
获取发送端与接收端之间传输分片报文的被跳过次数,若被跳过次数大于第二预设值,则发送端将被跳过的分片报文重新传送至接收端。
需要说明的是,在发送端将n个分片报文增加至发送缓冲区中,发送端每将一个分片报文传送至接收端后,扫描一次发送缓冲区,更新一次与每个分片报文对应的重发送次数和被跳过次数。在本实施例中,第一预设值和第二预设值能够根据需求设置,此处不作详细限定。
在本申请的一个实施例中,按照丢包重发策略将每个分片报文传送至接收端之后,该基于ARQ的UDP协议数据传输方法包括:若在t时间后,发送端未接收到应答指令,则发送端重新将该分片报文传送至接收端。
需要说明的是,发送端向接收端发送分片报文,发送端需要等待接收端回复收到该分片报文的应答直流,如果等待了时间t都没有收到接收端回传的应答指令,则认为分片超时,则需要发送端重新将该分片报文传送至接收端。在本实施例中,时间t的数值可以根据需求设置,此处不作限定。
在本申请实施例中,该基于ARQ的UDP协议数据传输方法通过分片超时、重发送次数和被跳过次数超过阈值均需要发送端向接收端重新发送与之对应的分片报文,确保数据传输的完整性。
在本申请的一个实施例中,该基于ARQ的UDP协议数据传输方法包括:根据最大接收报文序号清除发送端中已被接收端接收的分片报文,以及根据丢包率调整发送端的拥塞控制窗口;根据应答指令调整发送端的拥塞控制窗口的步骤包括:
若丢包率不大于第一阈值,增大拥塞控制窗口;
若丢包率大于第一阈值且不大于第二阈值,拥塞控制窗口的大小不变;
若丢包率大于第二阈值,按照调整规则调整拥塞控制窗口;
其中,调整规则为:W=W0*(1-D),W0为发送端当前的拥塞控制窗口,D为丢包率,W为调整后的拥塞控制窗口。
需要说明的是,发送端收到接收端返回的丢包率,依据丢包率数值不同分别处理。若丢包率小于等于第一阈值,第一阈值可以优选为2%,增大拥塞控制窗口,便于发送端发送更多的数据。若丢包率大于第一阈值2%且小于等于第二阈值,第二阈值可以优选为10%,发送端的拥塞控制窗口不变,即发送端的发送缓冲区大小不变。若丢包率大于第二阈值,发送端按照调整规则调整拥塞控制窗口的大小。
在本申请的一个实施例中,该基于ARQ的UDP协议数据传输方法包括:接收端对接收发送端发送的数据进行解析,得到解析报文;若解析报文不为分片报文,则清除解析报文并更新期望接收报文序号。
需要说明的是,该基于ARQ的UDP协议数据传输方法的接收端通过UDP协议接收发送端发送的数据,首先将接收的数据放置至接收缓冲区中,之后对接收缓冲区的数据依据UDP协议进行解析,得到解析报文;若解析报文不为分片报文,则清除解析报文并更新期望接收报文序号。若解析报文为分片报文,通过解析报文的信息,得到接收端接收窗口大小,并记录下来,通过解析报文的信息得到接收端期望收到的下一个报文序号,此时从发送缓冲区移除比下一个报文序号小的分片报文,更新下一个期望接收到的报文序号。
在本申请实施例中,该基于ARQ的UDP协议数据传输方法还包括:判断解析报文的指令类型,
若解析报文的指令类型为应答确认指令,更新分片报文的超时重传时间,从接收缓冲区移除已确认的分片报文,更新下一个期望接收到的报文序号;
若解析报文的指令类型为发送报文指令,则将分片报文添加到接收缓冲区,再次判断该分片报文为期望接收报文,且接收窗口大于接收队列,则将该分片报文添加到接收队列,并从接收缓冲区移除该分片报文;
若解析报文的指令类型为窗口探测报文指令,则记录探测报文处理任务,在下一次循环时执行该任务,给接收端返回窗口信息。
在本申请的实施例中,若解析报文的当前发送窗口比接收窗口小,则调整发送窗口的大小和发送窗口的最容纳字节数。
需要说明的是,发送端与接收端之间的最大传输单元记为mss,发送窗口记为sw,发送窗口的最容纳字节数记为incr,接收窗口记为rmtw,接收端的门限记为ssthresh。发送窗口的最容纳字节数incr=sw*mss。调整发送窗口的大小和发送窗口的最容纳字节数的步骤包括:
若sw<rmtv且sw<ssthresh,则sw+1,incri=incri-1+mss;
若incri<mss,则incri=mss;
若(sw+1)*mss≤incri,则rw=(incri+mss-1/)mss。
若sw>rmtw,则sw=rmtw,incri=rmtw*mss。
式中,incri为第i次调整发送窗口的最容纳字节数,rw为门限增量倍数值。
实施例二:
本申请还提供一种基于ARQ的UDP协议数据传输系统,包括发送端和接收端,发送端和接收端均包括发送线程、发送缓冲区、发送队列、接收线程、接收缓冲区、接收队列和拥塞控制窗口,发送端和接收端按照上述的基于ARQ的UDP协议数据传输方法进行数据传输;
发送队列,用于存储应用数据生成的m个分片报文;
发送线程,用于从发送队列选取待发送的分片报文传送至发送缓冲区;
发送缓冲区,用于存放待发送的分片报文;
接收队列,用于存储接收的分片报文;
接收线程,用于将发送端发送的分片报文传送至接收缓冲区;
接收缓冲区,用于存放接收的分片报文。
需要说明的是,实施例二中ARQ的UDP协议数据传输方法的内容已经在实施例一中详细阐述了,在实施例二不再对ARQ的UDP协议数据传输方法的内容重复阐述。
在本申请实施例中,若发送端为客户端,接收端为流媒体服务端,应用数据通过设备端端提供,客户端负责播放音视频流,流媒体服务负责转发设备推流的音视频流,设备端负责给流媒体推送音视频流,则基于ARQ的UDP协议数据传输系统的工作流程是:
客户端向流媒体服务端发起connect连接,报文指令为会话创建指令,流媒体服务端收到会话创建指令后,给客户端应答,进入会话创建完成状态;
设备端端创建udp socket,开启一个网络数据发送线程,开启一个网络接收数据线程,创建发送缓冲区csbuf,发送队列csqueue,接收缓冲区crbuf,接收队列crqueue,拥塞控制窗口ccwnd,初始化期望接收报文序号为0;设备端向流媒体服务端发起connect连接,报文指令为会话创建指令,流媒体服务端收到会话创建指令后,给设备端应答,进入会话创建完成状态;
客户端通过报文协议向流媒体服务端发送设备直播请求,流媒体服务将直播请求下发到设备端,设备端收到直播请求后开始向流媒体推送音视频流;
设备端将音视频数据封装成私有协议包依据UDP协议组成分片报文,并加入发送队列csqueue,发送线程从csqueue中取分片报文放到发送缓冲区,在周期定时间隔中,通过丢包重发策略,从发送缓冲区取符合发送的条件的分片数据发送给服务端,并通知上层当前发送缓冲区的空闲容量;
流媒体服务端收到分片报文后,将保存存进接收缓冲区srbuf,判断该分片报文序号是否为期望接收报文序号;如果是,则将该报文添加到接收队列srqueue,期望接收报文号自增1;给设备端返回已收到的报文最大序号;定时计算丢包率,并返回给设备端;
设备端收到流媒体服务端已接收的最大接收报文序号,此时可以判断比此报文序号小的分片报文为流媒体服务端已收到的分片报文,将这些分片报文从客户端发送缓冲区移除;设备端收到流媒体服务返回的丢包率,依据丢包率数值不同分别处理,若丢包率小于等于2%,增大设备端的拥塞控制窗口,便于发送更多的数据;若丢包率大于2%且小于等于10%,设备端的发送缓冲区大小不变;若丢包率大于10%,开启设备端的FEC向前纠错功能模式;当流媒体服务端反馈的丢包率小于7%,且设备端为FEC功能模式,设备端关闭FEC功能模式。当流媒体服务端反馈的丢包率大于10%,且设备端为FEC功能模式,设备端调整拥塞控制窗口大小。流媒体服务端收到设备推送的音视频流后,卸载原报文协议,将音视频数据发送媒体源队列,开启一个消费线程,从媒体源队列取音视频数据,然后组报文协议发送给客户端,数据传输过程中的丢包重发、丢包率拥塞窗口控制、FEC动态调整流程和设备端、流媒体端流程一致。
实施例三:
本申请还提供一种终端设备,包括处理器和存储器;
存储器,用于存储程序代码,并将程序代码传输给处理器;
处理器,用于根据程序代码中的指令执行上述的基于ARQ的UDP协议数据传输方法。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。