一种面向NaaS中实时视频媒体流传输的智能决策丢包重传方法
文献发布时间:2024-04-18 20:01:23
技术领域
本发明涉及计算机网络传输和媒体资源处理技术领域,特别是一种面向NaaS中实时视频媒体流传输的智能决策丢包重传方法。
背景技术
随着社会的进步和技术的发展,基于NaaS的服务方式及系统应用日益普及,展现了其良好的业务灵活性,能够给用户提供更好的服务,改善提高用户体验。基于NaaS的服务方式及系统通常涉及实时视频媒体流的传输,现有技术中,实时视频媒体流的传输通常是以数据包的形式发送,在具体的数据包发送过程中,有可能因为各种原因造成数据包的发送失败,此情况下,为保证数据传输的完整性和有效性,需要对发送失败的数据包进行重新发送传输,其现有的简要流程如下:1、视频媒体流数据通过RTP协议进行传输;2、接收方通过RTP包头中的seq来判断收到的数据包是否存在丢包;3、接收方对于判定丢包的数据包,通过RTCP的NACK消息反馈给发送方;4、发送方根据NACK中的丢包信息,将全部丢失的RTP包按照发包顺序进行重传。现有的这种处理方式及流程在实际应用中存在一定的缺陷和不足,具体如下:1、对于每个丢失的数据包都进行重传会进一步加大网络传输负担;2、由于网络传输负担进一步加大,会导致更多的丢包;更多的丢包会导致更多的重传,从而进入恶性循环。因此,如何设计及优化实时视频媒体流传输的智能决策,以保障在当前网络条件下达到最佳的视频媒体流传输效果是非常必要的,也是本领域技术人员亟待解决的技术问题。
发明内容
本发明针对上述问题,提供一种面向NaaS中实时视频媒体流传输的智能决策丢包重传方法,包含以下步骤:
S1,构建“首发队列”和“重传队列”以用于媒体数据包的排队发送;
S2,对新生成的媒体数据包进行包价值计算和副本拷贝,将所述媒体数据包顺序放入所述“首发队列”中等待发送,将所述媒体数据包的放到"备份Map"中备用;
S3,等待发送指令,当到达“发送时机”时,基于所述包价值对所述“首发队列”和“重传队列”的最前列媒体数据包进行比较,取“首发队列”和“重传队列”中包价值相对较高的最前列媒体数据包进行发送。
S4,等待发送指令,当收到NACK时,从所述"备份Map"中取出需要重传的媒体数据包,将该需要重传的媒体数据包放入所述“重传队列”中等待发送,然后返回步骤S3。
作为本发明的进一步说明,所述步骤S2中,根据所述媒体数据包的重要性、成本和时效性三个因素计算其所对应的包价值,所述包价值的计算公式为:
包价值=重要性*时效性-成本/10;
其中,
成本=包字节长度/MTU,所述成本的范围为[1/MTU,1];
重要性=媒体重要性*0.8+关联重要性*0.2,所述重要性的范围为[0,1];
时效性=1/2^(包年龄/40),包年龄=当前时间毫秒时刻-包生成时间毫秒时刻,所述时效性的范围为[0,1]。
更进一步地,所述步骤S2的包价值计算中,所述媒体重要性由各种媒体编码器所定义的重要性进行转化得到,其取值范围为[0,1]。
更进一步地,所述步骤S2的包价值计算中,关联重要性取值范围为(0,1],关联重要性=max(k/20+1/j,1);
其中,所述k为一个媒体帧包含的数据包个数,所述j为需要发送的媒体数据包个数。
更进一步地,所述步骤S3包括以下执行方式:
S301,若"首发队列"和"重发队列"两个都为空,则等待;
S302,若"首发队列"和"重发队列"有一个为空,则直接从非空队列中取出最前面的媒体数据包进行发送;
S303,若"首发队列"最前面媒体数据包的包价值大于或等于"重发队列"的最前面媒体数据包的包价值,则将"首发队列"最前面的媒体数据包取出并发送;
S304,若"首发队列"最前面媒体数据包的包价值小于"重发队列"最前面媒体数据包的包价值,则将"重发队列"最前面的媒体数据包取出并发送,并且将"首发队列"最前面的媒体数据包取出,并根据包价值插入"重发队列"。
更进一步地,在所述步骤S3中,对发送速率进行限制,在所述发送速率不超过发送速率上限的范围内尽可能快的发送所述媒体数据包。
更进一步地,所述发送速率每50ms计算一次,计算方法为最近1000ms发送的数据比特数作为发送速率。
更进一步地,所述发送速率上限的计算方法为:
"发送速率上限"初始化为-1,即不做限制;
当收到首个NACK时,将"发送速率上限"设置为最近1秒的实际发送速率的2倍;
当收到NACK后,"发送速率上限"每100ms更新一次;
若在此100ms内未收到NACK,则将"发送速率上限"设置为原来的1.05倍;
若在此100ms内收到NACK,丢包数量为m,则将"发送速率上限"设置为原来的(1-(1/2+1/4+..+1/2^n))倍。
更进一步地,所述步骤S4包含以下分步骤:
S401,当收到NACK时,从所述"备份Map"中找到需要重传的媒体数据包;
S402,更新需要重传媒体数据包的包价值;
S403,将需要重传的媒体数据包,根据其包价值的大小,插入到"重传队列",包价值越大越靠前;
S404,当重传队列长度超过上限时,移除包价值最低的媒体数据包,保证重传队列长度不超过上限。
更进一步地,所述步骤S4中计算重传队列长度上限的方法为:
重传队列长度随着"发送速率上限"变化而变化,"发送速率上限"使用"kbit/s";
当"发送速率上限"为-1时,重传队列长度=10;
当"发送速率上限"不为-1时,重传队列长度=10+发送速率上限*10/1024。
本发明的有益效果:
本发明基于“发送时机”“首发队列”和“重传队列”三个概念,改善和优化了实时视频媒体流传输的丢包重传逻辑处理流程方法,能够根据当前传输媒体内容情况和实际网络情况,来综合做出重传决策保障在当前网络条件下达到最佳的视频媒体流传输效果,将需要的包进行优先发送,保障媒体的可用性与时效性,在网络不佳的情况下尽可能的避免重传导致的网络质量恶化。
附图说明
图1为本发明面向NaaS中实时视频媒体流传输的智能决策丢包重传方法流程图。
具体实施方式
下面结合附图对本发明实施例详细的说明,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。
在本发明的描述中,需要理解的是,术语“上”、“下”、“前”、“后”、“左”、“右”、“顶”、“底”、“内”、“外”、“第一”、“第二”等指示的方位或位置或顺序关系为基于附图所示的方位或位置或顺序关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
本发明提供一种面向NaaS中实时视频媒体流传输的智能决策丢包重传方法,包含以下步骤:
S1,构建“首发队列”和“重传队列”以用于媒体数据包的排队发送;
S2,对新生成的媒体数据包进行包价值计算和副本拷贝,将所述媒体数据包顺序放入所述“首发队列”中等待发送,将所述媒体数据包的放到"备份Map"中备用;
S3,等待发送指令,当到达“发送时机”时,基于所述包价值对所述“首发队列”和“重传队列”的最前列媒体数据包进行比较,取“首发队列”和“重传队列”中包价值相对较高的最前列媒体数据包进行发送。
S4,等待发送指令,当收到NACK时,从所述"备份Map"中取出需要重传的媒体数据包,将该需要重传的媒体数据包放入所述“重传队列”中等待发送,然后返回步骤S3。
具体的,本发明的一个实施例中,所述步骤S2中,根据所述媒体数据包的重要性、成本和时效性三个因素计算其所对应的包价值,所述包价值的计算公式为:
包价值=重要性*时效性-成本/10;
其中,
成本=包字节长度/MTU,所述成本的范围为[1/MTU,1];
重要性=媒体重要性*0.8+关联重要性*0.2,所述重要性的范围为[0,1];
时效性=1/2^(包年龄/40),包年龄=当前时间毫秒时刻-包生成时间毫秒时刻,所述时效性的范围为[0,1]。
本实施例中,所述步骤S2的包价值计算中,所述媒体重要性由各种媒体编码器所定义的重要性进行转化得到,其取值范围为[0,1]。
在上述所述步骤S2的包价值计算中,关联重要性取值范围为(0,1],关联重要性=
max(k/20+1/j,1);
其中,所述k为一个媒体帧包含的数据包个数,所述j为需要发送的媒体数据包个数。
更进一步地,所述步骤S3包括以下执行方式:
S301,若"首发队列"和"重发队列"两个都为空,则等待;
S302,若"首发队列"和"重发队列"有一个为空,则直接从非空队列中取出最前面的媒体数据包进行发送;
S303,若"首发队列"最前面媒体数据包的包价值大于或等于"重发队列"的最前面媒体数据包的包价值,则将"首发队列"最前面的媒体数据包取出并发送;
S304,若"首发队列"最前面媒体数据包的包价值小于"重发队列"最前面媒体数据包的包价值,则将"重发队列"最前面的媒体数据包取出并发送,并且将"首发队列"最前面的媒体数据包取出,并根据包价值插入"重发队列"。
在所述步骤S3中,对发送速率进行限制,在所述发送速率不超过发送速率上限的范围内尽可能快的发送所述媒体数据包。
例如,所述发送速率每50ms计算一次,计算方法为最近1000ms发送的数据比特数作为发送速率。
更进一步地,所述发送速率上限的计算方法为:
"发送速率上限"初始化为-1,即不做限制;
当收到首个NACK时,将"发送速率上限"设置为最近1秒的实际发送速率的2倍;
当收到NACK后,"发送速率上限"每100ms更新一次;
若在此100ms内未收到NACK,则将"发送速率上限"设置为原来的1.05倍;
若在此100ms内收到NACK,丢包数量为m,则将"发送速率上限"设置为原来的(1-(1/2+1/4+..+1/2^n))倍。
具体的,所述步骤S4包含以下分步骤:
S401,当收到NACK时,从所述"备份Map"中找到需要重传的媒体数据包;
S402,更新需要重传媒体数据包的包价值;
S403,将需要重传的媒体数据包,根据其包价值的大小,插入到"重传队列",包价值越大越靠前;
S404,当重传队列长度超过上限时,移除包价值最低的媒体数据包,保证重传队列长度不超过上限。
可行的,所述步骤S4中计算重传队列长度上限的方法为:
重传队列长度随着"发送速率上限"变化而变化,"发送速率上限"使用"kbit/s";
当"发送速率上限"为-1时,重传队列长度=10;
当"发送速率上限"不为-1时,重传队列长度=10+发送速率上限*10/1024。
以上仅就本发明较佳的实施例作了说明,但不能理解为是对权利要求的限制。本发明不仅局限于以上实施例,其具体结构允许有变化,总之,凡在本发明独立权利要求的保护范围内所作的各种变化均在本发明的保护范围内。
- 一种户外电气设备安全监测装置及其监测方法
- 一种PM2.5个体暴露自动化监测装置及监测方法
- 一种隧道变电站电气自动化监测装置
- 一种配电自动化设备电气自动化监测装置