直播码率控制方法、装置、电子设备及存储介质与流程

未命名 10-21 阅读:73 评论:0


1.本公开涉及网络传输技术领域,尤其涉及直播码率控制方法、装置、电子设备及存储介质。


背景技术:

2.随着计算机技术的不断发展,网络直播越来越火爆,众多直播实时类业务因其原创新颖的内容吸引大量用户。由于直播业务中端到端之间的时延越来越低,因此需要快速响应网络变化的速度。
3.然而,在网络带宽突然出现波动的情况,如果不及时调整编码器的编码码率,就容易导致用户接收数据变慢的情况,进而导致出现视频卡顿的问题。


技术实现要素:

4.本公开提供了一种直播码率控制方法、装置、电子设备及存储介质。
5.根据本公开的一方面,提供了一种直播码率控制方法,所述方法包括:
6.获取终端应用层直播推流的码率信息;
7.获取所述终端的传输层获得的目标带宽估计值;
8.基于所述码率信息对所述目标带宽估计值进行调整,并基于调整后的目标带宽估计值,确定所述终端的目标码率。
9.根据本公开的第二方面,提供了一种直播码率传输装置,所述装置包括:
10.码率信息获取模块,用于获取终端应用层直播推流的码率信息;
11.带宽估计值获取模块,用于获取所述终端的传输层获得的目标带宽估计值;
12.调整模块,用于基于所述码率信息对所述目标带宽估计值进行调整;
13.目标码率确定模块,用于基于调整后的目标带宽估计值,确定所述终端的目标码率。
14.根据本公开的第三方面,提供了一种电子设备。该电子设备包括:存储器和处理器,所述存储器上存储有计算机程序,所述处理器执行所述程序时实现如以上所述的方法。
15.根据本公开的第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现本公开的上述方法。
16.本公开实施例提供的上述技术方案,通过获取终端应用层直播推流的码率信息,并获取终端的传输层获得的目标带宽估计值;基于码率信息对目标带宽估计值进行调整,得到调整后的目标带宽估计值;并基于调整后的目标带宽估计值,确定终端的目标码率。由于传输层的带宽估计器能够获取到应用层的特征信息,并且可以根据该特征信息调整带宽估计器估计的带宽估计值,进而可以加强应用层与传输层之间的联动性,能够更加主动、实时和准确地适配网络状态的变化,避免视频出现卡顿的问题。
附图说明
17.在下面结合附图对于示例性实施例的描述中,本公开的更多细节、特征和优点被公开,在附图中:
18.图1为本公开一示例性实施例提供的应用层和传输层之间交互的示意图;
19.图2为本公开一示例性实施例提供的直播码率控制方法的流程图;
20.图3为本公开另一示例性实施例提供的直播码率控制方法的流程图;
21.图4为本公开一示例性实施例提供的直播码率控制装置的功能模块示意性框图;
22.图5为本公开一示例性实施例提供的电子设备的结构框图;
23.图6为本公开一示例性实施例提供的计算机系统的结构框图。
具体实施方式
24.下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
25.应当理解,本公开的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本公开的范围在此方面不受限制。
26.本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。需要注意,本公开中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
27.需要注意,本公开中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
28.本公开实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性的目的,而并不是用于对这些消息或信息的范围进行限制。
29.可以理解的是,在使用本公开各实施例公开的技术方案之前,均应当依据相关法律法规通过恰当的方式对本公开所涉及个人信息的类型、使用范围、使用场景等告知用户并获得用户的授权。
30.例如,在响应于接收到用户的主动请求时,向用户发送提示信息,以明确地提示用户,其请求执行的操作将需要获取和使用到用户的个人信息。从而,使得用户可以根据提示信息来自主地选择是否向执行本公开技术方案的操作的电子设备、应用程序、服务器或存储介质等软件或硬件提供个人信息。
31.作为一种可选的但非限定性的实现方式,响应于接收到用户的主动请求,向用户发送提示信息的方式例如可以是弹窗的方式,弹窗中可以以文字的方式呈现提示信息。此外,弹窗中还可以承载供用户选择“同意”或者“不同意”向电子设备提供个人信息的选择控件。可以理解的是,上述通知和获取用户授权过程仅是示意性的,不对本公开的实现方式构
成限定,其它满足相关法律法规的方式也可应用于本公开的实现方式中。
32.为了能够更准确的响应网络状态的变化,更快、更准确的获取传输层估计到的带宽估计值,如图1所示,本公开实施例可以包括应用层和传输层之间的信息交互。
33.如图1所示,应用层可以包括应用层信息交互模块和码率控制模块,传输层包括传输层信息交互模块和带宽估计器。其中:
34.应用层信息交互模块,用于获取传输层的信息交互模块发送的特征信息,该特征信息包括传输层的带宽估计器估计到的带宽估计值;
35.码率控制模块,用于根据带宽估计值、码表和分辨率等信息计算出下一周期的目标码率,并将目标码率输入给编码器;
36.传输层信息交互模块,用于获取应用层的信息交互模块发送特征信息,该特征信息包括应用层qos(quality of service,服务质量)的需求及变化信息,具体包括分辨率、码表或帧率等;
37.带宽估计器,用于根据获取到的应用层qos需求及变化信息通过计算估计出下一周期的带宽估计值,一方面将带宽估计值发送给应用层码率控制模块,另一方面基于带宽估计值输出发送速率用于媒体数据的传输。实施例中带宽估计器可以执行包括不限于tcc(transport-wide congestion control,传输拥塞控制)、gcc(google congestion control,谷歌拥塞控制)及其变种算法等。
38.在传输层方面,如图1所示,传输层的信息交互模块可以按照预设周期获取应用层的信息交互模块发送的特征信息,该特征信息可以包括应用层的qos需求及qos的变化信息;通过将该特征信息作为传输层的带宽估计器的外部输入,通过带宽估计器进行估算后,输出下一周期的带宽估计值,同时将该带宽估计值作为pacer模块的输入,估算出udp(user datagram protocol,用户数据报协议)传输协议的实际发送速率pacing_rate,并将从待发送缓冲区读取到的数据并按照pacing_rate发送到网络中。
39.实施例中,可以根据应用层待传输视频的视频帧的分辨率,以及该视频帧对应分辨率码表的码率下限码率值,动态调整带宽估计器输出的带宽估计值,使得带宽估计值的最低值min_bwe不能小于该对应码表的码率下限码率值min_bitrate,即min_bwe》=min_bitrate;实际发送速率pacing_rate=带宽估计值bwe*pacing_gain,其中pacing_gain为参数,该参数可以根据实际情况进行设定,例如可以为经验值,该pacing_gain一般应大于等于1。
40.在应用层方面,如图1所示,应用层信息交互模块按照预设周期获取传输层信息交互模块发送的特征信息,该特征信息可以包括传输层的带宽估计器估算的带宽估计值。通过将该特征信息作为应用层码率控制模块的外部输入,通过由应用层码率控制模块计算后,可以输出下一周期的目标码率;原始视频帧数据经由前端处理模块对视频帧的渲染等处理后的输出和目标码率同时作为编码器的输入,通过编码器输出编码后数据,并将该编码后的数据发送到待发送缓冲区,经由传输层的pacer模块进行流量平滑,然后经过rtp(real-time transport protocol,实时传输协议)发送到网络中。
41.实施例中,应用层码率控制模块输出的目标码率应当位于对应分辨率的码表的上限码率值和下限码率值之间,即下限码率值min_bitrate《=目标码率《=上限码率值max_bitrate,当|上周期目标码率-本周期带宽估计值|/上周期目标码率》=2%时,将本周期带
宽估计值作为给本周期目标码率,否则,本周期的目标码率仍然维持上周期的目标码率,即将上周期的目标码率作为本周期的目标码率。
42.本公开实施例能够更准确的响应网络状态的变化,有较强的抗随机丢包能力,此外,应用层的带宽估计器能够获取到应用层码率控制策略的qos需求及变化信息,可以加强码率控制与带宽估计之间的联动性。并且由于应用层的码率控制可以获取到应用态传输层带宽估器估算的带宽估计值,相比在应用层基于tcp的被动估计,可以借助带宽估计器来估计带宽值,能够更加主动、实时和准确地适配网络状态的变化。
43.由于带宽估计是webrtc(web real-time communications,网页视频语音实时通讯技术)的最重要部分之一,其主要用于决策多少视频码率被允许发送到网络中而不至于引起网络拥塞。webrtc中带宽估计方法包含gcc、tcc两种算法。gcc的接收端控制器是一个基于延迟信号的算法。tcc主要对gcc算法进行了改进,主要改动点包括将接收端控制器放到了发送端,并且新的过载检测器从卡尔曼滤波估计变成了趋势线估计方法。
44.由于webrtc原本是为了不同浏览器之间进行实时通讯而设计的,其应用场景的要求是超低延迟,一般应250ms以内。为了达到该超低延迟要求,其的带宽估计算法设计原则是延迟敏感,表现为当算法检测到任何拥塞信号,例如延迟变大或丢包率增加时,就会立即大幅减少视频传输。
45.在webrtc应用于低延迟的直播推流场景时,上述延迟敏感的设计原则在现实中经常因为网络抖动出现误判而大幅下调带宽估计值,进而使得直播推流经常性出现画面模糊问题,即当大幅度减少视频传输时,对应的视频编码码率被大幅度降低,码率不足导致视频画质模糊失真。其主要是其带宽估计算法tcc的趋势线估计算法不准确。
46.因此,为了进一步提高带宽估计器估算出的带宽估计值的准确性,本公开实施例通过对估计的带宽估计值进行修正,以解决由于带宽估计算法误判导致的带宽直播的画面模糊问题。
47.本公开实施例通过引入带宽震荡波动模式,并通过带宽估计器估算的带宽估计值判断带宽估计器是否进入带宽震荡波动模式,如果带宽估计器进入带宽震荡波动模式,说明此时带宽估计器估算的带宽估计值会有连续大幅度下降等情况,因此需要对进入带宽震荡波动模式下对应的带宽估计值进行修正。
48.实施例中,该带宽估计器可以为tcc带宽估计器,即该带宽估计器可以是在tcc算法获得的带宽估计值的基础上,通过对带宽估计器估算的带宽估计值进行检查,判断该带宽估计器估算出目标时间段内的带宽估计值是否属于带宽震荡波动模式,如果所属,说明该目标时间段已进入带宽震荡波动模式,需要对该目标时间段内的带宽估计值进行修正,其中,该目标时间段可以为当前一段时间。
49.具体的,目标时间段内可以包括连续多个带宽估计值,可以通过下述方式判断带宽估计器的目标时间段是否进入带宽震荡波动模式:
50.1)目标时间段内的带宽估计值存在连续多次大幅下降的情况,且两次大幅下降之间的时间间隔小于预设时间间隔,该预设时间间隔例如可以为60s。
51.2)上述大幅下降是指第i-1次带宽估计值/第i次带宽估计值》=1-x%,i为大于1的正整数,例如x=20时,实施例中该大幅下降的下降幅度会超过20%;
52.3)单位时间内出现上述大幅下降的次数大于预设次数。
53.因此,实施例中基于上述带宽震荡波动模式,可以对震荡波动模式下的带宽估计值进行检测及修正。
54.在原tcc带宽估计器的起始阶段(探测阶段)后,启用震荡波动检测模块开关,当未检测出震荡波动模式即正常模式时,则不对当前tcc带宽估计器得到的带宽值target_bitrate做处理,直接传递给pacer模块发送至网络中;当检测到震荡波动模式时,进入一阶滤波模块,经过一阶滤波模块对当前带宽估计值的平滑处理后,得到新的带宽估计值new_target_bitrate再传递给pacedr模块发送至网络中。
55.本公开实施例中通过震荡波动检测模块对震荡波动模式的检测可以包括以下步骤:
56.1)在检测到目标时间段内第i个带宽估计值比第i-1个带宽估计值的下降幅度超过预设阈值时,开始计时。其中,第i个带宽估计值是目标时间段内第一次出现显著下降时的带宽估计值,例如在上次带宽估计值/本次带宽估计值》=1-x%时,开始计数,并记录此时的时间戳;
57.2)如果该时间戳之后预设时间段(例如y秒)内再次出现大幅下降(即下降的幅度与上个带宽估计相比超过预设阈值),则计数+1,并更新时间戳;
58.3)当得到的计数未超过一定数值z,且y秒内不再出现显著下降,计数归0,时间戳归-1,直至下一次带宽估计值再显著下降时重新开始统计;
59.4)当计数器超过z,即此时识别到了带宽震荡波动模式,此后的带宽估计值将进入一阶滤波模块进行平滑调整,即消除带宽震荡波动现象;
60.5)进入一阶滤波模块后,开始倒计时y秒,如果倒计时内再次出现显著下降,倒计时重置,时间戳更新,计数+1;
61.6)当倒计时结束后还未出现显著下降,退出一阶滤波模块,计数归0,时间戳归-1,直至下一次显著下降重新开始上述步骤。
62.其中,其中,一阶滤波模块通过下述方式对带宽估计值进行处理:
63.如果带宽估计器根据输出带宽估计值获得的目标码率target_bitrate《当前的目标码率current_target_bitrate,则最终新的目标码率new_target_bitrate=bwe_smoothing_coef*current_target_bitrate+(1-bwe_smoothing_coef)*target_bitrate,其中bwe_smoothing_coef是带宽平滑因子系数。
64.需要说明是,实施例中的带宽估计器,可以用于实时获取例如通过tcc算法估计到的带宽值target_bitrate;震荡波动检测模块,可以用于在线识别带宽估计器是否进入震荡波动模式;一阶滤波模块,可以用于平滑纠正识别到的震荡波动场景下原带宽估计器输出的错误带宽值,并对其进行修改得到修正后的带宽估计值new_target_bitrate;pacer(步速发送器),可以用于根据最终的带宽值匀速地执行网络传输,并在识别到震荡波动模式时,按new_target_bitrate执行,在没有识别到震荡波动模式时,按带宽估计器输出的的target_bitrate执行最终的带宽值。
65.基于上述实施例,在本公开提供的又一实施例中,如图2所示,还提供了一种直播码率控制方法,该方法包括以下步骤:
66.步骤s210,获取终端应用层直播推流的码率信息。
67.可以结合上述图1及对应的实施例中,应用层和传输层之间会通过各自对应的信
息交互模型进行信息交互。实施例中应用层直播推流的码率信息可以是上述实施例中包括qos需求信息及qos变化信息等特征信息,例如该qos需求信息可以是当前直播推流的最低码率,qos需求的变化信息可以是当前直播推流的最低码率的调整变化值。
68.步骤s220,获取终端的传输层获得的目标带宽估计值。
69.实施例中,传输层获得的带宽估计值可以是直接通过上述实施例中带宽估计器估算得到的数值,还可以通过上述实施例中带宽估计器估计出的带宽估计值通过带宽震荡波动模式检测并修正得到的目标带宽估计值。
70.步骤s230,基于码率信息对目标带宽估计值进行调整,并基于调整后的目标带宽估计值,确定终端的目标码率。
71.实施例中,传输层的带宽估计器能够获取到应用层的特征信息,并且可以根据该特征信息调整带宽估计器估计的目标带宽估计值,进而可以加强应用层与传输层之间的联动性。并且由于应用层在进行码率控制时可以获取到传输层带宽估器估算的目标带宽估计值,相比在应用层基于tcp的被动估计,可以借助带宽估计器来估计带宽值,能够更加主动、实时和准确地适配网络状态的变化。
72.基于上述实施例,在本公开提供的又一实施例中,上述步骤s230还可以包括以下步骤:
73.步骤s231,获取待传输视频帧对应的目标分辨率。
74.实施例中,待传输视频会对应有目标分辨率,例如1080p或720p等。
75.步骤s232,获取目标分辨率对应的目标码表。
76.其中,目标码表包括上限码率值和下限码率值,不同分辨率对应不同的码表。
77.步骤s233,在目标带宽估计值小于下限码率值的情况下,基于下限码率值调整目标带宽估计值。
78.实施例中,不同分辨率的视频帧会有对应不同的码表,且不同码表包含的码率下限码率值和上限码率值也不同。例如,分辨率为1080p对应的码表的上限码率值可以是3.8mbps,下限码率值可以是1.5mbps,分辨率为720p对应的码表的上限码率值和下限码率值会比1080p的更低。
79.这样通过获取不同分辨率对应的码表,在获得的目标带宽估计值较低的情况下,可以通过码表对应的下限值优化该目标带宽估计值,避免因目标带宽估计值低于码表对应的下限码率值造成的视频分辨率太低。
80.基于上述实施例,在本公开提供的又一实施例中,上述步骤s230还可以包括以下步骤:
81.步骤s234,获取第i-1周期对应的第一码率。
82.其中,目标带宽估计值通过在第i周期获得,i为大于1的正整数。
83.实施例中,可以获得多个周期分别对应的目标带宽估计值,每个周期可以包括特定的时长。
84.例如,可以将当前周期作为第i周期,在第i周期获得目标带宽估计值。第i-1周期为历史阶段中与当前周期相邻的历史周期,可以通过获得第i-1周期对应的第码率调整当前周期的目标带宽估计值。
85.步骤s235,基于第一码率和目标带宽估计值,获取码率变化值。
86.步骤s236,在码率变化值不大于变化阈值的情况下,将第一码率作为调整后的目标带宽估计值。
87.实施例中,可以通过|上周期目标码率-本周期带宽估计值|/上周期目标码率获得码率变化值,在该码率变化值大于或者等于变化阈值时,可以将本周期获得的带宽估计值作为本周期的目标码率。如果该码率变化值小于变化阈值,可以将上周期(即第i-1周期)的目标码率(即第一码率)调整本周期的带宽估计值,例如可以将第一码率作为调整后的目标带宽估计值,可以将该第一码率作为第i周期的目标码率。其中,例如该码率变化值可以为2%,码率变化值可以根据实际需要进行设定,实施例不限于此。
88.基于上述实施例,在本公开提供的又一实施例中,如图3所示,该方法可以包括以下步骤:
89.步骤s310,获取直播推流时估计的初始带宽估计值。
90.步骤s320,在基于带宽估计值确定进入带宽震荡波动模式的情况下,对初始带宽估计值进行滤波处理,得到目标带宽估计值。
91.其中,带宽震荡波动模式表征带宽估计值在单位时间段内的下降情况。
92.实施例中,该初始带宽估计值可以是上述带宽估计器估算得到数值,由于带宽震荡波动模式表征带宽估计值在单位时间段内的下降情况,如果带宽估计器估算的初始带宽估计值出现连续大幅下降的情况,会出现因目标码率过低导致视频画面模糊的问题。例如带宽估计器在基于tcc算法进行带宽估计的估算时,当tcc算法检测到任何拥塞信号,例如延迟变大或丢包率增加时,就会立即大幅减少视频传输,进而影响视频画面的质量。
93.因此,需要对直播推流过程中获得的带宽估计值进行判断,判断是否进入带宽震荡波动模式,在未进入带宽震荡波动模式的情况下,可以将初始带宽估计值作为目标带宽估计值。如果进入带宽震荡波动模式,说明带宽估计值出现了连续大幅下降的情况,需要对齐修正,避免影响传输的视频画面的质量。
94.实施例中,初始带宽估计值包括按照时间先后顺序获得的多个带宽估计值,可以通过下述方式判断是否进入带宽震荡波动模式:获取多个带宽估计值中相邻两个带宽估计值之间的下降值,并在下降值中存在大于下降阈值的目标下降值的情况下,获取目标下降值之间的间隔时长。在该间隔时长小于阈值时长的情况下,获取单位时间内出现目标下降值的次数。并在次数大于次数阈值的情况下,可以确定进入带宽震荡波动模式。
95.例如,在目标时间段内的带宽估计值存在连续多次大幅下降的情况,且两次大幅下降之间的时间间隔小于例如60s,并且该两次大幅下降的幅度例如超多20%,且该目标时间段内出现的安抚下降的次数大于一定的次数等,这样可以基于初始带宽估计值判断出是否进入带宽震荡波动模式,如果进入带宽震荡波动模式,就需要对初始带宽估计值进行修正。
96.实施例中,为了准确检测是否进入带宽震荡波动模式,还需要检测当前阶段是否为起始阶段。即基于初始带宽估计值,判断当前阶段是否处于起始阶段;起始阶段包括初始带宽估计值处于连续增大的状态,并在当前阶段未处于起始阶段的情况下,确定是否进入带宽震荡波动模式。由于带宽估计器在起始阶段估计到的估计值还处于不断调整阶段,因此可以在起始阶段之后再进行带宽震荡波动模式的检测,可以更加准确。
97.实施例中,在进入带宽震荡波动模式时,需要通过对初始带宽估计值进行滤波处
理,以便对其修正,具体的,可以获取直播推流的当前码率,并基于当前码率、初始带宽估计值和预先设定的带宽平滑因子系数,确定出目标带宽估计值。例如,可以参见上述实施例中的一阶滤波模块对带宽估计值的处理方式,这里不再赘述。
98.在采用对应各个功能划分各个功能模块的情况下,本公开实施例提供了一种直播码率控制装置,该直播码率控制装置可以为服务器或应用于服务器的芯片。图4为本公开一示例性实施例提供的直播码率控制装置的功能模块示意性框图。如图4所示,该直播码率控制装置包括:
99.码率信息获取模块10,用于获取终端应用层直播推流的码率信息;
100.带宽估计值获取模块20,用于获取所述终端的传输层获得的目标带宽估计值;
101.调整模块30,用于基于所述码率信息对所述目标带宽估计值进行调整,得到调整后的目标带宽估计值;
102.目标码率确定模块40,用于基于所述调整后的目标带宽估计值,确定所述终端的目标码率。
103.在本公开提供的又一实施例中,所述调整模块,具体用于:
104.获取待传输视频帧对应的目标分辨率;
105.获取所述目标分辨率对应的目标码表;其中,所述目标码表包括上限码率值和下限码率值,不同分辨率对应不同的码表;
106.在所述目标带宽估计值小于所述下限码率值的情况下,基于所述下限码率值调整所述带宽估计值。
107.在本公开提供的又一实施例中,所述调整模块,具体还用于:
108.获取第i-1周期对应的第一码率;其中,所述目标带宽估计值为在第i周期获得,i为大于1的正整数;
109.基于所述第一码率和所述目标带宽估计值,获取码率变化值;
110.在所述码率变化值不大于变化阈值的情况下,将所述第一码率作为调整后的目标带宽估计值。
111.在本公开提供的又一实施例中,该装置还包括:
112.初始带宽估计值获取模块,用于获取直播推流时估计的初始带宽估计值;
113.滤波模块,用于在基于所述带宽估计值确定进入带宽震荡波动模式的情况下,对所述初始带宽估计值进行滤波处理,得到目标带宽估计值;其中,所述带宽震荡波动模式表征带宽估计值在单位时间段内的下降情况。
114.在本公开提供的又一实施例中,所述初始带宽估计值包括按照时间先后顺序获得的多个带宽估计值;所述装置还包括:
115.下降值获取模块,用于获取所述多个带宽估计值中相邻两个带宽估计值之间的下降值;
116.间隔时长获取模块,用于在所述下降值中存在大于下降阈值的目标下降值的情况下,获取所述目标下降值之间的间隔时长;
117.下降次数获取模块,用于在所述间隔时长小于阈值时长的情况下,获取单位时间内出现所述目标下降值的次数;
118.模式确定模块,用于在所述次数大于次数阈值的情况下,确定进入带宽震荡波动
模式。
119.在本公开提供的又一实施例中,所述装置还包括:
120.起始阶段判断模块,用于基于所述初始带宽估计值,判断当前阶段是否为起始阶段;所述起始阶段包括所述初始带宽估计值处于连续增大的状态;
121.带宽震荡波动模式确定模块,用于在当前阶段不是处于所述起始阶段的情况下,确定是否进入带宽震荡波动模式。
122.在本公开提供的又一实施例中,所述滤波模块,具体用于:
123.获取所述直播推流的当前码率;
124.基于所述当前码率、所述初始带宽估计值和预先设定的带宽平滑因子系数,确定出目标带宽估计值。
125.在本公开提供的又一实施例中,所述装置还包括:
126.目标带宽估计值确定模块,用于在未进入带宽震荡波动模式的情况下,将所述初始带宽估计值作为目标带宽估计值。
127.本公开实施例提供的上述技术方案,应用层的带宽估计器能够获取到应用层码率控制策略的qos需求及变化信息,可以加强码率控制与带宽估计之间的联动性。并且由于应用层的码率控制可以获取到应用态传输层带宽估器估算的带宽估计值,相比在应用层基于tcp的被动估计,可以借助带宽估计器来估计带宽值,能够更加主动、实时和准确地适配网络状态的变化。
128.并且可以进一步通过获取直播推流时估计的初始带宽估计值,在基于带宽估计值确定进入带宽震荡波动模式的情况下,对初始带宽估计值进行滤波处理,以得到目标带宽估计值。通过引入带宽震荡波动模式,在根据获得的带宽估计值判断到进入带宽震荡波动模式时,对带宽估计值进行修正,可以避免因带宽估计值大幅下降使得目标码率过低,进而可以避免导致直播推流出现画面模糊问题,能够控制直播推流的视频画面保持相应的清晰度。
129.本公开实施例还提供一种电子设备,包括:至少一个处理器;用于存储所述至少一个处理器可执行指令的存储器;其中,所述至少一个处理器被配置为执行所述指令,以实现本公开实施例公开的上述方法。
130.图5为本公开一示例性实施例提供的电子设备的结构示意图。如图5所示,该电子设备1800包括至少一个处理器1801以及耦接至处理器1801的存储器1802,该处理器1801可以执行本公开实施例公开的上述方法中的相应步骤。
131.上述处理器1801还可以称为中央处理单元(central processing unit,cpu),其可以是一种集成电路芯片,具有信号的处理能力。本公开实施例公开的上述方法中的各步骤可以通过处理器1801中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器1801可以是通用处理器、数字信号处理器(digital signal processing,dsp)、asic、现成可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本公开实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于存储器1802中,例如随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编
程存储器、寄存器等本领域成熟的存储介质。处理器1801读取存储器1802中的信息,结合其硬件完成上述方法的步骤。
132.另外,根据本公开的各种操作/处理在通过软件和/或固件实现的情况下,可从存储介质或网络向具有专用硬件结构的计算机系统,例如图6所示的计算机系统1900安装构成该软件的程序,该计算机系统在安装有各种程序时,能够执行各种功能,包括诸如前文所述的功能等等。图6为本公开一示例性实施例提供的计算机系统的结构框图。
133.计算机系统1900旨在表示各种形式的数字电子的计算机设备,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
134.如图6所示,计算机系统1900包括计算单元1901,该计算单元1901可以根据存储在只读存储器(rom)1902中的计算机程序或者从存储单元1908加载到随机存取存储器(ram)1903中的计算机程序,来执行各种适当的动作和处理。在ram 1903中,还可存储计算机系统1900操作所需的各种程序和数据。计算单元1901、rom 1902以及ram 1903通过总线1904彼此相连。输入/输出(i/o)接口1905也连接至总线1904。
135.计算机系统1900中的多个部件连接至i/o接口1905,包括:输入单元1906、输出单元1907、存储单元1908以及通信单元1909。输入单元1906可以是能向计算机系统1900输入信息的任何类型的设备,输入单元1906可以接收输入的数字或字符信息,以及产生与电子设备的用户设置和/或功能控制有关的键信号输入。输出单元1907可以是能呈现信息的任何类型的设备,并且可以包括但不限于显示器、扬声器、视频/音频输出终端、振动器和/或打印机。存储单元1908可以包括但不限于磁盘、光盘。通信单元1909允许计算机系统1900通过网络诸如因特网的与其他设备交换信息/数据,并且可以包括但不限于调制解调器、网卡、红外通信设备、无线通信收发机和/或芯片组,例如蓝牙tm设备、wifi设备、wimax设备、蜂窝通信设备和/或类似物。
136.计算单元1901可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元1901的一些示例包括但不限于中央处理单元(cpu)、图形处理单元(gpu)、各种专用的人工智能(ai)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(dsp)、以及任何适当的处理器、控制器、微控制器等。计算单元1901执行上文所描述的各个方法和处理。例如,在一些实施例中,本公开实施例公开的上述方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元1908。在一些实施例中,计算机程序的部分或者全部可以经由rom 1902和/或通信单元1909而被载入和/或安装到电子设备1900上。在一些实施例中,计算单元1901可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行本公开实施例公开的上述方法。
137.本公开实施例还提供一种计算机可读存储介质,其中,当所述计算机可读存储介质中的指令由电子设备的处理器执行时,使得所述电子设备能够执行本公开实施例公开的上述方法。
138.本公开实施例中的计算机可读存储介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。上述
计算机可读存储介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。更具体的,上述计算机可读存储介质可以包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
139.上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
140.本公开实施例还提供一种计算机程序产品,包括计算机程序,其中,所述计算机程序被处理器执行时实现本公开实施例公开的上述方法。
141.在本公开的实施例中,可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括但不限于面向对象的程序设计语言,诸如java、smalltalk、c++,还包括常规的过程式程序设计语言,诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络(包括局域网(lan)或广域网(wan))连接到用户计算机,或者,可以连接到外部计算机。
142.附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
143.描述于本公开实施例中所涉及到的模块、部件或单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,模块、部件或单元的名称在某种情况下并不构成对该模块、部件或单元本身的限定。
144.本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示例性的硬件逻辑部件包括:现场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、片上系统(soc)、复杂可编程逻辑设备(cpld)等等。
145.以上描述仅为本公开的一些实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述公开构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
146.虽然已经通过示例对本公开的一些特定实施例进行了详细说明,但是本领域的技术人员应该理解,以上示例仅是为了进行说明,而不是为了限制本公开的范围。本领域的技术人员应该理解,可在不脱离本公开的范围和精神的情况下,对以上实施例进行修改。本公
开的范围由所附权利要求来限定。

技术特征:
1.一种直播码率控制方法,其特征在于,所述方法包括:获取终端的应用层直播推流的码率信息;获取所述终端的传输层获得的目标带宽估计值;基于所述码率信息对所述目标带宽估计值进行调整,并基于调整后的目标带宽估计值确定所述终端的目标码率。2.根据权利要求1所述的方法,其特征在于,所述基于所述码率信息对所述目标带宽估计值进行调整,包括:获取待传输视频帧对应的目标分辨率;获取所述目标分辨率对应的目标码表;其中,所述目标码表包括上限码率值和下限码率值,不同分辨率对应不同的码表;在所述目标带宽估计值小于所述下限码率值的情况下,基于所述下限码率值调整所述目标带宽估计值。3.根据权利要求1所述的方法,其特征在于,所述基于所述码率信息对所述目标带宽估计值进行调整,包括:获取第i-1周期对应的第一码率;其中,所述目标带宽估计值为在第i周期获得,i为大于1的正整数;基于所述第一码率和所述目标带宽估计值,获取码率变化值;在所述码率变化值不大于变化阈值的情况下,将所述第一码率作为调整后的目标带宽估计值。4.根据权利要求1~3任一所述的方法,其特征在于,所述方法包括:获取直播推流时估计的初始带宽估计值;在基于所述带宽估计值确定进入带宽震荡波动模式的情况下,对所述初始带宽估计值进行滤波处理,得到所述目标带宽估计值;其中,所述带宽震荡波动模式表征带宽估计值在单位时间段内的下降情况。5.根据权利要求4所述的方法,其特征在于,所述初始带宽估计值包括按照时间先后顺序获得的多个带宽估计值;所述方法还包括:获取所述多个带宽估计值中相邻两个带宽估计值之间的下降值;在所述下降值中存在大于下降阈值的目标下降值的情况下,获取所述目标下降值之间的间隔时长;在所述间隔时长小于阈值时长的情况下,获取单位时间内出现所述目标下降值的次数;在所述次数大于次数阈值的情况下,确定进入带宽震荡波动模式。6.根据权利要求4所述的方法,其特征在于,所述方法还包括:基于所述初始带宽估计值,判断当前阶段是否处于起始阶段;所述起始阶段包括所述初始带宽估计值处于连续增大的状态;在当前阶段未处于起始阶段的情况下,确定是否进入带宽震荡波动模式。7.根据权利要求4所述的方法,其特征在于,所述对所述初始带宽估计值进行滤波处理,得到目标带宽估计值,包括:获取所述直播推流的当前码率;
基于所述当前码率、所述初始带宽估计值和预先设定的带宽平滑因子系数,确定出目标带宽估计值。8.根据权利要求4所述的方法,其特征在于,所述方法还包括:在未进入带宽震荡波动模式的情况下,将所述初始带宽估计值作为目标带宽估计值。9.一种直播码率传输装置,其特征在于,所述装置包括:码率信息获取模块,用于获取终端应用层直播推流的码率信息;带宽估计值获取模块,用于获取所述终端的传输层获得的目标带宽估计值;调整模块,用于基于所述码率信息对所述目标带宽估计值进行调整;目标码率确定模块,用于基于调整后的目标带宽估计值,确定所述终端的目标码率。10.一种电子设备,其特征在于,包括:至少一个处理器;用于存储所述至少一个处理器可执行指令的存储器;其中,所述至少一个处理器被配置为执行所述指令,以实现如权利要求1-8中任一项所述的方法。11.一种计算机可读存储介质,其特征在于,当所述计算机可读存储介质中的指令由电子设备的处理器执行时,使得所述电子设备能够执行如权利要求1-8中任一项所述的方法。

技术总结
本公开涉及直播码率控制方法、装置、电子设备及存储介质,上述方法包括:获取终端应用层直播推流的码率信息;获取所述终端的传输层获得的目标带宽估计值;基于所述码率信息对所述目标带宽估计值进行调整,得到调整后的目标带宽估计值;基于所述调整后的目标带宽估计值,确定所述终端的目标码率。由于传输层的带宽估计器能够获取到应用层的特征信息,并且可以根据该特征信息调整带宽估计器估计的带宽估计值,进而可以加强应用层与传输层之间的联动性,能够更加主动、实时和准确地适配网络状态的变化,避免视频出现卡顿的问题。避免视频出现卡顿的问题。避免视频出现卡顿的问题。


技术研发人员:刘静
受保护的技术使用者:抖音视界有限公司
技术研发日:2023.08.07
技术公布日:2023/10/15
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

航空商城 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

评论

相关推荐