CN112087398A - 一种视频帧的发送方法、装置、设备及存储介质 - Google Patents
一种视频帧的发送方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN112087398A CN112087398A CN202010885512.6A CN202010885512A CN112087398A CN 112087398 A CN112087398 A CN 112087398A CN 202010885512 A CN202010885512 A CN 202010885512A CN 112087398 A CN112087398 A CN 112087398A
- Authority
- CN
- China
- Prior art keywords
- sent
- time
- send
- message
- current
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 54
- 230000005540 biological transmission Effects 0.000 claims abstract description 19
- 230000003111 delayed effect Effects 0.000 claims description 30
- 238000004364 calculation method Methods 0.000 description 9
- 238000007493 shaping process Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000009365 direct transmission Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/28—Flow control; Congestion control in relation to timing considerations
- H04L47/283—Flow control; Congestion control in relation to timing considerations in response to processing delays, e.g. caused by jitter or round trip time [RTT]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/36—Flow control; Congestion control by determining packet size, e.g. maximum transfer unit [MTU]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本公开提供一种视频帧的发送方法、装置、设备及存储介质,涉及计算机技术领域,能够解决现有技术中小包报文一次性发送造成瞬时突发流量大,容易造成数据包丢失的问题。具体技术方案为:首先获取系统当前时间与第i个待发送报文的发送时间,其中i≥1,第i个待发送报文为视频帧拆分后的数据包;然后判断系统当前时间是否大于或等于第i个待发送报文的发送时间;若是,则发送第i个待发送报文;若不是,则确定第i个待发送报文对应的延迟发送时间,在等待延迟发送时间后,对第i个待发送报文进行判断。本公开用于视频帧的发送。
Description
技术领域
本公开涉及计算机技术领域,尤其涉及一种视频帧的发送方法、装置、设备及存储介质。
背景技术
在视频传输领域,一个视频帧,尤其是I帧,一般来讲比较大。为了适应IP网络传输,现有技术中,一般会将其拆分成可以供网络传输的小包报文,但是这些小包报文在发送时会一次性发送,使瞬时产生较大的突发流量,这种情况下,在有网络限制的链路里就很容易造成数据包的丢失。
发明内容
本公开实施例提供一种视频帧的发送方法、装置、设备及存储介质,能够解决现有技术中小包报文一次性发送造成瞬时突发流量大,容易造成数据包丢失的问题。所述技术方案如下:
根据本公开实施例的第一方面,提供一种视频帧的发送方法,该方法包括:
获取系统当前时间与第i个待发送报文的发送时间;其中i≥1,所述第i个待发送报文为视频帧拆分后的数据包;
判断所述系统当前时间是否大于或等于所述第i个待发送报文的发送时间;
若是,则发送所述第i个待发送报文;
若不是,则确定所述第i个待发送报文对应的延迟发送时间,在等待延迟发送时间后,对所述第i个待发送报文进行判断。
本公开实施例提供的视频帧的发送方法,首先获取系统当前时间与第i个待发送报文的发送时间,其中i≥1,第i个待发送报文为视频帧拆分后的数据包;然后判断系统当前时间是否大于或等于第i个待发送报文的发送时间;若是,则发送第i个待发送报文;若不是,则确定第i个待发送报文对应的延迟发送时间,在等待延迟发送时间后,对第i个待发送报文进行判断。本公开在发送每个待发送报文之前,对当前报文是否可发送进行判断,如果未到达可发送时间,则延迟一段时间后再次进行判断,通过这种方式能够有效避免一次性连续发送过多报文而造成的突发流量,即可达到控制流量的目的,从而减少由于流量突发而造成的丢包问题。
在一个实施例中,
当i=1时,所述获取第i个待发送报文的发送时间包括:
通过第一公式计算得到所述第i个待发送报文的发送时间,所述第一公式包括:
next_send_timei=now_time+γ
其中,next_send_timei为第i个待发送报文的发送时间;now_time为系统当前时间;γ为调整系数。
本公开实施例通过以上步骤,可以获得第一报文发送的时间。
在一个实施例中,在发送所述第i个待发送报文之前,所述方法还包括:
计算所述第i个待发送报文发送前的流量结余字节数;
当i=1时,通过第二公式计算得到所述第i个待发送报文发送前的流量结余字节数,所述第二公式包括:
current_sendi1=max_send*β
其中,current_sendi1为第i个待发送报文发送前的流量结余字节数;max_send为单次调度可以发送的最大字节数;β为调整系数;
当i≥2时,通过第三公式计算得到所述第i个待发送报文发送前的流量结余字节数,所述第三公式包括:
current_sendi1=min(max_send,current_sendi-1+(now_time-next_send_timei-1)*per_send)
其中,current_sendi1为第i个待发送报文发送前的流量结余字节数;max_send为单次调度可以发送的最大字节数;current_sendi-1为第i-1个待发送报文发送后的流量结余字节数;now_time为系统当前时间;
next_send_timei-1为第i-1个待发送报文的发送时间;per_send为单位时间内按照当前带宽可以发送的字节数。
本公开实施例通过以上步骤,可以获得在第i个待发送报文发送前的流量结余字节数,通过控制发送字节数,能够确保报文发送过程中,不会出现丢包现象。
在一个实施例中,通过第四公式计算得到所述单位时间内按照当前带宽可以发送的字节数,所述第四公式包括:
per_send=BW/time_factor
其中,per_send为单位时间内按照当前带宽可以发送的字节数;BW为限定带宽,单位为B/s;time_factor为时间换算因子;
通过第五公式计算得到所述单次调度可以发送的最大字节数,所述第五公式包括:
max_send=min_sche_time*per_send*α
其中,max_send单次调度可以发送的最大字节数;min_sche_time指两次调度的最小调度时间间隔;per_send为单位时间内按照当前带宽可以发送的字节数;α为调整系数。
在一个实施例中,在发送所述第i个待发送报文之后,所述方法还包括:
通过第六公式计算得到第i个待发送报文发送后的流量结余字节数,所述第六公式包括:
current_sendi2=current_sendi1-min(send_bytesi,current_sendi1)
其中,current_sendi2为第i个待发送报文发送后的流量结余字节数;current_sendi1为第i个待发送报文发送前的流量结余字节数;send_bytesi为第i个待发送报文的数据包大小。
本公开实施例通过以上步骤,可以获得第i个待发送报文发送后的流量结余字节数,通过控制发送字节数,能够确保报文发送过程中,不会出现丢包现象。
在一个实施例中,当i≥2时,所述获取第i个待发送报文的发送时间包括:
通过第七公式计算得到所述第i个待发送报文的发送时间,所述第七公式包括:
next_send_timei=next_send_timei-1+(send_bytesi-1-min(send_bytesi-1,current_send(i-1)2))/per_send
其中,next_send_timei为第i个待发送报文的发送时间;next_send_timei-1为第i-1个待发送报文的发送时间,send_bytesi-1为第i-1个待发送报文的数据包大小;current_send(i-1)2为第i-1个待发送报文发送后的流量结余字节数;per_send为单位时间内按照当前带宽可以发送的字节数。
本公开实施例通过以上步骤,可以获得第i个待发送报文的发送时间,通过控制发送时间,能够确保报文发送过程中,不会出现丢包现象。
在一个实施例中,延迟发送时间通过以下公式进行计算:
delay_send_time=(send_diff_time/min_sche_time+1)*min_sche_time
其中,delay_send_time为延迟发送时间;send_diff_time为系统当前时间与第i个待发送报文发送时间的时间差值;min_sche_time为两次调度的最小调度时间间隔。
本公开实施例通过以上步骤,当第i个待发送报文的发送时间小于系统当前时间时,通过计算延迟发送时间,则延迟发送时间结束后,可以进行下一次发送报文。
根据本公开实施例的第二方面,提供一种视频帧的发送装置,包括获取模块、判断模块和发送模块;
所述获取模块,用于获取系统当前时间与第i个待发送报文的发送时间;其中i≥1,所述第i个待发送报文为视频帧拆分后的数据包;
所述判断模块,用于判断所述系统当前时间是否大于或等于所述第i个待发送报文的发送时间;
所述发送模块,用于当所述判断模块的判断结果为是时,发送所述第i个待发送报文;
所述判断模块,还用于当判断结果为不是时,确定所述第i个待发送报文对应的延迟发送时间,在等待延迟发送时间后,对所述第i个待发送报文进行判断。
本公开实施例提供的视频帧的发送装置,包括获取模块、判断模块和发送模块;获取模块获取系统当前时间与第i个待发送报文的发送时间;其中i≥1,第i个待发送报文为视频帧拆分后的数据包;判断模块判断系统当前时间是否大于或等于第i个待发送报文的发送时间;发送模块,用于当判断模块的判断结果为是时,发送第i个待发送报文;判断模块,还用于当判断结果为不是时,确定第i个待发送报文对应的延迟发送时间,在等待延迟发送时间后,对第i个待发送报文进行判断。本公开在发送每个待发送报文之前,对当前报文是否可发送进行判断,如果未到达可发送时间,则延迟一段时间后再次进行判断,通过这种方式能够有效避免一次性连续发送过多报文而造成的突发流量,即可达到流量整形的目的,从而减少由于流量突发而造成的丢包问题。
根据本公开实施例的第三方面,提供一种视频帧的发送设备,所述视频帧的发送设备包括处理器和存储器,所述存储器中存储有至少一条计算机指令,所述指令由所述处理器加载并执行以实现上述任一项所述的视频帧的发送方法中所执行的步骤。
根据本公开实施例的第四方面,提供一种计算机可读存储介质,所述存储介质中存储有至少一条计算机指令,所述指令由处理器加载并执行以实现上述任一项所述的视频帧的发送方法中所执行的步骤。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
图1是本公开实施例提供的一种视频帧的发送方法的算法原理图;
图2是本公开实施例提供的一种视频帧的发送方法的流程图;
图3是本公开实施例提供的一种视频帧的发送装置的流程图;
图4是本公开实施例提供的一种视频帧的发送装置的流程图;
图5是本公开实施例提供的一种视频帧的发送装置的结构图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
事实上,在视频帧传输过程中,所有的视频帧并不是连续发送的,而是一帧和一帧之间以一定时间间隔进行发送的。比如帧率为30(1秒钟发送30帧)的视频流,视频帧之间的发送时间间隔为1/30s,约为33ms,也可以说视频帧的发送时间周期是33ms。因此,在网络带宽受限的情况下,只要根据受限带宽将视频帧拆分后的小包以较为均匀的速度帧间隔时间内发送到接收端,就可以避免由于突发流量而产生的丢包,以上述为例,只要将视频帧在33ms内发送到接收端,就不会影响用户体验。
基于以上分析,本公开提供了一种实现的算法原理,如图1所示,本发明的算法原理为:当发送端要发送报文时,首先判断当前报文是否可以发送,如果可以,则直接发送该报文,如果不可以,则延时一段时间后,再次进行是否可发送判断。
因此,本公开实施例提供一种视频帧的发送方法,如图2所示,该视频帧的发送方法包括以下步骤:
步骤201、获取系统当前时间与第i个待发送报文的发送时间;其中i≥1,第i个待发送报文为视频帧拆分后的数据包;
具体的,报文指的是视频帧根据IP网络最大传输单元(Maximum Tran-smissionUnit,MTU)拆分后供网络直接传送的数据包。
在一个实施例中,通过第四公式计算得到单位时间内按照当前带宽可以发送的字节数,第四公式包括:
per_send=BW/time_factor
其中,per_send为单位时间内按照当前带宽可以发送的字节数;BW为限定带宽,单位为B/s;time_factor为时间换算因子;
通过第五公式计算得到单次调度可以发送的最大字节数,第五公式包括:
max_send=min_sche_time*per_send*α
其中,max_send单次调度可以发送的最大字节数;min_sche_time指两次调度的最小调度时间间隔;per_send为单位时间内按照当前带宽可以发送的字节数;α为调整系数。
在一个实施例中,发送第i个待发送报文之前,上述方法还包括:
计算第i个待发送报文发送前的流量结余字节数;
当i=1时,通过第二公式计算得到第i个待发送报文发送前的流量结余字节数,第二公式包括:
current_sendi1=max_send*β
其中,current_sendi1为第i个待发送报文发送前的流量结余字节数;max_send为单次调度可以发送的最大字节数;β为调整系数;
在一个实施例中,当i=1时,获取第i个待发送报文的发送时间包括:
通过第一公式计算得到第i个待发送报文的发送时间,第一公式包括:
next_send_timei=now_time+γ
其中,next_send_timei为第i个待发送报文的发送时间;now_time为系统当前时间;γ为调整系数。
本公开实施例通过以上步骤,可以获得第一个待发送报文的发送时间。
具体的,当now_time≥next_send_timei时,则第i个待发送报文可以被发报。且per_send和max_send在初始化以后不再更新,需要对current_sendi1和current_sendi2与next_send_timei值进行更新。
在一个实施例中,当i≥2时,通过第三公式计算得到第i个待发送报文发送前的流量结余字节数,第三公式包括:
current_sendi1=min(max_send,current_sendi-1+(now_time-next_send_timei-1)*per_send)
其中,current_sendi1为第i个待发送报文发送前的流量结余字节数;max_send为单次调度可以发送的最大字节数;current_sendi-1为第i-1个待发送报文发送后的流量结余字节数;now_time为系统当前时间;
next_send_timei-1为第i-1个待发送报文的发送时间;per_send为单位时间内按照当前带宽可以发送的字节数。
具体的,此时next_send_timei=now_time。
本公开实施例通过以上步骤,可以获得第i个待发送报文发送前的流量结余字节数,通过控制发送字节数,能够确保报文发送过程中,不会出现丢包现象。
在一个实施例中,发送第i个待发送报文之后,上述方法还包括:
通过第六公式计算得到第i个待发送报文发送后的流量结余字节数,第六公式包括:
current_sendi2=current_sendi1-min(send_bytesi,current_sendi1)
其中,current_sendi2为第i个待发送报文发送后的流量结余字节数;current_sendi1为第i个待发送报文发送前的流量结余字节数;send_bytesi为第i个待发送报文的数据包大小。
本公开实施例通过以上步骤,可以获得下一个待发送报文的发送时间和第i个待发送报文发送后的流量结余字节数,通过控制发送时间和发送字节数,能够确保报文发送过程中,不会出现丢包现象。
在一个实施例中,当i≥2时,获取第i个待发送报文的发送时间包括:
通过第七公式计算得到第i个待发送报文的发送时间,第七公式包括:next_send_timei=next_send_timei-1+(send_bytesi-1-min(send_bytesi-1,current_send(i-1)2))/per_send
其中,next_send_timei为第i个待发送报文的发送时间;next_send_timei-1为第i-1个待发送报文的发送时间,send_bytesi-1为第i-1个待发送报文的数据包大小;current_send(i-1)2为第i-1个待发送报文发送后的流量结余字节数;per_send为单位时间内按照当前带宽可以发送的字节数。
步骤202、判断系统当前时间是否大于或等于第i个待发送报文的发送时间;
步骤203、若是,则发送第i个待发送报文。
步骤204、若不是,则确定第i个待发送报文对应的延迟发送时间,在等待延迟发送时间后,对第i个待发送报文再次进行判断。
具体的,当now_time<next_send_timei时,证明当前第i个待发送报文不可以发送,根据next_send_timei-now_time,即计算出当前需要延迟多长时间才可以发送当前第i个待发送报文。但是由于系统发送数据一般都很快,如有连续的待发送报文,前后两个待发送报文发送的时间间隔会很小,一般为us级别,而系统自带的延时函数精度很难达到us级别,因此,采用如下计算公式对该时间差值进行处理,得到放大后的延时时间。
在一个实施例中,延迟发送时间通过以下公式进行计算:
delay_send_time=(send_diff_time/min_sche_time+1)*min_sche_time
其中,delay_send_time为延迟发送时间;send_diff_time为系统当前时间与第i个待发送报文发送时间的时间差值;min_sche_time为两次调度的最小调度时间间隔。
本公开实施例通过以上步骤,当第i个待发送报文的发送时间小于系统当前时间时,通过计算延迟发送时间,则延迟发送时间结束后,可以进行下一次发送报文。本实施例中,该公式最终的delay_send_time对min_sche_time向上取整,将延时时间放大为min_sche_time的倍数,无需us级别的延时函数。
本公开实施例提供的视频帧的发送方法,首先获取系统当前时间与第i个待发送报文的发送时间,其中i≥1,第i个待发送报文为视频帧拆分后的数据包;然后判断系统当前时间是否大于或等于第i个待发送报文的发送时间;若是,则发送第i个待发送报文;若不是,则确定第i个待发送报文对应的延迟发送时间,在等待延迟发送时间后,对第i个待发送报文进行判断。本公开在发送每个待发送报文之前,对当前报文是否可发送进行判断,如果未到达可发送时间,则延迟一段时间后再次进行判断,通过这种方式能够有效避免一次性连续发送过多报文而造成的突发流量,即可达到控制流量的目的,从而减少由于流量突发而造成的丢包问题。
基于上述图2对应的实施例提供的视频帧的发送方法,本公开另一实施例提供一种视频帧的发送方法,参照图3、图4所示,本实施例提供的视频帧的发送方法包括以下步骤:
步骤301、初值计算,包括:单位时间内按照当前带宽可以发送的字节数per_send、单次调度可以发送的最大字节数max_send、第i个待发送报文发送前的流量结余字节数current_sendi1,其中i=1,以及第i个待发送报文的发送时间next_send_timei;
步骤3011、计算单位时间内按照当前带宽可以发送的字节数,计算公式如下:
per_send=BW/time_factor (公式1)
其中,per_send为单位时间内按照当前带宽可以发送的字节数;BW为限定带宽,单位为B/s;time_factor为时间换算因子;
假设限定带宽BW=5000000B/s。若单位时间定义为us,则time_factor为1000000。此时,per_send的单位为B/us。per_send=5B/us。即理论上每us可以发送的流量为5B。
步骤3012、计算单次调度可以发送的最大字节数,计算公式如下:
max_send=min_sche_time*per_send*α (公式2)
其中,max_send单次调度可以发送的最大字节数;min_sche_time指两次调度的最小调度时间间隔;per_send为单位时间内按照当前带宽可以发送的字节数;α为调整系数。
本实施例中,α建议值1.0-1.2。
接上例,假设min_sche_time为2ms,即2000us。用户使用的调整系数α为1.0,则单次调度可以发送的最大字节数等于最小调度时间间隔内产生的流量结余。此时,max_send=2000*5B=10000B。之所以有这个量,是因为本发明是根据先后两次报文发送的时间差值进行流量控制的。为了避免发送端报文两次发送时间间隔过大产生很大的流量结余,造成流量控制失效。
步骤3013、计算第i个待发送报文发送前的流量结余字节数,其中i=1,计算公式如下:
current_sendi1=max_send*β (公式3)
其中,current_sendi1为第i个待发送报文发送前的流量结余字节数;max_send为单次调度可以发送的最大字节数;β为调整系数。
具体的,β建议值0.8-1.0。
接上例,假设用户使用的调整系数β为1.0,则当前流量结余字节数等于流量结余最大字节数10000B。也就是说,我们假定系统运行之前主机未发送任何数据占用带宽,系统启动后可以直接按照当前带宽发送报文。
步骤3014、计算第i个待发送报文的发送时间,其中i=1,计算公式如下:
next_send_timei=now_time+γ (公式4)
其中,next_send_timei为第i个待发送报文的发送时间;now_time为系统当前时间;γ为调整系数;
具体的,用户可以根据自身需求调整γ的数值。假设用户使用的调整系数γ为0,则系统启动后可以立即发送数据。因为在发送数据时获取的now_time必然比在设置next_send_timei初值时的now_time大。
步骤302、判断第i个待发送报文是否可以发送
具体的,可以通过以下方式判断第i个待发送报文是否可以发送:
获取当前系统时间now_time与next_send_timei比较:
若now_time<next_send_timei,证明当前报文不可以发送,返回next_send_timei-now_time,即计算出当前需要延迟多长时间才可以发送当前报文。由于系统发送数据一般都很快,如有连续的待发送报文,前后两个待发送报文发送的时间间隔会很小,一般为us级别。这也是为什么会造成突发流量要进行流量整形的原因。由于系统自带的延时函数精度很难达到us级别。因此,采用如下计算公式对该时间差值进行处理,得到放大后的延迟发送时间:
delay_send_time=(send_diff_time/min_sche_time+1)*min_sche_time (公式5)
其中,delay_send_time为延迟发送时间;send_diff_time为系统当前时间与第i个待发送报文的发送时间的时间差值;min_sche_time为两次调度的最小调度时间间隔。
该公式最终的delay_send_time对min_sche_time向上取整,将延迟发送时间放大为min_sche_time的倍数,无需us级别的延时函数。
接上例,min_sche_time为2ms,假设计算得到的send_diff_time值为996us,则使用上述公式得到的delay_send_time为2000us。
也就说,当now_time<next_send_timei,表明第i个待发送报文在当前时间不可发送,直接返回经过公式5处理后的延迟发送时间,不更新相关值。
若now_time≥next_send_timei,则第i个待发送报文可以被发送并更新相关值。
下面具体介绍如何更新相关值:
per_send和max_send在初始化以后不再更新。只需对current_sendi1、current_sendi2与next_send_timei值进行更新,计算公式如下:
第i个待发送报文发送前current_sendi1与next_send_timei的计算,其中i≥2:
current_sendi1=min(max_send,current_sendi-1+(now_time-next_send_timei-1)*per_send) (公式6)
next_send_timei=now_time (公式7)
其中,current_sendi1为第i个待发送报文发送前的流量结余字节数;max_send为单次调度可以发送的最大字节数;current_sendi-1为第i-1个待发送报文发送后的流量结余字节数;now_time为系统当前时间;next_send_timei-1为第i-1个待发送报文的发送时间;per_send为单位时间内按照当前带宽可以发送的字节数。
接上例,max_send为10000B,假设current_sendi-1为5000B,表示在当前报文发送的时刻还有5000B的流量结余。新加上次报文发送到该次报文发送时间内新产生的流量结余,得到新的current_sendi1。若新产生的流量结余为2000B,则加上上次的流量残余,则新的current_sendi1为7000B。若新产生的流量结余为20000B,加上上次的流量残余为25000B,大于max_send,则新的current_sendi1为max_send等于10000B。
第i个待发送报文发送后current_sendi2与next_send_timei的计算:current_sendi2=current_sendi1-min(send_bytesi,current_sendi1) (公式8)
next_send_timei=next_send_timei-1+(send_bytesi-1-min(send_bytesi-1,current_send(i-1)2))/per_send (公式9)
其中,current_sendi2为第i个待发送报文发送后的流量结余字节数;current_sendi1为第i个待发送报文发送前的流量结余字节数;send_bytesi为第i个待发送报文的数据包大小;next_send_timei为第i个待发送报文的发送时间;next_send_timei-1为第i-1个待发送报文的发送时间,send_bytesi-1为第i-1个待发送报文的数据包大小;current_send(i-1)2为第i-1个待发送报文发送后的流量结余字节数;per_send为单位时间内按照当前带宽可以发送的字节数。
接上例,更新过后发送前的current_sendi1等于800B。假设当前需要发送的报文大小为500B,发送后current_sendi2等于300B,此时next_send_timei被更新为当前时间。假设当前需要发送的报文大小为1000B,当前报文发送后相当于被透支了200B的流量,则需要被延时。延时时间为200/per_send=40us。同样当前延时时间也会被公式5处理,最终返回的延时时间delay_send_time为2000us。
步骤3、流量整形
每次发送报文前,首先,执行步骤2,去判断当前报文是否可以发送,如果可以则直接发送;若当前报文不可发送,则根据返回的延时时间,进行延时后,再次执行步骤2重新判断当前报文是否可发送,以此类推。通过该方案可以避免一次性连续发送过多报文而造成的突发流量,即可达到流量整形的目的,效减少由于流量突发而造成的丢包。
本公开实施例提供的视频帧的发送方法,首先获取系统当前时间与第i个待发送报文的发送时间,其中i≥1,第i个待发送报文为视频帧拆分后的数据包;然后判断系统当前时间是否大于或等于第i个待发送报文的发送时间;若是,则发送第i个待发送报文;若不是,则确定第i个待发送报文对应的延迟发送时间,在等待延迟发送时间后,对第i个待发送报文进行判断。本公开在发送每个待发送报文之前,对当前报文是否可发送进行判断,如果未到达可发送时间,则延迟一段时间后再次进行判断,通过这种方式能够有效避免一次性连续发送过多报文而造成的突发流量,即可达到控制流量的目的,从而减少由于流量突发而造成的丢包问题。
基于上述图2、图3和图4对应的实施例中所描述的视频帧的发送方法,下述为本公开装置实施例,可以用于执行本公开方法实施例。
本公开实施例提供一种视频帧的发送装置,如图5所示,该视频帧的发送装置40包括:获取模块401、判断模块402和发送模块403;
获取模块401,用于获取系统当前时间与第i个待发送报文的发送时间;其中i≥1,第i个待发送报文为视频帧拆分后的数据包;
判断模块402,用于判断系统当前时间是否大于或等于第i个待发送报文的发送时间;
发送模块403,用于当判断模块402的判断结果为是时,发送第i个待发送报文;
判断模块402,还用于当判断结果为不是时,确定第i个待发送报文对应的延迟发送时间,在等待延迟发送时间后,对第i个待发送报文进行判断。
本公开实施例提供的视频帧的发送装置,包括获取模块401、判断模块402和发送模块403;获取模块401获取系统当前时间与第i个待发送报文的发送时间;其中i≥1,第i个待发送报文为视频帧拆分后的数据包;判断模块402判断系统当前时间是否大于或等于第i个待发送报文的发送时间;发送模块403用于当判断模块402的判断结果为是时,发送第i个待发送报文;判断模块402还用于当判断结果为不是时,确定第i个待发送报文对应的延迟发送时间,在等待延迟发送时间后,对第i个待发送报文进行判断。本公开在发送每个待发送报文之前,对当前报文是否可发送进行判断,如果未到达可发送时间,则延迟一段时间后再次进行判断,通过这种方式能够有效避免一次性连续发送过多报文而造成的突发流量,即可达到流量整形的目的,从而减少由于流量突发而造成的丢包问题。
基于上述图2、图3和图4对应的实施例中所描述的视频帧的发送方法,本公开另一实施例还提供一种视频帧的发送设备,该视频帧的发送设备包括处理器和存储器,存储器中存储有至少一条计算机指令,该指令由处理器加载并执行以实现上述图2、图3和图4对应的实施例中所描述的视频帧的发送方法。
基于上述图2、图3和图4对应的实施例中所描述的视频帧的发送方法,本公开实施例还提供一种计算机可读存储介质,例如,非临时性计算机可读存储介质可以是只读存储器(英文:Read Only Memory,ROM)、随机存取存储器(英文:Random Access Memory,RAM)、CD-ROM、磁带、软盘和光数据存储装置等。该存储介质上存储有至少一条计算机指令,该计算机指令由处理器加载并用于执行上述图2、图3和图4对应的实施例中所描述的视频帧的发送方法,此处不再赘述。
本领域技术人员在考虑说明书及实践这里公开的公开后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
Claims (10)
1.一种视频帧的发送方法,其特征在于,所述方法包括:
获取系统当前时间与第i个待发送报文的发送时间;其中i≥1,所述第i个待发送报文为视频帧拆分后的数据包;
判断所述系统当前时间是否大于或等于所述第i个待发送报文的发送时间;
若是,则发送所述第i个待发送报文;
若不是,则确定所述第i个待发送报文对应的延迟发送时间,在等待延迟发送时间后,执行权利要求1所述的方法。
2.根据权利要求1所述的视频帧的发送方法,其特征在于,当i=1时,所述获取第i个待发送报文的发送时间包括:
通过第一公式计算得到所述第i个待发送报文的发送时间,所述第一公式包括:
next_send_timei=now_time+γ
其中,next_send_timei为第i个待发送报文的发送时间;now_time为系统当前时间;γ为调整系数。
3.根据权利要求1所述的视频帧的发送方法,其特征在于,所述发送所述第i个待发送报文之前,所述方法还包括:
计算所述第i个待发送报文发送前的流量结余字节数;
当i=1时,通过第二公式计算得到所述第i个待发送报文发送前的流量结余字节数,所述第二公式包括:
current_sendi1=max_send*β
其中,current_sendi1为第i个待发送报文发送前的流量结余字节数;max_send为单次调度可以发送的最大字节数;β为调整系数;
当i≥2时,通过第三公式计算得到所述第i个待发送报文发送前的流量结余字节数,所述第三公式包括:
current_sendi1=min(max_send,current_sendi-1+(now_time-next_send_timei-1)*per_send)
其中,current_sendi1为第i个待发送报文发送前的流量结余字节数;max_send为单次调度可以发送的最大字节数;current_sendi-1为第i-1个待发送报文发送后的流量结余字节数;now_time为系统当前时间;next_send_timei-1为第i-1个待发送报文的发送时间;per_send为单位时间内按照当前带宽可以发送的字节数。
4.根据权利要求3所述的视频帧的发送方法,其特征在于,通过第四公式计算得到所述单位时间内按照当前带宽可以发送的字节数,所述第四公式包括:
per_send=BW/time_factor
其中,per_send为单位时间内按照当前带宽可以发送的字节数;BW为限定带宽,单位为B/s;time_factor为时间换算因子;
通过第五公式计算得到所述单次调度可以发送的最大字节数,所述第五公式包括:
max_send=min_sche_time*per_send*α
其中,max_send单次调度可以发送的最大字节数;min_sche_time指两次调度的最小调度时间间隔;per_send为单位时间内按照当前带宽可以发送的字节数;α为调整系数。
5.根据权利要求4所述的视频帧的发送方法,其特征在于,所述发送所述第i个待发送报文之后,所述方法还包括:
通过第六公式计算得到第i个待发送报文发送后的流量结余字节数,所述第六公式包括:
current_sendi2=current_sendi1-min(send_bytesi,current_sendi1)
其中,current_sendi2为第i个待发送报文发送后的流量结余字节数;current_sendi1为第i个待发送报文发送前的流量结余字节数;send_bytesi为第i个待发送报文的数据包大小。
6.根据权利要求5所述的视频帧的发送方法,其特征在于,当i≥2时,所述获取第i个待发送报文的发送时间包括:
通过第七公式计算得到所述第i个待发送报文的发送时间,所述第七公式包括:
next_send_timei=next_send_timei-1+(send_bytesi-1-min(send_bytesi-1,current_send(i-1)2))/per_send
其中,next_send_timei为第i个待发送报文的发送时间;next_send_timei-1为第i-1个待发送报文的发送时间,send_bytesi-1为第i-1个待发送报文的数据包大小;current_send(i-1)2为第i-1个待发送报文发送后的流量结余字节数;per_send为单位时间内按照当前带宽可以发送的字节数。
7.根据权利要求1所述的视频帧的发送方法,其特征在于,所述延迟发送时间通过以下公式进行计算:
delay_send_time=(send_diff_time/min_sche_time+1)*min_sche_time
其中,delay_send_time为延迟发送时间;send_diff_time为系统当前时间与第i个待发送报文发送时间的时间差值;min_sche_time为两次调度的最小调度时间间隔。
8.一种视频帧的发送装置,其特征在于,包括:获取模块、判断模块和发送模块;
所述获取模块,用于获取系统当前时间与第i个待发送报文的发送时间;其中i≥1,所述第i个待发送报文为视频帧拆分后的数据包;
所述判断模块,用于判断所述系统当前时间是否大于或等于所述第i个待发送报文的发送时间;
所述发送模块,用于当所述判断模块的判断结果为是时,发送所述第i个待发送报文;
所述判断模块,还用于当判断结果为不是时,确定所述第i个待发送报文对应的延迟发送时间,在等待延迟发送时间后,对所述第i个待发送报文进行判断。
9.一种视频帧的发送设备,其特征在于,所述视频帧的发送设备包括处理器和存储器,所述存储器中存储有至少一条计算机指令,所述指令由所述处理器加载并执行以实现权利要求1至权利要求7任一项所述的视频帧的发送方法中所执行的步骤。
10.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条计算机指令,所述指令由处理器加载并执行以实现权利要求1至权利要求7任一项所述的视频帧的发送方法中所执行的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010885512.6A CN112087398A (zh) | 2020-08-28 | 2020-08-28 | 一种视频帧的发送方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010885512.6A CN112087398A (zh) | 2020-08-28 | 2020-08-28 | 一种视频帧的发送方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112087398A true CN112087398A (zh) | 2020-12-15 |
Family
ID=73728899
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010885512.6A Pending CN112087398A (zh) | 2020-08-28 | 2020-08-28 | 一种视频帧的发送方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112087398A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115297364A (zh) * | 2022-07-27 | 2022-11-04 | 北京奇艺世纪科技有限公司 | 一种云游戏视频传输时延的确定方法、系统及电子设备 |
WO2023226879A1 (zh) * | 2022-05-25 | 2023-11-30 | 华为技术有限公司 | 通信方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102148743A (zh) * | 2010-02-05 | 2011-08-10 | 联芯科技有限公司 | 一种数据流量的控制方法、装置及移动终端 |
CN102368729A (zh) * | 2011-09-23 | 2012-03-07 | 北京东方网信科技股份有限公司 | 一种在非实时系统上精确网络限速的方法 |
CN104243332A (zh) * | 2013-06-20 | 2014-12-24 | 上海博达数据通信有限公司 | 基于dpi识别的分通道应用流量控制方法 |
CN104917690A (zh) * | 2015-04-15 | 2015-09-16 | 联动优势科技有限公司 | 一种控制报文发送的方法及装置 |
-
2020
- 2020-08-28 CN CN202010885512.6A patent/CN112087398A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102148743A (zh) * | 2010-02-05 | 2011-08-10 | 联芯科技有限公司 | 一种数据流量的控制方法、装置及移动终端 |
CN102368729A (zh) * | 2011-09-23 | 2012-03-07 | 北京东方网信科技股份有限公司 | 一种在非实时系统上精确网络限速的方法 |
CN104243332A (zh) * | 2013-06-20 | 2014-12-24 | 上海博达数据通信有限公司 | 基于dpi识别的分通道应用流量控制方法 |
CN104917690A (zh) * | 2015-04-15 | 2015-09-16 | 联动优势科技有限公司 | 一种控制报文发送的方法及装置 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023226879A1 (zh) * | 2022-05-25 | 2023-11-30 | 华为技术有限公司 | 通信方法及装置 |
CN115297364A (zh) * | 2022-07-27 | 2022-11-04 | 北京奇艺世纪科技有限公司 | 一种云游戏视频传输时延的确定方法、系统及电子设备 |
CN115297364B (zh) * | 2022-07-27 | 2024-01-23 | 北京奇艺世纪科技有限公司 | 一种云游戏视频传输时延的确定方法、系统及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102544991B1 (ko) | 사용자 장비 및 미디어 스트리밍 네트워크 보조 노드 | |
US6643496B1 (en) | System, method, and apparatus for adjusting packet transmission rates based on dynamic evaluation of network characteristics | |
JP5701400B2 (ja) | アダプティブストリーミングサービスを提供する方法 | |
CN112087398A (zh) | 一种视频帧的发送方法、装置、设备及存储介质 | |
WO2020253488A1 (zh) | 拥塞控制方法及装置、通信网络、计算机存储介质 | |
US9178929B2 (en) | Client-side class-of-service-based bandwidth management in over-the-top video delivery | |
CN108833281B (zh) | 一种报文转发方法及网络设备 | |
JP2001094625A (ja) | データ通信装置、データ通信方法及び記憶媒体 | |
WO2017215279A1 (zh) | 一种视频回放方法及装置 | |
CN109245959B (zh) | 统计活跃流数目的方法、网络设备和系统 | |
JP5807710B2 (ja) | コンテンツ配信システム、コンテンツ配信方法及びプログラム | |
CN111741249B (zh) | 一种网络拥塞检测方法及装置 | |
CN113038187B (zh) | 视频体验质量公平的实用网络带宽分配方法、设备及介质 | |
CN106789700B (zh) | 一种流量整形方法及网络设备 | |
US7453798B2 (en) | Active flow management with hysteresis | |
KR101795537B1 (ko) | 네트워크 환경 적응형 클라우드 스트리밍 서비스 제공시스템 및 그 방법 | |
CN114501066A (zh) | 视频流处理方法、系统、计算机设备和存储介质 | |
US10819582B2 (en) | Traffic optimization device and traffic optimization method | |
KR101837637B1 (ko) | 클라이언트 측 ack 조정 기반 적응 스트리밍 방법 및 장치 | |
KR102306485B1 (ko) | 데이터 부호화 방법, 장치, 단말기기 및 컴퓨터 판독 가능한 기억매체 | |
CN110620939A (zh) | 一种网络状态确定方法、装置、电子设备及存储介质 | |
CN116233002A (zh) | 一种数据包发送方法、接收方法、报文发送方法和产品 | |
WO2021037220A1 (zh) | 报文处理方法和计算机存储介质 | |
CN115002086B (zh) | 实时流媒体的传输方法及电子设备 | |
CN112311690B (zh) | 一种基于ai的拥塞控制方法、装置、设备和介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |