[0030] 相关研究已经表明当客户端处于稳定状态时,使用分片请求机制所产生的
开关模式有如下主要缺点:
[0031] 1)这种开关模式会导致视频服务器的上行带宽利用率不足;
[0032] 2)并发视频流不能够公平地共享
瓶颈路段;
[0033] 3)当视频流与TCP流在共享瓶颈路段时(如文件的并行下载),视频流不能够得到公平的带宽分配。
发明内容
[0034] 有鉴于此,本发明的目的在于提供一种自适应视频编码控制系统及一种自适应视频编码控制方法,解决在自适应流媒体系统播放过程中播放中断的问题,同时保证了最佳的视频质量。
[0035] 为达到上述目的,本发明提供如下技术方案:
[0036] 一种自适应视频编码控制系统,包括控制器,用于计算视频的实时编码码率;分片调度处理单元,用于向服务器请求发送视频分片;播放缓冲区,位于客户端,用于放置从视频服务器接收到的视频资源;编码器,位于视频服务器端,用于对源视频进行编码;网络带宽估计器,用于计算网络可用带宽估计值;输入
接口,位于客户端,用于读取播放缓冲区的长度;播放器,位于客户端,用于获取播放缓冲区内的资源,解码视频并播放。
[0037] 进一步,所述控制器通过以下公式计算实时编码码率:
[0038]
[0039] 其中,tk=tk-1+ΔT表示第k次的
采样时间,ΔT为采样时间间隔;q(tk)表示在第k次采样时由输入接口读取的播放缓冲区长度;F(q(tk),q(tk-1),...,q(tk-m+1),qT)是一个关于播放缓冲区长度的函数,函数中采样步骤为k,k-1,k-2,…,k-m+1(m为最后采样),并且达到缓冲区目标值qT;r(tk)表示带宽估计器计算在第k次采样间隔时间后的估计带宽;Q(·)是一个递增函数。
[0040] 进一步,所述控制器还可以通过以下公式计算实时编码码率:
[0041]
[0042] 其中,tk=tk-1+ΔT表示第k次的采样时间,ΔT为采样时间间隔;q(tk)为第k次采样时间时播放缓冲区的长度;r(tk)表示第k次采样间隔时间后的网络可用带宽估计值;K1和K2为两个非负常数;Q(·)为递增函数
[0043] 进一步,所述网络可用带宽估计值通过以下公式计算:
[0044]
[0045] 其中,tk=tk-1+ΔT为第k次的采样时间;q(tk)为第k次采样时间播放缓冲区的长度;b(tk-1)为在第k-1次采样间隔后控制器所计算的实时编码码率;d(tk-1)为一个布尔变量,当视频播放时为1,未播放时为0。
[0046] 一种自适应视频编码控制方法,包括以下步骤:
[0047] 1)根据播放缓冲区的长度和网络可用带宽估计值计算视频的实时编码码率;
[0048] 2)向视频服务器发出分片请求,请求下一个要发送的分片和分片的视频等级;
[0049] 3)视频服务器将相应等级的视频分片发送给客户端。
[0050] 进一步,所述实时编码码率通过以下公式计算:
[0051]
[0052] 其中,tk=tk-1+ΔT表示第k次的采样时间,ΔT为采样时间间隔;q(tk)表示在第k次采样时由输入接口读取的播放缓冲区长度;F(q(tk),q(tk-1),...,q(tk-m+1),qT)是一个关于播放缓冲区长度的函数,函数中采样步骤为k,k-1,k-2,…,k-m+1(m为最后采样),并且达到缓冲区目标值qT;r(tk)表示带宽估计器计算在第k次采样间隔时间后的估计带宽;Q(·)是一个递增函数。
[0053] 进一步,所述实时编码码率通过以下公式计算:
[0054]
[0055] 其中,tk=tk-1+ΔT表示第k次的采样时间,ΔT为采样时间间隔;q(tk)为第k次采样时间时播放缓冲区的长度;r(tk)表示第k次采样间隔时间后的网络可用带宽估计值;K1和K2为两个非负常数;Q(·)为递增函数。
[0056] 进一步,所述网络可用带宽估计值通过以下公式计算:
[0057]
[0058] 其中,tk=tk-1+ΔT为第k次的采样时间;q(tk)为第k次采样时间播放缓冲区的长度;b(tk-1)为在第k-1次采样间隔后控制器所计算的实时编码码率;d(tk-1)为一个布尔变量,当视频播放时为1,未播放时为0。
[0059] 进一步,所述网络可用带宽估计值通过以下公式计算:
[0060]
[0061] 其中,α为0到1的常量;Dk-1为k-1分片的字节大小;Dk-1/ΔTk-1代表的是分片k-1的下载速率。
[0062] 进一步,所述步骤2)具体步骤包括:当第k个视频分片在时刻tkd传输完成后,向视d频服务器请求在时刻tk+1=tk+pk发送第k+1个分片;
[0063] 读取当前视频的实时编码码率b(tkd)及播放缓冲区的长度q(tkd);
[0064] 当b(tkd)小于最大编码码率或者q(tkd)小于最大阈值Qmax时,分片调度器在时刻tkd以码率b(tkd)向视频服务器请求第k+1个分片;
[0065] 当b(tkd)大于或等于最大编码码率,并且播放缓冲区长度q(tkd)大于或等于最大阈值Qmax时,分片调度器在空闲pk=max(Tk-ΔTkd,0)秒后请求视频服务器以最大编码码率发送第k+1个视频分片,其中,Tk是第k个分片的时长,ΔTkd=tkd-tk是第k个分片的下载时间。
[0066] 本发明的有益效果在于:本发明提供的一种自适应视频编码控制系统及方法,通过控制器根据播放缓冲区的长度和网络可用带宽估计值计算视频的实时编码码率,进而控制视频服务器的发送下一视频分片的编码码率,使得视频服务器到客户端给予的端到端带宽为用户提供最大的视频质量,使得在TCP流存在的情况下,视频流能够获得公平的带宽分配,能够保证多个视频流共享同一瓶颈通道。
附图说明
[0067] 为了使本发明的目的、技术方案和有益效果更加清楚,本发明提供如下附图进行说明:
[0068] 图1为本发明说述的自适应视频编码控制系统结构图;
[0069] 图2为本发明说述的分片调度处理单元的工作
流程图;
[0070] 图3为分片请求过程调度图。
具体实施方式
[0071] 下面将结合附图,对本发明的优选
实施例进行详细的描述。
[0072] 本发明提供的一种自适应视频编码控制系统,如图1所示,包括客户端110(视频接收方)通过分组交换网络108连接到视频服务器109(视频发送方)。
[0073] 所述视频服务器可以是任何一种配备了分组交换网络(例如互联网)的计算机,使用的
操作系统可以是Windows 7,Windows 8,Windows NT,Windows XP,Linux,Mac OSX。
[0074] 所述客户端可以是任何配备了分组交换网络接口,同时能使用有线和无线接入网络的设备,也可以是智能手机。设备可以使用任何操作系统如Linux、Android、Windows、iOS等。
[0075] 视频源通过使用服务器上的编码器进行编码或压缩。编码器将视频源进行编码或压缩,可以采用以下方式:
[0076] 1)可伸缩编码(例如H.264SVC):码率b(t)可以设置为Bmin和Bmax之间的任何值,Bmin表示最小编码码率,Bmax表示最大编码码率。
[0077] 2)多码率或流切换编码:编码器将源视频以不同的码率编码成N个版本,版本描述为“表示”或“视频等级”。其中码率b(t)属于集合L={l1,l2,…,lN},lN表示最大编码码率。如采用Akamai高清网络的视频水平L={350,700,1500,2500,3500}kbps,视频
分辨率从
240P到1080p。编码器可以使用任何视频编解码器,例如AVC/H.264,VP8,HEVC/H.265,VP9。
[0078] 图1中自适应视频编码控制系统使用的是客户端控制架构,本发明所述的自适应视频编码控制系统也可以使用服务器端控制架构,将控制器放置在视频服务器上。
[0079] 自适应视频编码控制系统包括播放缓冲区107、播放器106、编码器101、视频源102、输入接口、网络带宽估计器105、控制器103和分片调度处理单元104。
[0080] 播放缓冲区,位于客户端,用于放置从视频服务器接收到的视频资源。
[0081] 播放器,位于客户端,用于获取播放缓冲区内的资源,解码视频并播放。
[0082] 编码器,位于视频服务器端,用于对源视频进行编码。
[0083] 输入接口,位于客户端,用于读取播放缓冲区的长度。
[0084] 网络带宽估计器,用于在发送视频分片的传输过程中计算网络可用带宽估计值。
[0085] 控制器用于根据播放缓冲区的长度和估计网络可用带宽计算视频的实时编码码率,在可伸缩编码模式下的编码 在多码率编码模式下b(t)∈L;所述控制器可以由Adobe Flash、微软Silverlight,或使用HTML5标准中的MediaSource API实现。
[0086] 所述控制器主要用于自动实时计算编码码率,并将播放缓冲区的长度保持在目标阈值qT附近的稳定状态,尽可能在端到端可用带宽之上选择最高的视频等级。所述控制器主要根据网络可用带宽估计值、播放缓冲区的长度及播放缓冲区的目标阈值qT来计算实时编码码率。
[0087] 分片调度处理单元,用于向服务器请求发送视频分片,根据视频的实时编码码率和播放缓冲区的长度决定何时向视频服务器发送视频分片请求。
[0088] 一种自适应视频编码控制方法,主要包括以下步骤:
[0089] 1)根据播放缓冲区的长度和网络可用带宽估计值计算视频的实时编码码率。
[0090] 视频被分割成具有同样时长的M个分片(块)。典型的分片时长在1秒到10秒之间。分片的序列号表示为k∈{1,2,…,M}。(k-1)代表客户端114接收的上一个视频分片,而k代表客户端请求的下一个视频分片。
[0091] tk表示客户端向服务器请求第k个分片的时间,tkd表示分片k被客户端接收到的时d间。最后,ΔTK=tk-tk表示分片k的下载所需时间。
[0092] 所述读取播放缓冲区的长度通过输入接口获取;所述网络可用带宽值通过网络带宽估计器计算;所述控制器通过以下公式计算视频的实时编码码率:
[0093]
[0094] 其中,tk=tk-1+ΔT表示第k次的采样时间,ΔT为采样时间间隔;q(tk)表示在第k次采样时由输入接口读取的播放缓冲区长度;F(q(tk),q(tk-1),...,q(tk-m+1),qT)是一个关于播放缓冲区长度的函数,函数中采样步骤为k,k-1,k-2,…,k-m+1(m为最后采样),并且达到缓冲区目标值qT;r(tk)表示带宽估计器计算在第k次采样间隔时间后的估计带宽;Q(·)是一个递增函数。
[0095] 可伸缩编码模式下的编码码率b(t)包含于集合 多码率编码模式下的编码码率b(t)为集合L={l1,l2,…,lN}中的离散值。
[0096] 所述控制器还可以通过以下公式计算视频的实时编码码率,(k-1)代表下载的上一个视频分片。当分片(k-1)被下载完成时,控制器需要计算在tk时刻向视频服务器请求的下一个视频分片k的编码码率(即视频等级)b(tk),b(tk)∈L。其中,tk=tk-1+ΔTk-1,其中ΔTk-1为分片(k-1)的下载所需时间。
[0097]
[0098] 其中,q(tk)指的是播放缓冲区的长度;r(tk)指的是带宽估计器计算的可用带宽估计值;K1和K2是两个非负常数;qI(tk)=qI(tk-1)+ΔTk-1(q(tk)-qT)是误差q(tk)-qT的积分;Q:为一个递增函数,其中任何x值对应于li∈L。在流切换系统中,控制器只能在离散集合L中确定视频码率。
[0099] 误差q(tk)-qT是有界的。播放缓冲区的长度保持在目标阈值qT左右。此外,控制器在稳定状态下选择的码率,在满足可用带宽条件下应尽可能最大。
[0100] 函数Q实现如下:
[0101]
[0102] 所述网络带宽估计器用于计算网络可用带宽估计值,例如,对上一个视频分片的下载速率执行低通滤波。使用EWMA
滤波器,通过以下公式计算:
[0103]
[0104] 其中,α为0到1的常量;Dk-1为k-1分片的字节大小;Dk-1/ΔTk-1代表的是分片(k-1)的下载速率。
[0105] 所述网络可用带宽值还可以通过以下方法计算:
[0106]
[0107] 其中,r(tk)为在时刻tk的网络可用带宽的估计值,tk=tk-1+ΔT为第k次的采样时间;q(tk)为第k次采样时间播放缓冲区的长度;b(tk-1)为在第k-1次采样间隔后控制器所计算的实时编码码率;d(tk-1)为一个布尔变量,当视频播放时为1,未播放时为0。
[0108] 2)向视频服务器发出分片请求,请求下一个要发送的分片和分片的视频等级。
[0109] 所述分片请求通过使用特定的应用层协议发送到视频服务器。应用层协议包括超文本传输协议(HTTP)、实时流协议(RTSP)、实时消息协议(RTMP)。
[0110] 所述步骤2)主要通过分片调度处理单元来实现,如图2所示,具体包括以下步骤:
[0111] 分片调度器检测视频流传输是否完成,若完成则停止分片调度器,若没有完成,则d d当第k个视频分片在时刻tk传输完成后,准备向视频服务器请求在时刻tk+1=tk+pk发送第k+1个分片;tk表示客户端请求分片k的请求时间;tkd表示的是分片k的传输完成的时间。
[0112] 读取当前视频的实时编码码率b(tkd)及播放缓冲区的长度q(tkd);
[0113] 当b(tkd)小于最大编码码率(Bmax或lN)或者q(tkd)小于最大阈值Qmax时,分片调度器d d在时刻tk以码率b(tk)向视频服务器请求第k+1个分片;分片调度器为“正常”模式。
[0114] 当b(tkd)大于或等于最大编码码率,并且播放缓冲区长度q(tkd)大于或等于最大阈值Qmax时,分片调度器计算暂停,间隔时间X,在X秒后发送新的分片请求,分片调度器为“开关”模式。
[0115] 图3显示了分片调度器的视频分片请求流程:每个分片用一个方块表示,方块标有分片的序号。例如,方块301表示序号为1的分片,方块302表示序号为2的分片等。
[0116] 显示了两种可能的操作模式,即分段调度的“正常”模式和“开关”模式。两种模式的交替次数不仅取决于端到端的可用带宽,也取决于播放缓冲区的长度以及由控制器计算出的编码码率。
[0117] 图3所示的示例中,第一个操作模式:正常模式,以对分片1(301)的请求为开始,以对分片n(303)的请求为结束;第二个操作模式:开关模式,以对分片n+1(304)的请求为开始并且一直持续。下面详细描述每一种分片操作模式。
[0118] 正常:在上一分片被下载完成后立即开始新分片的请求;其中tk=tk-1d。
[0119] 开关:在一个“空闲时期”后开始新的分片请求;当分片调度器处于开关模式时,其中tk=tk-1d+pk,pk≥0,pk指的是分片k的空闲时间。
[0120] 分片调度器的工作机制避免了开关模式,假设队列长度小于Qmax,编码比特率低于最大值lN。开关模式只有当视频质量能达到最大(因为计算机编码码率等于lN),或者当播放缓冲区存储了大量的视频分片时才存在。可以说,当系统的性能最大时开关模式才有出现的可能。要注意的是,所述两个条件有一个不成立时,比如可用带宽的临时减少,“正常”模式才会被重新建立。
[0121] 例如,当b(tkd)大于或等于最大编码码率,并且播放缓冲区长度q(tkd)大于或等于最大阈值Qmax时,分片调度器此时工作在开关状态下,并且此时控制器计算的编码码率等于最大码率值lN。此外,假设tkd表示分片k被分片调度器调用直到下载完成时的所用时间。
[0122] 以分片k的下载完成时间tkd到以码率lN请求分片(k+1)整个过程来计算空闲时间pk,计算采用以下公式:
[0123] pk=max(Tk-ΔTkd,0)
[0124] Tk表示分片k的下载持续时间,ΔTkd=tkd-tk是分片k的下载时间。
[0125] 3)视频服务器将相应等级的视频分片发送给客户端。客户端接收到的分片将其存储在播放缓冲区,通过带宽估计器去计算新的网络估计带宽估计值r(t),重复上述步骤。
[0126] 本发明所述方法所使用的协议包括但不限于传输控制协议(TCP)、户数据报协议(UDP)和数据报拥塞控制协议(DCCP)。
[0127] 一种自适应视频编码控制系统及方法适用于以下场景:
[0128]
视频点播(VOD):该系统需要准备事先录制的视频,如电影、电视剧等;
[0129] 视频直播:在这种情况下,视频内容由直播源如摄像机产生;典型场景有电视直播、视频会议、在线教学等;
[0130] 远程视频分发系统:主要包括高清视频和直播事件,以及在剧院和电影院播放的4K高清视频;
[0131] 视频
监控系统。互联网平台采用视频分发系统的商业平台有:YouTube直播,Netflix等。
[0132] 最后说明的是,以上优选实施例仅用以说明本发明的技术方案而非限制,尽管通过上述优选实施例已经对本发明进行了详细的描述,但本领域技术人员应当理解,可以在形式上和细节上对其做出各种各样的改变,而不偏离本发明
权利要求书所限定的范围。