CN117896548A - 数据帧的传输方法、装置、电子设备和可读存储介质 - Google Patents
数据帧的传输方法、装置、电子设备和可读存储介质 Download PDFInfo
- Publication number
- CN117896548A CN117896548A CN202311673796.2A CN202311673796A CN117896548A CN 117896548 A CN117896548 A CN 117896548A CN 202311673796 A CN202311673796 A CN 202311673796A CN 117896548 A CN117896548 A CN 117896548A
- Authority
- CN
- China
- Prior art keywords
- data
- frame
- data frame
- queue
- key frame
- 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
- 230000005540 biological transmission Effects 0.000 title claims abstract description 124
- 238000000034 method Methods 0.000 title claims abstract description 52
- 238000001514 detection method Methods 0.000 claims abstract description 40
- 238000009825 accumulation Methods 0.000 claims abstract description 19
- 238000004590 computer program Methods 0.000 claims description 23
- 230000008569 process Effects 0.000 description 8
- 238000004891 communication Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 6
- 230000001960 triggered effect Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 238000009499 grossing Methods 0.000 description 4
- 238000012360 testing method Methods 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Abstract
本申请适用于视频技术领域,提供了一种数据帧的传输方法、装置、电子设备和可读存储介质。其中,上述数据帧的传输方法包括:在向接收端发送数据帧之前,对发送队列进行堆积检测;若所述发送队列发生堆积,且正在发送的数据帧为关键帧,则在所述发送队列内去除至少部分待确认是否进行重传的数据帧,并向所述接收端发送所述正在发送的数据帧;若所述发送队列发生堆积,且所述正在发送的数据帧不是所述关键帧,则生成所述关键帧,生成的所述关键帧用于作为下一次发送的数据帧,以使得所述发送队列内的至少部分待确认是否进行重传的数据帧被去除。本申请的实施例可以有效地降低端到端时延。
Description
技术领域
本申请属于视频技术领域,尤其涉及一种数据帧的传输方法、装置、电子设备和可读存储介质。
背景技术
音视频数据常以队列的形式进行传输控制,在云游戏场景等对低延时有极高的要求的场景中,对音视频数据的发送队列进行长度控制是非常重要的。发送队列在多种情况下都可能产生堆积。例如在网络突然发生拥塞时,队列里的数据帧将长时间无法送达,同时,拥塞也会引起拥塞控制算法控制降低发送速度,从而进一步导致发送队列的堆积。又例如,在视频编码码率大于发送速率时,也会引发发送队列的堆积。发送队列一旦产生堆积,在相同的发送带宽下,音视频数据的发送耗时就会增加,导致数据帧达到接收端的时间发生抖动,从而引起接收端缓冲区加大,增大端到端时延。
目前对音视频数据进行传输的数据,如网页实时通信(Web Real-TimeCommunications,WebRTC)技术等,多是接收端在收到关键帧时,如果前面还有数据帧没有被完全接收,将这些数据帧进行丢弃,以会减小发送队列的长度。这种方式需要等待接收端接收到关键帧后做相应的数据丢弃处理,时效性较差,不能够有效地降低端到端时延。
发明内容
本申请实施例提供一种数据帧的传输方法、装置、电子设备和可读存储介质,可以解决相关技术不能够有效地降低端到端时延的问题。
本申请实施例第一方面提供一种数据帧的传输方法,包括:在向接收端发送数据帧之前,对发送队列进行堆积检测;若所述发送队列发生堆积,且正在发送的数据帧为关键帧,则在所述发送队列内去除至少部分待确认是否进行重传的数据帧,并向所述接收端发送所述正在发送的数据帧;若所述发送队列发生堆积,且所述正在发送的数据帧不是所述关键帧,则生成所述关键帧,生成的所述关键帧用于作为下一次发送的数据帧,以使得所述发送队列内的至少部分待确认是否进行重传的数据帧被去除。
在第一方面的一些实施方式中,在所述对发送队列进行堆积检测之前,所述数据帧的传输方法还包括:检测所述正在发送的数据帧是否为所述关键帧;或者,在检测到所述发送队列发生堆积之后,所述数据帧的传输方法还包括:检测所述正在发送的数据帧是否为所述关键帧。
在第一方面的一些实施方式中,所述对发送队列进行堆积检测,包括:根据数据量阈值和所述发送队列的队列总数据量,对所述发送队列进行堆积检测;其中,所述数据量阈值为根据所述关键帧的数据量得到的。
在第一方面的一些实施方式中,所述数据量阈值为根据所述关键帧的当前预期数据量得到的,所述关键帧的当前预期数据量为对所述关键帧的实际数据量和所述关键帧的历史预期数据量进行加权相加得到的。
在第一方面的一些实施方式中,所述正在发送的数据帧为所述关键帧时,所述数据量阈值为所述关键帧的当前预期数据量和第一系数的乘积,其中,所述第一系数大于1;所述正在发送的数据帧不是所述关键帧时,所述数据量阈值为所述关键帧的当前预期数据量和第二系数的乘积,其中,所述第二系数大于或等于所述第一系数。
在第一方面的一些实施方式中,所述在所述发送队列内去除至少部分待确认是否进行重传的数据帧,包括:对于所述发送队列内待确认是否进行重传的数据帧,去除首个重传的数据帧以外的其他数据帧。
在第一方面的一些实施方式中,每个所述待确认是否进行重传的数据帧分别对应一个帧流,所述在所述发送队列内去除至少部分待确认是否进行重传的数据帧,包括:对于所述发送队列内每个待去除的数据帧,释放对应的所述帧流。
本申请实施例第二方面提供的一种数据帧的传输装置,包括:堆积检测单元,用于在向接收端发送数据帧之前,对发送队列进行堆积检测;关键帧传输单元,用于若所述发送队列发生堆积,且正在发送的数据帧为关键帧,则在所述发送队列内去除至少部分待确认是否进行重传的数据帧,并向所述接收端发送所述正在发送的数据帧;关键帧生成单元,用于若所述发送队列发生堆积,且所述正在发送的数据帧不是所述关键帧,则生成所述关键帧,生成的所述关键帧用于作为下一次发送的数据帧,以使得所述发送队列中的至少部分待确认是否进行重传的数据帧被去除。
本申请实施例第三方面提供一种电子设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述数据帧的传输方法的步骤。
本申请实施例第四方面提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述数据帧的传输方法的步骤。
本申请实施例第五方面提供了一种计算机程序产品,当计算机程序产品在电子设备上运行时,使得电子设备执行上述第一方面中所述的数据帧的传输方法。
在本申请的实施方式中,通过在向接收端发送数据帧之前,检测发送队列是否发生堆积,若发送队列发生堆积且正在发送的数据帧为关键帧,则在所述发送队列内去除至少部分待确认是否进行重传的数据帧,并向接收端发送正在发送的关键帧,进而能够主动地在发送队列堆积时触发跳帧逻辑,及时地减小发送队列的长度,而若发送队列发生堆积且正在发送的数据帧不是关键帧,则生成关键帧,生成的关键帧可作为下一次发送的数据帧,使得发送队列内的至少部分待确认是否进行重传的数据帧被去除,进而同样能够主动地在发送队列堆积时触发跳帧逻辑,及时地减小发送队列的长度,更加有效地降低了端到端时延。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种数据帧的传输方法的实现流程示意图;
图2是本申请实施例提供的数据帧的传输方法的具体实现流程示意图;
图3是对本申请实施例提供的数据帧的传输方法进行测试的测试结果示意图;
图4是本申请实施例提供的一种数据帧的传输装置的结构示意图;
图5是本申请实施例提供的电子设备的结构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护。
目前对音视频数据进行传输的数据,如网页实时通信技术等,多是接收端在收到关键帧时,如果前面还有数据帧没有被完全接收,将这些数据帧进行丢弃,以会减小发送队列的长度。
经申请人研究发现,这种方式需要等待接收端接收到关键帧后做相应的数据丢弃处理。而关键帧通常是根据编码算法周期性产生的,或者,是在接收端因长期没有提交数据帧等原因产生图像丢失指示(Picture Loss Indication,PLI)请求触发的,这些方式关键帧的产生都不够及时。即使产生了关键帧,如果前面发生了大量丢包,队列中存在很多需要重传的数据帧,发送端还是会先重传标记为丢包的数据帧,等到重传数据完成后,再发送关键帧。因此,接收端接收到关键帧后做相应的数据丢弃处理的时效性较差,不能够有效地降低端到端时延。
需要说明的是,本申请实施例是建立在上述发现和分析基础上完成的,上述发现和分析并非现有技术,而应当视为本申请对现有技术的贡献的一部分。
有鉴于上述发现和分析,本申请提出了一种数据帧的传输方法,能够主动地实现跳帧逻辑,及时地降低发送队列的长度,更加有效地降低了端到端时延。
为了说明本申请的技术方案,下面通过具体实施例来进行说明。
图1示出了本申请实施例提供的一种数据帧的传输方法的实现流程示意图,该方法可以应用于电子设备上,可适用于需降低端到端时延的情形。其中,上述电子设备可以为计算机(如服务器)、虚拟现实(Virtual Reality,VR)设备、手机等智能设备,该设备可以作为数据帧的发送端,向接收端传输数据帧。接收端用于接收数据帧,一些具体示例中,接收端可以指客户端。应理解,接收端同样可以是计算机、VR设备、手机等智能设备,对此本申请不做限制。
具体的,上述数据帧的传输方法可以包括以下步骤S101至步骤S103。
步骤S101,在向接收端发送数据帧之前,对发送队列进行堆积检测。
在本申请的实施方式中,发送端和接收端之间传输的数据可以包括但不限于视频流数据、音频流数据。相应的,数据帧即为发送端和接收端之间传输的单帧数据,可以包括但不限于视频帧、音频帧。发送队列是数据帧传输过程中用于保存数据帧的容器。
在本申请的实施方式中,为了降低端到端时延,电子设备可在向接收端发送数据帧之前,主动检测发送队列是否发生堆积。发送队列发生堆积可以指需要发送的数据帧发生数据堆积。具体的,发送队列发生堆积可以指在发送数据帧的过程中由于需要发送的数据帧堆积,导致接收端未能收到大部分数据帧的情况,也可以指在预设时长内,需要发送的数据帧的数据量大于一定阈值,传输带宽无法满足数据帧传输需求的情况,还可以指需要发送的数据帧发生数据堆积的其他情况。在本申请的实施方式中,发送队列发生堆积可以特指在发送数据帧的过程中,由于需要发送的数据帧堆积,导致接收端未能收到大部分的数据帧的情况,在这种情况下,电子设备内将存在大量待确认是否进行重传的数据帧。
具体的,电子设备可以通过监测发送队列的数据量、发送端和接收端之间的丢包率,或者采用其他拥塞检测方式,检测发送队列是否发生堆积,对此本申请不做限制。
步骤S102,若发送队列发生堆积,且正在发送的数据帧为关键帧,则在发送队列内去除至少部分待确认是否进行重传的数据帧,并向接收端发送正在发送的数据帧。
具体的,在本申请的实施方式中,数据帧可以被划分为关键帧和非关键帧两种。其中,非关键帧为需要根据其他数据帧进行解码渲染的数据帧,也即,接收端在接收到非关键帧之后,需要根据之前接收到的其他数据帧对该非关键帧进行解码渲染。关键帧则为不需要根据其他数据帧进行解码渲染的数据帧,也即,接收端在接收到关键帧之后,可以直接对关键帧进行解码渲染。对于接收端而言,在接收到关键帧之后,接收端可基于关键帧进行画面显示。在生成数据帧的时候,电子设备可以对应标记数据帧是否属于关键帧,若检测到正在发送的数据帧被标记为属于关键帧,则可以确认正在发送的数据帧为关键帧。
在本申请的实施方式中,若检测到发送队列发生堆积,且正在发送的数据帧为关键帧,则电子设备可以主动去除发送队列内至少部分待确认是否进行重传的数据帧,以减少发送队列的长度,并向接收端发送正在发送的数据帧,以使接收端可以根据该关键帧进行画面或音频的恢复。
具体的,待确认是否进行重传的数据帧是指过往向接收端发送过,并且待确认是否需要重传的数据帧。由于数据帧是否需要重传需基于接收端的反馈信息进行确认,发送队列中可暂存已经向接收端传输过的数据帧,待到获得反馈信息时确认是否需要重传。可以理解的是,如果接收端未接收到某一数据帧,则电子设备基于反馈信息可以将该数据帧确认为需要进行重传的数据帧,并进行重传;如果接收端接收到某一数据帧,则电子设备可以将该数据帧确认为不需要进行重传的数据帧,并从发送队列内去除。在本申请的实施方式中,通过在检测到发送队列发生堆积,且正在发送的数据帧为关键帧时,主动去除发送队列内至少部分待确认是否进行重传的数据帧,可以减少队列长度,避免等待重传的数据影响其他首次发送的数据帧的传输过程。
以云游戏场景为例,云游戏服务器(发送端)可以在发送队列发生堆积,且正在发送的数据帧为关键帧的情况下,去除发送队列内的至少部分待确认是否进行重传的数据帧,并向客户端(接收端)发送关键帧,客户端在接收到关键帧之后,可以直接进行解码渲染,恢复并显示关键帧对应的视频画面,从而在网络质量较差时,避免客户端显示黑屏画面。
步骤S103,若发送队列发生堆积,且正在发送的数据帧不是关键帧,则生成关键帧。
同样的,在生成数据帧的时候,可以对应标记数据帧是否属于关键帧,若电子设备检测到正在发送的数据帧被标记为不属于关键帧,则可以确认正在发送的数据帧不是关键帧。
在本申请的实施方式中,若发送队列发生堆积,且正在发送的数据帧不是关键帧,则电子设备可以主动生成关键帧。具体的,生成关键帧可以是将下一帧待发送的数据帧作为关键帧,也可以是按照特定的选择方式选择一帧数据帧作为关键帧,对此本申请不做限制。生成的关键帧可用于作为下一次发送的数据帧,以使得发送队列内的至少部分待确认是否进行重传的数据帧被去除。
具体而言,在下一次发送数据帧的过程中可以执行步骤S101,如果发送队列发生堆积,由于正在发送的数据帧(也即步骤S103生成的数据帧)为关键帧,电子设备将执行步骤S102,在发送队列内去除至少部分待确认是否进行重传的数据帧,并向接收端发送正在发送的数据帧。通过主动产生关键帧,可以避免因等待关键帧周期性产生或等待接收端发送PLI触发生成关键帧而造成发送队列长时间堆积的问题,有助于降低端到端延时。
在本申请的实施方式中,通过在向接收端发送数据帧之前,检测发送队列是否发生堆积,若发送队列发生堆积且正在发送的数据帧为关键帧,则在所述发送队列内去除至少部分待确认是否进行重传的数据帧,并向接收端发送正在发送的关键帧,进而能够主动地在发送队列堆积时触发跳帧逻辑,及时地减小发送队列的长度,而若发送队列发生堆积且正在发送的数据帧不是关键帧,则生成关键帧,生成的关键帧可作为下一次发送的数据帧,使得发送队列内的至少部分待确认是否进行重传的数据帧被去除,进而同样能够主动地在发送队列堆积时触发跳帧逻辑,及时地减小发送队列的长度,更加有效地降低了端到端时延。
下面以具体实施例对图1所示的数据帧的传输方法进行说明。
具体的,电子设备可以在对发送队列进行堆积检测之前,检测正在发送的数据帧是否为关键帧,也可以在检测到发送队列发生堆积之后,检测正在发送的数据帧是否为关键帧。进而,在发送队列发生堆积的情况下,基于正在发送的数据帧是否为关键帧的检测结果,可以相应执行步骤S102或步骤S103。优选的,电子设备可以在对发送队列进行堆积检测之前,检测正在发送的数据帧是否为关键帧,进而在堆积检测时,可以参考正在发送的数据帧是否为关键帧的检测结果。
为了更好地评估发送队列是否发生堆积,在本申请的一些实施方式中,对发送队列进行堆积检测,可以包括:根据数据量阈值和发送队列的队列总数据量,对发送队列进行堆积检测。
具体的,发送队列的队列总数据量是指发送队列内所有数据帧的数据量总和。数据量即数据大小,可以以字节(Byte)、千字节(Kilobyte,KB)等常用的数据单位度量。示例性的,在产生数据帧时,电子设备可以记录每个数据帧分别对应的数据量,并在堆积检测时,则可以将发送队列内所有数据帧的数据量相加得到队列总数据量。
数据量阈值为根据关键帧的数据量得到的,数据量阈值可用于评估发送队列是否发生堆积。具体的,在队列总数据量大于数据量阈值时,电子设备可以确认发送队列发生堆积;在队列总数据量小于或等于数据量阈值时,电子设备可以确认发送队列未发生堆积。
由于每个数据帧的数据量大小不是固定的,相较于采用帧数进行堆积检测的方式,采用数据量进行堆积检测的方式可以避免在帧数多但发送队列长度小的情况下错误地执行跳帧逻辑。并且,在帧数多但发送队列长度小的情况下,如果产生关键帧,关键帧的大小可能超过发送队列的长度,此时将产生负收益,因此,采用基于关键帧的数据量确定数据量阈值并进行堆积检测的方式可以有效避免这种负收益的发生。
在本申请的一些实施方式中,上述数据量阈值可以为根据关键帧的当前预期数据量得到的。其中,关键帧的当前预期数据量为对关键帧的实际数据量和关键帧的历史预期数据量进行加权相加得到的。
具体的,在本申请的一些实施方式中,电子设备可以获取关键帧的历史预期数据量,以及关键帧的实际数据量,然后根据关键帧的历史预期数据量和关键帧的实际数据量,确定关键帧的当前预期数据量,并根据关键帧的当前预期数据量,确定数据量阈值。
其中,预期数据量表示关键帧的预估数据大小。预期数据量可以在发送数据帧的过程中持续更新维护。历史预期数据量是指前一次确定出的预期数据量,当然,如果本次为首次进行发送队列的堆积检测,则可以将预设的默认值作为历史预期数据量。
具体的,电子设备可以根据以下公式计算当前预期数据量EstFrameSizenew:
EstFrameSizenew=coeff*EstFrameSizeold+(1-coeff)*NewFrameSize。
其中,EstFrameSizeold为关键帧的历史预期数据量;NewFrameSize为本次将要发送的关键帧的实际数据量;coeff为历史平滑系数,取值大于0且小于1。历史平滑系数反映了历史数据的采信程度,可以根据实际情况进行调整,例如将历史平滑系数设置为0.1时,表示更倾向于采信本次将要发送的关键帧的实际数据量大小。
示例性的,假设本次发送的关键帧的实际数据量NewFrameSize=200KB,关键帧的历史预期数据量EstFrameSizeold=150KB,历史平滑系数
coeff=0.2,则当前预期数据量EstFrameSizenew=0.2*150KB+(1-0.2)*200KB=190KB。
得到关键帧的当前预期数据量之后,在本申请的一些实施方式中,电子设备可以将关键帧的当前预期数据量与特定的系数相乘,并将乘积作为数据量阈值。
具体的,一些实施方式中,正在发送的数据帧为关键帧时,数据量阈值为关键帧的当前预期数据量和第一系数的乘积。其中,第一系数大于1。
也就是说,可以通过按照公式coeff*EstFrameSize*SkipFrameCoeff计算数据量阈值,其中,EstFrameSize即关键帧的当前预期数据量;skiipFrameCoeff表示第一系数,大于1,具体取值可以根据实际情况进行调整,例如可以设置为2。相应的,若发送队列的队列总数据量
QueseSize>EstFrameSize*skiipFrameCoeff,则可以确认发送队列发生堆积。
如此,在执行跳帧逻辑时发送关键帧的耗时,可以小于发送当前队列内所有数据帧的耗时,从而带来延迟上的收益。
相应的,正在发送的数据帧不是关键帧时,数据量阈值为关键帧的当前预期数据量和第二系数的乘积。其中,第二系数大于或等于第一系数。
也就是说,可以通过按照公式EstFrameSize*GenerateKeyFrameCoeff计算数据量阈值,其中,GenerateKeyFrameCoeff表示第二系数,大于或等于第一系数,具体取值可以根据实际情况进行调整,例如可以设置为3。相应的,若发送队列的队列总数据量
QueueSize>EstFrameSize*GenerateKeyFrameCoeff,则可以确认发送队列发生堆积。
可以理解的是,第二系数大于第一系数,可以为生成关键帧留出更加充裕的时间。
示例性的,以前述当前预期数据量EstFrameFixenew=190KB为例继续进行说明,假设第一系数为2,第二系数为3,发送队列的队列总数据量QueueSize=500KB。在正在发送的数据帧为关键帧时,数据量阈值EstFrameSize*SkipFrameCoeff=190KB*2=380KB,由于发送队列的队列总数据量500KB大于数据量阈值380KB,可确认发送队列发生堆积。在正在发送的数据帧不是关键帧时,数据量阈值
EEstFrameSize*GenerateKeyFrameCoeff=190KB*3=570KB,由于发送队列的队列总数据量500KB小于数据量阈值570KB,可确认发送队列未发生堆积。
结合前文计算当前预期数据量的过程可知,在本申请的实施方式中,由于当前预期数据量是基于历史数据(即历史预期数据量)计算得到的平滑值,相较于直接根据关键帧的实际数据量进行堆积检测的方式,在本次发送的关键帧的实际数据量较小的情况下,不易出现误检问题,堆积检测更加稳定。
在本申请的实施方式中,在发送队列未发生堆积时,电子设备可以正常地将正在发送的数据帧发送至接收端,并在发生下一帧数据帧之前继续进行发送队列的堆积检测。在发送队列发生堆积时,则可以按照前文描述的方式,在正在发送的数据帧为关键帧的情况下去除发送队列内的至少部分待确认是否进行重传的数据帧,并向接收端发送关键帧;而在正在发送的数据帧不是关键帧的情况下,则可生成关键帧,以根据所生成的关键帧的实际数据量重新确定数据量阈值,使得在发送队列的队列总数据量大于重新确定出的数据量阈值时,去除发送队列内的至少部分待确认是否进行重传的数据帧。可以理解的是,重新确定数据量阈值的过程可以参考前文的描述,对此本申请不做赘述。
需要说明的是,在去除待确认是否进行重传的数据帧时,电子设备可以选择去除发送队列内的全部待确认是否进行重传的数据帧,也可以去除发送队列内的部分待确认是否进行重传的数据帧。
具体的,在本申请一些实施方式中,在发送队列内去除至少部分待确认是否进行重传的数据帧,可以包括:对于发送队列内待确认是否进行重传的数据帧,去除首个重传的数据帧以外的其他数据帧。
也就是说,执行跳帧逻辑时,可以保留发送队列里的第一个待确认是否进行重传的数据帧对应的数据包,将其它待确认是否进行重传的数据帧对应的数据包全部去除,并将关键帧插入发送队列进行发送。如此,可以去除大量数据包,快速减小发送队列地长度,快速地降低端到端延时。并且,由于关键帧的数据量通常大于单个待确认是否进行重传的数据帧的数据量,保留第一个待确认是否进行重传的数据帧,可以使该数据帧比关键帧更快送达接收端。
需要说明的是,本申请提供的数据帧的传输方法可以用于WebRTC、基于快速用户数据报协议网络连接(Quick User Datagram Protocol Internet Connections,QuickUDP Internet Connections,QUIC)协议的实时通讯(Real-time Communications,RTC)或者其他相关的实时通讯场景。
在本申请的一些实施方式中,每个待确认是否进行重传的数据帧可以分别对应一个帧流。此时,在发送队列内去除至少部分待确认是否进行重传的数据帧可以包括:对于每个待去除的非关键帧,电子设备可以释放对应的帧流。
具体的,在基于QUIC协议的RTC的应用场景中,帧流可以指一条QUIC Stream流。在数据传输过程中,对于同一帧流内的数据帧需严格按顺序发送,释放时也会同步释放。将每一个待确认是否进行重传的数据帧分别对应使用一个帧流进行传输,去除时,只需要释放对应的帧流即可完成跳帧。
还需要说明的是,在本申请的实施方式中,在去除待确认是否进行重传的数据帧之后,被去除的数据帧将不再发送或者重传,以避免重复重传数据帧对关键帧的传输造成影响。
为了便于理解,图2示出了本申请提供的数据帧的传输过程。如图2所示,在发送数据帧时,可检测正在发送的数据帧是否为关键帧,如果发送的是关键帧,此时检查发送队列的队列总数据量,并根据关键帧的当前预期数据量判断发送队列是否发生堆积,若发生堆积则触发跳帧逻辑。如果正在发送的数据帧不是关键帧,此时检查发送队列的队列总数据量,并根据关键帧的当前预期数据量判断发送队列是否发生堆积,若发生堆积则生成关键帧,以在下一次发送数据帧时触发跳帧逻辑。若发送队列未发生堆积则可以正常将正在发送的数据帧发送至接收端。
基于本申请所提供的方法进行测试,测试结果如图3所示。图3中,纵坐标表示发送队列内的数据(缓存)量,横坐标表示时间。可以看到,在发送队列发生堆积后,堆积的数据帧可以很快地得到去除,因此,能够达到快速减小发送队列长度、降低发送延时的效果,进而达到降低端到端延时的效果。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为根据本申请,某些步骤可以采用其它顺序进行。
如图4所示为本申请实施例提供的一种数据帧的传输装置400的结构示意图,所述数据帧的传输装置400配置于电子设备上。
具体的,所述数据帧的传输装置400可以包括:
堆积检测单元401,用于在向接收端发送数据帧之前,对发送队列进行堆积检测;
关键帧传输单元402,用于若所述发送队列发生堆积,且正在发送的数据帧为关键帧,则在所述发送队列内去除至少部分待确认是否进行重传的数据帧,并向所述接收端发送所述正在发送的数据帧;
关键帧生成单元403,用于若所述发送队列发生堆积,且所述正在发送的数据帧不是所述关键帧,则生成所述关键帧,生成的所述关键帧用于作为下一次发送的数据帧,以使得所述发送队列中的至少部分待确认是否进行重传的数据帧被去除。
在本申请的一些实施方式中,数据帧的传输装置400还可以包括关键帧检测单元,用于在所述对发送队列进行堆积检测之前,检测所述正在发送的数据帧是否为所述关键帧,或者,在检测到所述发送队列发生堆积之后,检测所述正在发送的数据帧是否为所述关键帧。
在本申请的一些实施方式中,上述堆积检测单元401可以具体用于:根据数据量阈值和所述发送队列的队列总数据量,对所述发送队列进行堆积检测;其中,所述数据量阈值为根据所述关键帧的数据量得到的。
在本申请的一些实施方式中,上述数据量阈值为根据所述关键帧的当前预期数据量得到的,所述关键帧的当前预期数据量为对所述关键帧的实际数据量和所述关键帧的历史预期数据量进行加权相加得到的。
在本申请的一些实施方式中,上述正在发送的数据帧为所述关键帧时,所述数据量阈值为所述关键帧的当前预期数据量和第一系数的乘积,其中,所述第一系数大于1;上述正在发送的数据帧不是所述关键帧时,所述数据量阈值为所述关键帧的当前预期数据量和第二系数的乘积,其中,所述第二系数大于或等于所述第一系数。
在本申请的一些实施方式中,上述关键帧传输单元402可以具体用于:对于所述发送队列内待确认是否进行重传的数据帧,去除首个重传的数据帧以外的其他数据帧。
在本申请的一些实施方式中,每个所述待确认是否进行重传的数据帧分别对应一个帧流,上述关键帧传输单元402可以具体用于:对于所述发送队列内每个待去除的数据帧,释放对应的所述帧流。
需要说明的是,为描述的方便和简洁,上述数据帧的传输装置400的具体工作过程,可以参考图1至图3所述方法的对应过程,在此不再赘述。
如图5所示,为本申请实施例提供的一种电子设备的示意图。具体的,电子设备5可以包括:处理器50、存储器51以及存储在所述存储器51中并可在所述处理器50上运行的计算机程序52,例如数据帧的传输程序。所述处理器50执行所述计算机程序52时实现上述各个数据帧的传输方法实施例中的步骤,例如图1所示的步骤S101至S103。或者,所述处理器50执行所述计算机程序52时实现上述各装置实施例中各模块/单元的功能,例如图4所示的堆积检测单元401、关键帧传输单元402以及关键帧生成单元403的功能。
所述计算机程序可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器51中,并由所述处理器50执行,以完成本申请。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序在所述电子设备中的执行过程。
例如,所述计算机程序可以被分割成:堆积检测单元、关键帧传输单元以及关键帧生成单元。各单元具体功能如下:堆积检测单元,用于在向接收端发送数据帧之前,对发送队列进行堆积检测;关键帧传输单元,用于若所述发送队列发生堆积,且正在发送的数据帧为关键帧,则在所述发送队列内去除至少部分待确认是否进行重传的数据帧,并向所述接收端发送所述正在发送的数据帧;关键帧生成单元,用于若所述发送队列发生堆积,且所述正在发送的数据帧不是所述关键帧,则生成所述关键帧,生成的所述关键帧用于作为下一次发送的数据帧,以使得所述发送队列中的至少部分待确认是否进行重传的数据帧被去除。
所述电子设备可包括,但不仅限于,处理器50、存储器51。本领域技术人员可以理解,图5仅仅是电子设备的示例,并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述电子设备还可以包括输入输出设备、网络接入设备、总线等。
所称处理器50可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器51可以是所述电子设备的内部存储单元,例如电子设备的硬盘或内存。所述存储器51也可以是所述电子设备的外部存储设备,例如所述电子设备上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器51还可以既包括所述电子设备的内部存储单元也包括外部存储设备。所述存储器51用于存储所述计算机程序以及所述电子设备所需的其他程序和数据。所述存储器51还可以用于暂时地存储已经输出或者将要输出的数据。
需要说明的是,为描述的方便和简洁,上述电子设备的结构还可以参考方法实施例中对结构的具体描述,在此不再赘述。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对各个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的实施例中,应该理解到,所揭露的装置/电子设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/电子设备实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。
Claims (10)
1.一种数据帧的传输方法,其特征在于,包括:
在向接收端发送数据帧之前,对发送队列进行堆积检测;
若所述发送队列发生堆积,且正在发送的数据帧为关键帧,则在所述发送队列内去除至少部分待确认是否进行重传的数据帧,并向所述接收端发送所述正在发送的数据帧;
若所述发送队列发生堆积,且所述正在发送的数据帧不是所述关键帧,则生成所述关键帧,生成的所述关键帧用于作为下一次发送的数据帧,以使得所述发送队列内的至少部分待确认是否进行重传的数据帧被去除。
2.如权利要求1所述的数据帧的传输方法,其特征在于,在所述对发送队列进行堆积检测之前,所述数据帧的传输方法还包括:检测所述正在发送的数据帧是否为所述关键帧;
或者,在检测到所述发送队列发生堆积之后,所述数据帧的传输方法还包括:检测所述正在发送的数据帧是否为所述关键帧。
3.如权利要求1所述的数据帧的传输方法,其特征在于,所述对发送队列进行堆积检测,包括:
根据数据量阈值和所述发送队列的队列总数据量,对所述发送队列进行堆积检测;其中,所述数据量阈值为根据所述关键帧的数据量得到的。
4.如权利要求3所述的数据帧的传输方法,其特征在于,所述数据量阈值为根据所述关键帧的当前预期数据量得到的,所述关键帧的当前预期数据量为对所述关键帧的实际数据量和所述关键帧的历史预期数据量进行加权相加得到的。
5.如权利要求4所述的数据帧的传输方法,其特征在于,所述正在发送的数据帧为所述关键帧时,所述数据量阈值为所述关键帧的当前预期数据量和第一系数的乘积,其中,所述第一系数大于1;
所述正在发送的数据帧不是所述关键帧时,所述数据量阈值为所述关键帧的当前预期数据量和第二系数的乘积,其中,所述第二系数大于或等于所述第一系数。
6.如权利要求1至5任意一项所述的数据帧的传输方法,其特征在于,所述在所述发送队列内去除至少部分待确认是否进行重传的数据帧,包括:
在所述发送队列内的所述待确认是否进行重传的数据帧,去除首个重传的数据帧以外的其他数据帧。
7.如权利要求1至5任意一项所述的数据帧的传输方法,其特征在于,每个所述待确认是否进行重传的数据帧分别对应一个帧流,所述在所述发送队列内去除至少部分待确认是否进行重传的数据帧,包括:
对于所述发送队列内每个待去除的数据帧,释放对应的所述帧流。
8.一种数据帧的传输装置,其特征在于,包括:
堆积检测单元,用于在向接收端发送数据帧之前,对发送队列进行堆积检测;
关键帧传输单元,用于若所述发送队列发生堆积,且正在发送的数据帧为关键帧,则在所述发送队列内去除至少部分待确认是否进行重传的数据帧,并向所述接收端发送所述正在发送的数据帧;
关键帧生成单元,用于若所述发送队列发生堆积,且所述正在发送的数据帧不是所述关键帧,则生成所述关键帧,生成的所述关键帧用于作为下一次发送的数据帧,以使得所述发送队列中的至少部分待确认是否进行重传的数据帧被去除。
9.一种电子设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7任一项所述数据帧的传输方法的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述数据帧的传输方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311673796.2A CN117896548A (zh) | 2023-12-06 | 2023-12-06 | 数据帧的传输方法、装置、电子设备和可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311673796.2A CN117896548A (zh) | 2023-12-06 | 2023-12-06 | 数据帧的传输方法、装置、电子设备和可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117896548A true CN117896548A (zh) | 2024-04-16 |
Family
ID=90643034
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311673796.2A Pending CN117896548A (zh) | 2023-12-06 | 2023-12-06 | 数据帧的传输方法、装置、电子设备和可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117896548A (zh) |
-
2023
- 2023-12-06 CN CN202311673796.2A patent/CN117896548A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107342848B (zh) | 一种自适应码流传输方法、装置及设备 | |
CN109587510B (zh) | 一种直播方法、装置、设备和存储介质 | |
KR101046105B1 (ko) | 컴퓨터 프로그램 제조품, 리소스 요구 조정 방법 및 엔드 시스템 | |
CN101356814B (zh) | 通信处理设备和通信控制方法 | |
CN113037440B (zh) | 数据重传处理方法、装置、计算机设备和存储介质 | |
US20160323062A1 (en) | Packet recovery in interactive real-time media protocol | |
EP2396943B1 (en) | Controlling bandwidth share | |
CN110830460B (zh) | 一种连接建立方法、装置、电子设备及存储介质 | |
US10868839B2 (en) | Method and system for upload optimization | |
CN114024914A (zh) | 视频数据传输方法、装置及电子设备 | |
US11812114B2 (en) | Method and server for audio and/or video content delivery | |
CN104284135A (zh) | 视频传输方法及设备 | |
CN110233856B (zh) | 报文处理方法、装置及计算机可读存储介质 | |
EP3582503A1 (en) | Method and device for transmitting video | |
US7123618B2 (en) | Data transmitting apparatus and data receiving apparatus | |
CN117896548A (zh) | 数据帧的传输方法、装置、电子设备和可读存储介质 | |
CN112351049B (zh) | 数据传输方法、装置、设备及存储介质 | |
CN111953613B (zh) | 数据传输控制方法及装置 | |
CN111953612B (zh) | 数据传输控制方法及装置 | |
CN109922307B (zh) | 一种多媒体数据传输方法及摄像机 | |
JP4808227B2 (ja) | データ送信装置、コンピュータプログラム及びデータ送信方法 | |
EP4072133A1 (en) | Transmission device and transmission method | |
WO2023083143A1 (zh) | 入向码流码率获取方法、收流处理方法、电子设备、介质 | |
CN117527152A (zh) | 一种重传包发送控制方法、系统、设备及存储介质 | |
CN116980713A (zh) | 一种带宽检测方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination |