【具体实施方式】
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在现有技术中,在网络状态发生变化的情况下,视频编码器输出的视频质量较差,模糊失真较大,且流畅度不高,容易出现卡顿等问题。针对现有技术存在的缺陷,本申请提供一种编码参数调整方法,如图1a所示,该方法包括以下步骤:
1a、接收视频接收端反馈的网络特性参数。
1b、对当前之前接收的至少一个网络特性参数进行平滑处理,获得本次编码参数调整使用的网络特性参数。
1c、根据本次编码参数调整使用的网络特性参数,获得本次编码参数调整所需的目标编码参数。
1d、将视频编码器使用的编码参数调整为上述目标编码参数。
本实施例的执行主体可以是编码参数调整装置,该装置可位于视频发送端,用于对视频编码器的编码参数进行调整,以便于视频编码器采用调整后的编码参数对视频帧进行编码处理,具体可以是视频发送端的媒体优化模块,但不限于此。本实施例中的视频编码器可以是基于***DSP芯片的硬件视频编码器,或者也可以是采用某种计算机语言,例如C/C++,实现的软件编码器,或者也可以是采用单指令多数据流(SingleInstructionMultipleData,SIMD)代码指令集优化技术实现,或者其它并行技术实现的编码器。相应的,本实施例中的编码参数调整装置也可以是硬件实现,也可以是软件实现。
在本实施例中,视频发送端通过摄像头等视频采集设备采集原始视频信息,对原始视频信息进行预处理、视频编码、信道编码等处理,形成视频数据包后发送给视频接收端。视频接收端接收到视频数据包后,对视频数据包进行信道解码、视频解码等处理,获得视频帧,将视频帧发送到视频输出设备展现。视频接收端可以是与会终端,但不限于此。
在上述过程中,视频接收端周期性统计网络特性参数,例如期望码率、链路发生的丢包率和数据包回环时延等,并将网络特性参数反馈给编码参数调整装置。编码参数调整装置根据视频接收端反馈的网络特性参数对视频编码器采用的编码参数进行调整,以使视频编码器输出的视频码流能够适应网络传输特性,提高视频码流的传输质量和流畅度等。
编码参数调整装置并不像现有技术那样仅根据刚刚接收的网络特性参数进行编码参数调整,而是采用当前之前接收的至少一个网络特性参数进行平滑处理,获得本次编码参数调整使用的网络特性参数,再根据本次编码参数调整使用的网络特性参数进行编码参数调整。
由于本实施例采用的是接收的至少一个网络特性参数的平滑结果,所以可以在网络状况变化较为频繁时,保证对编码参数的调整较为平缓,并且可以消除网络随机波动等因素的影响,能够更好的对网络状态变化进行响应,有利于提高视频编码器在网络状态变化时输出的视频质量和流畅度。
图1b为本申请另一实施例提供的编码参数调整方法的流程示意图。如图1b所示,该方法包括:
101、接收视频接收端反馈的网络特性参数。
102、若视频接收端反馈的网络特性参数为可用网络特性参数,和/或,当前属于参数可调时间,则对当前之前接收的至少一个可用网络特性参数进行平滑处理,获得本次编码参数调整使用的网络特性参数。
103、根据本次编码参数调整使用的网络特性参数,获得本次编码参数调整所需的目标编码参数。
104、将视频编码器使用的编码参数调整为上述目标编码参数。
本实施例的执行主体可以是编码参数调整装置,该装置可位于视频发送端,用于对视频编码器的编码参数进行调整,以便于视频编码器采用调整后的编码参数对视频帧进行编码处理,具体可以是视频发送端的媒体优化模块,但不限于此。本实施例中的视频编码器可以是基于***DSP芯片的硬件视频编码器,或者也可以是采用某种计算机语言,例如C/C++,实现的软件编码器,或者也可以是采用SIMD代码指令集优化技术实现,或者其它并行技术实现的编码器。相应的,本实施例中的编码参数调整装置也可以是硬件实现,也可以是软件实现。
在本实施例中,视频发送端通过摄像头等视频采集设备采集原始视频信息,对原始视频信息进行预处理、视频编码、信道编码等处理,形成视频数据包后发送给视频接收端。视频接收端接收到视频数据包后,对视频数据包进行信道解码、视频解码等处理,获得视频帧,将视频帧发送到视频输出设备展现。视频接收端可以是与会终端,但不限于此。
在上述过程中,视频接收端周期性统计网络特性参数,例如期望码率、链路发生的丢包率和数据包回环时延等,并将网络特性参数反馈给编码参数调整装置。编码参数调整装置根据视频接收端反馈的网络特性参数对视频编码器采用的编码参数进行调整,以使视频编码器输出的视频码流能够适应网络传输特性,提高视频码流的传输质量和流畅度等。
具体的,编码参数调整装置接收视频接收端反馈的网络特性参数;在接收到视频接收端反馈的网络特性参数后,对视频接收端反馈的网络特性参数进行可用性判断,即判断该视频接收端反馈的网络特性参数是否为可以用于进行编码参数调整,在本实施例中,将可以用于进行编码参数调整的视频接收端反馈的网络特性参数称为可用网络特性参数,也就是判断视频接收端反馈的网络特性参数是否为可用网络特性参数。这样可以避免使用视频接收端反馈的不适于进行编码参数调整的网络特性参数进行编码参数调整,有利于提高编码参数调整的合理性和准确度,为提高视频质量和流畅度提供条件。
或者,编码参数调整装置可以判断当前是否可以进行编码参数调整,本实施例将可以用来进行编码参数调整的时间称为参数可调时间,因此也就是判断当前是否属于参数可调时间。这样可以在适于进行编码参数调整的时间进行编码参数调整,有利于提高编码参数调整的合理性和准确度,为提高视频质量和流畅度提供条件。
或者,编码参数装置在接收到视频接收端反馈的网络特性参数时,对视频接收端反馈的网络特性参数进行可用性判断,并且对当前是否可以进行编码参数调整进行判断;只有在视频接收端反馈的网络特性参数为可用网络特性参数,并且当前属于参数可调时间时,才确定进行编码参数调整。这样可以避免使用视频接收端反馈的不适于进行编码参数调整的网络特性参数进行编码参数调整,并且只有在适于进行编码参数调整的时间进行编码参数调整,有利于提高编码参数调整的合理性和准确度,为提高视频质量和流畅度提供条件。
当确定可以进行编码参数调整时,编码参数调整装置并不像现有技术那样仅根据刚刚接收的网络特性参数进行编码参数调整,而是采用当前之前接收的至少一个可用网络特性参数进行平滑处理,获得本次编码参数调整使用的网络特性参数,再根据本次编码参数调整使用的网络特性参数进行编码参数调整。由于本实施例采用的是接收的至少一个可用网络特性参数的平滑结果,所以可以在网络状况变化较为频繁时,保证对编码参数的调整较为平缓,并且可以消除网络随机波动等因素的影响,能够更好的对网络状态变化进行响应,有利于提高视频编码器在网络状态变化时输出的视频质量和流畅度。
值得说明的是,若步骤101中接收的网络特性参数为可用网络特性参数,则当前之前接收的至少一个可用网络特性参数包括:步骤101中接收的网络特性参数。
在获得目标特性参数后,编码参数调整装置可以根据目标特性参数获得本次编码参数调整所需的目标编码参数,之后将视频编码器使用的编码参数调整为目标编码参数,实现对编码参数的调整。
在本实施例中,编码参数调整装置在接收到视频接收端反馈的网络特性参数时,对视频接收端反馈的网络特性参数进行可用性判断,和/或,对当前是否可以进行编码参数调整进行判断,一定程度上可以避免使用视频接收端反馈的不可用网络特性参数进行编码参数调整,和/或可避免在不恰当时间进行编码参数调整等情况,有利于提高编码参数调整的合理性和准确度,为提高视频质量和流畅度提供条件;另外,本实施例使用接收的至少一个可用网络特性参数平滑后的参数进行编码参数调整,与现有技术在接收到视频接收端反馈的网络特性参数后直接根据该网络特性参数进行编码参数调整的方案相比,可以消除网络随机波动等因素的影响,能够更好的对网络状态变化进行响应,有利于提高视频编码器在网络状态变化时输出的视频码流的质量和流畅度。
在本申请的另一实施例中,可以预先配置视频编码器所支持的解析度尺寸比例,比如有16:9,4:3和11:9等。另外,需要预先配置每个解析度尺寸比例下的编码参数表,具体包括:表征视频解析度的宽度和高度(单位是像素(pixel))、表征视频流畅度的帧率(单位是帧/秒(fps))、对应解析度和帧率下的码率范围区间和给定的初始码率值。
需要注意的是,在配置码率范围区间时,需要将码率范围区间配置到网络所支持的最大码率和最小码率限定的范围区间内。另外,配置最小码率时,需要保证视频编码器,比如可以是***级芯片(SystemonChip,SoC)实现的硬件编码器或者软件实现的编码器,在相应编码条件下输出的视频质量是可以接受的。
上述配置的编码参数表的数据域信息至少包括:视频宽度(pixel)、视频高度(pixel)、帧率(fps)、最小码率(kbps)、初始码率(kbps)和最大码率(kbps)。以解析度尺寸比例16:9为例,则预先配置的编码参数表结构,如下所示:
图2为本申请又一实施例提供的编码参数调整方法的流程图。如图2所示,该方法包括:
201、接收视频接收端反馈的网络特性参数。
本实施例的执行主体可以是编码参数调整装置,该装置可位于视频发送端,用于对视频编码器的编码参数进行调整,以便于视频编码器采用调整后的编码参数对视频帧进行编码处理,具体可以是视频发送端的媒体优化模块,但不限于此。本实施例中的视频编码器可以是基于***DSP芯片的硬件视频编码器,或者也可以是采用某种计算机语言,例如C/C++,实现的软件编码器,或者也可以是采用SIMD代码指令集优化技术实现,或者其它并行技术实现的编码器。相应的,本实施例中的编码参数调整装置也可以是硬件实现,也可以是软件实现。
在本实施例中,视频发送端通过摄像头等视频采集设备采集原始视频信息,对原始视频信息进行预处理、视频编码、信道编码等处理,形成视频数据包后发送给视频接收端。视频接收端接收到视频数据包后,对视频数据包进行信道解码、视频解码等处理,获得视频帧,将视频帧发送到视频输出设备展现。
在上述过程中,视频接收端周期性统计网络特性参数,例如期望码率、链路发生的丢包率和数据包回环时延等,并将网络特性参数反馈给编码参数调整装置。编码参数调整装置根据视频接收端反馈的网络特性参数对视频编码器采用的编码参数进行调整,以使视频编码器输出的视频码流能够适应网络传输特性,提高视频码流的传输质量和流畅度等。
202、判断接收视频接收端反馈的网络特性参数的时间,与当前之前最后一次接收到可用网络特性参数的时间,之间的间隔是否大于预设第一时长门限;若是,执行步骤203;若否,结束操作。
203、确定视频接收端反馈的网络特性参数为可用网络特性参数,并执行步骤204。
204、判断接收视频接收端反馈的网络特性参数的时间,与视频接收端与本端建立会话的时间,之间的间隔是否大于预设第二时长门限,且接收视频接收端反馈的网络特性参数的时间,与上一次编码参数调整的时间,之间的间隔是否大于预设第三时长门限;若是,则执行步骤205;反之,则结束操作。
上述判断为是的情况是指:接收视频接收端反馈的网络特性参数的时间,与视频接收端与本端建立会话的时间,之间的间隔大于预设第二时长门限,且接收视频接收端反馈的网络特性参数的时间,与上一次编码参数调整的时间,之间的间隔大于预设第三时长门限。上述判断为否的情况是指:接收视频接收端反馈的网络特性参数的时间,与视频接收端与本端建立会话的时间,之间的间隔小于或等于预设第二时长门限,和/或,接收视频接收端反馈的网络特性参数的时间,与上一次编码参数调整的时间,之间的间隔小于或等于预设第三时长门限。
205、确定当前属于参数可调时间,并执行步骤206。
在本实施例中,考虑到网络状况不佳或网络随机波动等情况,视频接收端有可能重复反馈相同的网络特性参数,重复的网络特性参数属于不可用网络特性参数。为了避免重复网络特性参数,在接收到网络特性参数后,通过判断接收视频接收端反馈的网络特性参数的时间,与当前之前最后一次接收到可用网络特性参数的时间,之间的间隔是否大于预设第一时长门限,来判断该视频接收端反馈的网络特性参数是否是在合理反馈间隔内反馈的信息。其中,第一时长门限是预先设定的反馈间隔,例如可以是但不限于:100ms。
若上述判断结果为是,说明视频接收端反馈的网络特性参数是可用的,不属于重复的参数;若上述判断结果为否,则结束操作。
进一步,考虑到视频接收端与本端(即编码参数调整装置所在的一端,例如视频发送端)之间建立会话初期,视频接收端反馈的网络特性参数的数量有可能不足,为了避免在网络特性参数数量不足的情况进行编码参数调整导致调整效果不佳的问题,在会话建立初期最好不进行编码参数调整,即会话建立初始不属于参数可调时间。另外,为了合理的控制编码参数调整的频率,既要防止太过频繁的进行编码参数调整,又要防止长时间不进行编码参数调整,本实施例可以设定编码参数调整的时间间隔,即第三时长门限,每隔该时间间隔之后进行一次编码参数调整,也就是说,在距离上一次编码参数调整时间不到第三时长门限的时间不属于参数可调时间。
基于上述,在接收到视频接收端反馈的网络特性参数后,通过判断接收视频接收端反馈的网络特性参数的时间,与视频接收端与本端建立会话的时间,之间的间隔是否大于预设第二时长门限,来判断是否有足够的可用网络特性参数,并判断接收视频接收端反馈的网络特性参数的时间,与上一次编码参数调整的时间,之间的间隔是否大于预设第三时长门限。其中,第二时长门限可以是但不限于5000ms。相应的,第三时长门限可以是但不限于5000ms。
只有判断结果均为是时,说明当前时间属于参数可调时间,于是进入下面步骤206-208,进行编码参数调整。
206、对当前之前接收的至少一个可用网络特性参数进行平滑处理,获得本次编码参数调整使用的网络特性参数。
在一可选实施方式中,可以根据公式(1),获得本次编码参数调整使用的网络特性参数。
在上述公式(1)中,smooth_X为本次编码参数调整使用的网络特性参数;wi为当前之前接收到的第i个可用网络特性参数;ai为第i个可用网络特性参数的权重,且N是自然数,表示可用网络特性参数的总数。优选的,可用网络特性参数距离当前时间越近,其权重可以越大。
值得说明的是,上述可用网络特性参数可以是一个,则可以将其权重设置为1.0,并进行只有一个可用网络特性参数的平滑处理,这种情况实际上是没有足够可用网络特性参数进行平滑处理的特殊情况。
值得说明的是,若视频接收端反馈的网络特性参数包括期望码率、丢包率和数据回环时延等多个参数,则本次编码参数调整使用的网络特性参数相应地包括平滑后的期望码率、平滑后的丢包率和平滑后的数据回环时延等多个参数,则上述smooth_X可以表示为smooth_Xj的向量,smooth_Xj表示第j个平滑后的参数。
在一优选实施方式中,上述当前之前接收的至少一个可用网络特性参数可以是最近三个可用网络特性参数。则可以根据smooth_X=a0w0+a1w1+a2w2,计算出本次编码参数调整使用的网络特性参数。其中,a0+a1+a2=1,且a0>a1>a2。进一步优选的,若a0=0.6、a1=0.3且a2=0.1,则利用由上述公式计算出的本次编码参数调整使用的网络特性参数进行编码参数调整,能够消除随机抖动的影响。
207、根据本次编码参数调整使用的网络特性参数,获得本次编码参数调整所需的目标编码参数。
在获得本次编码参数调整使用的网络特性参数之后,可以根据本次编码参数调整使用的网络特性参数获得本次编码参数调整所需的目标编码参数。
如图3所示,步骤207或上述步骤103的一种可选实施方式包括:
2071、根据本次编码参数调整使用的网络特性参数,计算码率调整步长和码率调整方向;
2072、根据码率调整步长和码率调整方向,对视频编码器当前使用码率进行调整,以获得匹配码率。
2073、根据匹配码率,获得本次编码参数调整所需的目标编码参数。
在一可选实施方式中,视频接收端反馈的网络特性参数包括:期望码率、丢包率、数据包回环时延等参数,相应的,本次编码参数调整使用的网络特性参数包括:平滑后的期望码率、平滑后的丢包率和平滑后的数据包回环时延。值得说明的是,期望码率等价于视频接收端的实际可用带宽。
基于此,编码参数调整装置具体可以根据平滑后的期望码率、平滑后的丢包率、平滑后的数据包回环时延和视频编码器当前使用的码率,获得码率调整步长和码率调整方向。
在一具体实施方式中,编码参数调整装置可以根据平滑后的期望码率和平滑后的数据包回环时延,确定网络状况的好坏。具体的,编码参数调整装置将平滑后的期望码率与预设的丢包率门限进行比较,并将平滑后的数据包回环时延与预设的时延门限进行比较;根据比较结果,确定网络状况的好坏。
若平滑后的丢包率大于预设的丢包率门限,和/或,平滑后的数据包回环时延大于预设的时延门限,则确定网络状况较差,则需要降低编码码率以适应网络状况,因此确定码率调整方向为向下调。这种高延时或丢包的情况一般在广域网(WAN)和无线网络中较为常见。
在网络状况较差的情况下,可能出现的丢包率有8%、12%、20%和50%等不同的值,基于平滑后的丢包率大小的不同,可以适应性设置截断比例(cut_ratio),例如截断比例可以有1/10,1/8,1/4和1/2等,以平衡总体的视频质量。根据截断比例可以对视频编码器当前使用的码率进行截断处理,获得可以作为码率调整步长的截断码率。例如,可以将由平滑后的丢包率所确定的截断比例与视频编码器当前使用的码率的乘积作为第一截断码率。
进一步,编码参数调整装置将平滑后的期望码率与视频编码器当前使用的码率进行比较,若平滑后的期望码率小于视频编码器当前使用的码率时,将第一码率差值和第一截断码率中较小的一个作为码率调整步长;若平滑后的期望码率大于或等于视频编码器当前使用的码率,则直接将第一截断码率作为码率调整步长。其中,第一码率差值是视频编码器当前使用的码率与所述平滑后的期望码率的差值。
若平滑后的丢包率小于或等于预设的丢包率门限,且平滑后的数据包回环时延小于或等于预设的时延门限,则确定网络状况较好,则需要增大编码码率以适应网络状况,因此确定码率调整方向为向上调。
进一步,编码参数调整装置将平滑后的期望码率与视频编码器最大可承受码率进行比较,并将平滑后的丢包率与信道编码所能抵抗的最小丢包率进行比较;若平滑后的期望码率大于或等于视频编码器最大可承受码率,且平滑后的丢包率小于或等于信道编码所能抵抗的最小丢包率,则将第二码率差值和第二截断码率中较小的作为码率调整步长。
其中,视频编码器最大可承受码率可由视频编码器允许超出给定码率的上限幅度与视频编码器当前使用的码率的相乘获得。信道编码所能抵抗的最小丢包率可以是一经验值。
上述第二码率差值是指平滑后的期望码率与视频编码器当前使用的码率的差值。第二截断码率是预设的上调比例与视频编码器当前使用的码率的乘积和预设的最大码率上调幅度中较大的一个。其中,通过预先设定上调比例和最大码率上调幅度,可以在上调码率情况下,防止因上调幅度过大导致调整比较频繁,进而引起视频质量反复振荡的问题。
在获得码率调整步长和码率调整方向后,可以根据码率调整步长和码率调整方向对视频编码器当前使用的码率进行调整,获得本次编码参数调整的匹配码率;进一步,根据匹配码率,获得本次编码参数调整的目标编码参数。
在上述预先配置的编码参数表中,包括至少一组编码参数,每组编码参数包括码率范围区间;编码参数调整装置可以根据匹配码率,在预设的编码参数表中进行匹配;将包括匹配码率的码率范围区间所在的编码参数作为目标编码参数。
例如,以上述预先配置的编码参数表为例,假设视频编码器当前使用的编码参数为:kW360P,k20HZ,480kbps,而计算出的匹配码率为430kbps,则可以先在视频编码器当前使用的相同解析度下,向较小的帧率方向匹配,以判断是否匹配到码率落在某个[最小码率,最大码率]这个码率范围区间,匹配得到的结果是:kW360P,k15HZ,350,416,450这组编码参数,最终选定该组编码参数中的kW360P,k15HZ和430kbps作为目标编码参数。值得说明的是,若在视频编码器当前使用的相同解析度下没查找到包括匹配码率的码率范围区间,可以依序往较低解析度的编码参数中继续查找,若仍然无法查找到,可以取到编码参数表中定义的最低解析度下的最低帧率下的编码参数作为目标编码参数。
又例如,以上述预先配置的编码参数表为例,假设视频编码器当前使用的编码参数为:kW360P,k20HZ,480kbps,而计算出的匹配码率为800kbps,则可以先在视频编码器当前使用的相同解析度下,向较大的帧率方向匹配,以判断是否匹配到码率落在某个[最小码率,最大码率]这个码率范围区间,匹配得到的结果是:kW360P,k25HZ,560,720,900这组编码参数,最终选定该组编码参数中的kW360P,k25HZ和800kbps作为目标编码参数。值得说明的是,若在视频编码器当前使用的相同解析度下没查找到包括匹配码率的码率范围区间,可以依序往较高解析度的编码参数中继续查找,若仍然无法查找到,可以取到编码参数表中定义的最高解析度下的最高帧率下的编码参数作为目标编码参数。
进一步,在将匹配码率在编码参数表中进行匹配之前,可以判断匹配码率是否在网络所支持的最大码率和最小码率范围之内,若不在,需要对匹配码率进行调整,以将匹配码率调整到网络所能支持的最大码率和最小码率之间,以便于在保证视频流畅的前提下提供最优的视频质量。
208、将视频编码器使用的编码参数调整为目标编码参数。
在获得目标编码参数之后,将视频编码器使用的编码参数调整为目标编码参数。
在本实施例中,编码参数调整装置在接收到视频接收端反馈的网络特性参数时,对视频接收端反馈的网络特性参数进行可用性判断,并对当前是否可以进行编码参数调整进行判断,只有在视频接收端反馈的网络特性参数可用,且当前可以进行编码参数调整时,才进行编码参数调整,可以避免使用视频接收端反馈的不可用网络特性参数进行编码参数调整,并可避免在不恰当时间进行编码参数调整等情况,有利于提高编码参数调整的合理性和准确度,为提高视频质量和流畅度提供条件;另外,本实施例使用接收的至少一个可用网络特性参数平滑后的参数进行编码参数调整,与现有技术在接收到视频接收端反馈的网络特性参数后直接根据该网络特性参数进行编码参数调整的方案相比,可以消除网络随机波动等因素的影响,能够更好的对网络状态变化进行响应,有利于提高视频编码器在网络状态变化时输出的视频码流的质量和流畅度。
本申请提出的编码参数调整方法可以应用于WAN、LAN,2.5G网络、3G网络、4G网络、Wi-Fi网络、企业网络、以及以ADSL等方式接入的家庭网络等各种不同类型的网络场景,以便于提高视频质量和流畅度,提高用户的视频体验。
为使本申请的技术效果更具说服力,发明人经过大量实验将本申请技术方案和现有技术方案进行比对,效果比对分别如图4-图7所示。首先说明,根据视频接收端反馈的网络特性参数,可以确定在图4-图7中时间轴的前半部分对应的时间段内网络状况较好,而在中间部分对应的时间段内网络状况较差。
其中,图4所示为视频解析度调整结果比对。在图4中,横坐标轴表示时间,纵坐标轴表示关联特征值(co-index)的数值。由于视频解析度由宽度和高度两个维度组成,为便于表示,本实施例将其对应到co-index这一个值,也就是说,co-index可用于表示视频解析度,co-index的数值越大,视频解析度越小。co-index的数值与视频解析度的对应关系如下表1所示。在调整曲线的前半部分(1-13对应的时间段内),采用现有技术方案进行编码参数调整,其视频解析度都维持在640x360大小,在测试中发现其视频输出质量偏差,较模糊;而采用本申请技术方案进行编码参数调整,其视频解析度大部分维持在320x180大小,虽然视频解析度较低,但视频输出质量比较好,而且质量一直稳定。
表1
解析度 |
co-index的数值 |
1280x720 |
0 |
640x360 |
1 |
480x270 |
2 |
320x180 |
3 |
160x90 |
4 |
图5所示为视频帧率调整结果比对。在图5中,横坐标轴表示时间,纵坐标轴表示帧率。由图5可见,本申请调整的平均帧率比现有技术的要高,更流畅一些,尤其是中间网络条件较差的时间段内,效果更明显。现有技术在网络条件较差的时间段内视频输出比较卡顿,仅有10fps。
图6所示为视频编码器实际输出帧率结果比对。在图6中,横坐标轴表示时间,纵坐标轴表示视频编码器编码输出的帧率。如图6所示,关于视频编码器实际输出的帧率,本申请大部分都维持在15fps及以上,即使在网络状况较差的时间段,也落在10fps,与图5中所示的预期10fps调整指令吻合;而现有技术方案中实际输出的帧率极不稳定,上下振荡,在网络状况较差时仅输出4fps,视频较卡顿。
图7所示为视频编码器实际输出码率结果比对。在图7中,横坐标轴表示时间,纵坐标轴表示视频编码器编码输出的码率。如图7所示,关于视频编码实际输出的码率,本申请的视频编码器输出的码率较平稳,无反复振荡现象,且平均输出码率较高,视频始终较清晰,视频体验较好。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
图8为本申请一实施例提供的编码参数调整装置的结构示意图。如图8所示,该装置包括:接收模块81、第一获取模块82、第二获取模块83和调整模块84。
接收模块81,用于接收视频接收端反馈的网络特性参数。
第一获取模块82,与接收模块81连接,用于对当前之前接收模块81接收的至少一个可用网络特性参数进行平滑处理,获得本次编码参数调整使用的网络特性参数。
第二获取模块83,与第一获取模块82连接,用于根据第一获取模块82获取的本次编码参数调整使用的网络特性参数,获得本次编码参数调整所需的目标编码参数。
调整模块84,与第二获取模块83连接,用于将视频编码器使用的编码参数调整为第二获取模块83获取的目标编码参数。
在一可选实施方式中,第一获取模块82具体可用于:在视频接收端反馈的网络特性参数为可用网络特性参数,和/或,当前属于参数可调时间时,对当前之前接收的至少一个可用网络特性参数进行平滑处理,获得本次编码参数调整使用的网络特性参数。
在一可选实施方式中,如图9所示,该装置还包括:第一判断模块85,与接收模块81连接,用于判断接收模块81接收视频接收端反馈的网络特性参数的时间,与当前之前最后一次接收到可用网络特性参数的时间,之间的间隔是否大于预设第一时长门限,并在判断结果为是时,确定视频接收端反馈的网络特性参数为可用网络特性参数。
进一步,如图9所示,该装置还包括:第二判断模块86,与接收模块81连接,用于判断接收模块81接收视频接收端反馈的网络特性参数的时间,与视频接收端和该编码参数调整装置所在端建立会话的时间,之间的间隔是否大于预设第二时长门限,以及判断接收模块81接收视频接收端反馈的网络特性参数的时间,与上一次编码参数调整的时间,之间的间隔是否大于预设第三时长门限,并在判断结果为是,确定当前属于参数可调时间。
在一可选实施方式中,第一获取模块82具体可用于根据上述公式(1),对当前之前接收的至少一个可用网络特性参数进行平滑处理,获得本次编码参数调整使用的网络特性参数。关于公式(1)及有关参数可参见上述方法实施例的描述,在此不再赘述。
在一可选实施方式中,如图9所示,第二获取模块83的一种实现结构包括:计算单元831、调整单元832和获取单元833。
计算单元831,用于根据本次编码参数调整使用的网络特性参数,计算码率调整步长和码率调整方向;
调整单元832,与计算单元831连接,用于根据计算单元831计算出的码率调整步长和码率调整方向,对视频编码器当前使用的码率进行调整,以获得匹配码率。
获取单元833,与调整单元832连接,用于根据调整单元832获得的匹配码率,获得本次编码参数调整所需的目标编码参数。
在一可选实施方式中,视频接收端反馈的网络特性参数包括:期望码率、丢包率和数据包回环时延;相应的,本次编码参数调整使用的网络特性参数包括:平滑后的期望码率、平滑后的丢包率和平滑后的数据包回环时延。
计算单元831具体用于:根据平滑后的期望码率、平滑后的丢包率、平滑后的数据包回环时延和视频编码器当前使用的码率,获得码率调整步长和码率调整方向。
计算单元831进一步具体用于:
若平滑后的丢包率大于预设的丢包率门限,和/或平滑后的数据包回环时延大于预设时延门限,确定码率调整方向为向下调,并在平滑后的期望码率小于视频编码器当前使用的码率时,将第一码率差值和第一截断码率中较小的一个作为码率调整步长,或者在平滑后的期望码率大于或等于视频编码器当前使用的码率时,将第一截断码率作为码率调整步长;
其中,第一码率差值是指视频编码器当前使用的码率与平滑后的期望码率的差值,第一截断码率是由平滑后的丢包率确定的截断比例与视频编码器当前使用的码率的乘积;
若平滑后的丢包率小于或等于预设的丢包率门限,且平滑后的数据包回环时延小于或等于预设时延门限,确定码率调整方向为向上调,并在平滑后的期望码率大于或等于视频编码器最大可承受码率,且平滑后的丢包率小于或等于信道编码所能抵抗的最小丢包率时,将第二码率差值和第二截断码率中较小的作为码率调整步长;
其中,第二码率差值是指平滑后的期望码率与视频编码器当前使用的码率的差值,第二截断码率是预设的上调比例与视频编码器当前使用的码率的乘积和预设的最大码率上调幅度中较大的一个。
在一可选实施方式中,预先配置视频编码器所支持的解析度尺寸比例,比如有16:9,4:3和11:9等。另外,需要预先配置每个解析度尺寸比例下的编码参数表。
基于此,获取单元833具体可用于:根据匹配码率,在预设的编码参数表中进行匹配,编码参数表包括至少一组编码参数,至少一组编码参数中的每组编码参数包括码率范围区间;将包括所述匹配码率的码率范围区间所在的编码参数作为目标编码参数。
本实施例提供的编码参数调整装置可以位于视频发送端,主要用于对视频编码器的编码参数进行调整,以便于视频编码器采用调整后的编码参数对视频帧进行编码处理,具体可以是视频发送端的媒体优化模块,但不限于此。
本实施例提供的编码参数调整装置,接收到视频接收端反馈的网络特性参数,对当前之前接收的至少一个网络特性参数进行平滑处理,获得本次编码参数调整使用的网络特性参数,进而根据本次编码参数调整使用的网络特性参数进行编码参数调整,与现有技术在接收到视频接收端反馈的网络特性参数后直接根据该网络特性参数进行编码参数调整的方案相比,可以消除网络随机波动等因素的影响,能够更好的对网络状态变化进行响应,有利于提高视频编码器在网络状态变化时输出的视频码流的质量和流畅度。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的***,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(RandomAccessMemory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。