分层编码方法、装置、设备及存储介质与流程
未命名
08-09
阅读:144
评论:0
1.本技术实施例涉及图像处理技术领域,尤其涉及一种分层编码方法、装置、设备及存储介质。
背景技术:
2.分层编码(svc)是视频编码的一种,将视频信号分成多层进行编码,得到多层码流,这多层码流之间存在依赖性,其中一个码流为基本层的码流,其他码流为增强层的码流。当带宽不足时只对基本层的码流进行传输和解码,但这时解码的视频质量不高。当带宽慢慢变大时,可以传输和解码增强层的码流来提高视频的解码质量。
3.目前为了适配不同网络情况,云服务器默认采用分层编码方式进行编码,且编码时使用的分层编码参数也是默认的。但是,在一些情况下采用默认的分层编码参数进行分层编码时,存在编码质量差的问题。
技术实现要素:
4.本技术提供一种分层编码方法、装置、设备及存储介质,以提高分层编码参数与终端设备和网络的适配性,进而提高编码效果。
5.第一方面,本技术提供一种分层编码方法,应用于云服务器,包括:
6.获取终端设备的解码能力信息,所述解码能力信息包括所述终端设备所包括的解码芯片类型;
7.根据所述解码芯片类型,在确定所述终端设备中存在支持分层解码方式的解码芯片时,对网络进行探测,得到所述网络的波动信息;
8.根据所述网络的波动信息和所述终端设备的解码能力信息,确定分层编码方式对应的参数,并使用所述分层编码方式对应的参数对目标视频进行编码。
9.第二方面,本技术提供一种分层编码装置,应用于云服务器,包括:
10.获取单元,用于获取终端设备的解码能力信息,所述解码能力信息包括所述终端设备所包括的解码芯片类型;
11.网络探测单元,用于根据所述解码芯片类型,在确定所述终端设备中存在支持分层解码方式的解码芯片时,对网络进行探测,得到所述网络的波动信息;
12.编码单元,用于根据所述网络的波动信息和所述终端设备的解码能力信息,确定分层编码方式对应的参数,并使用所述分层编码方式对应的参数对目标视频进行编码。
13.第三方面,提供了一种电子设备,包括:处理器和存储器,该存储器用于存储计算机程序,该处理器用于调用并运行该存储器中存储的计算机程序,以执行第一方面的方法。
14.第四方面,提供了一种计算机可读存储介质,用于存储计算机程序,该计算机程序使得计算机执行第一方面的方法。
15.第五方面,提供了一种芯片,用于实现上述第一方面中任一方面或其各实现方式中的方法。具体地,所述芯片包括:处理器,用于从存储器中调用并运行计算机程序,使得安
装有所述芯片的设备执行如上述第一方面中任一方面或其各实现方式中的方法。
16.第六方面,提供了一种计算机程序产品,包括计算机程序指令,所述计算机程序指令使得计算机执行上述第一方面中任一方面或其各实现方式中的方法。
17.第七方面,提供了一种计算机程序,当其在计算机上运行时,使得计算机执行上述第一方面中任一方面或其各实现方式中的方法。
18.综上,在本技术中,云服务器通过获取终端设备的解码能力信息,该解码能力信息包括终端设备所包括的解码芯片类型;根据解码芯片类型,在确定终端设备中存在支持分层解码方式的解码芯片时,对网络进行探测,得到网络的波动信息;根据网络的波动信息和终端设备的解码能力信息,确定分层编码方式对应的参数,并使用分层编码方式对应的参数对目标视频进行编码。即本技术实施例根据网络波动情况和终端设备的解码能力,选择最优的分层编码配置,进而提高编码质量。
附图说明
19.为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
20.图1为本技术实施例涉及的一种应用场景示意图;
21.图2是本技术实施例提供的视频编码器的示意性框图;
22.图3是本技术实施例提供的视频解码器的示意性框图;
23.图4为本技术一实施例提供的分层编码方法的流程图;
24.图5为本技术一实施例涉及的编码参考帧数量的示意图;
25.图6为本技术另一实施例涉及的编码参考帧数量的示意图;
26.图7为本技术一实施例提供的分层编码方法的流程图;
27.图8为本技术一实施例提供的分层编码方法的交互流程图;
28.图9为本技术一实施例提供的分层编码装置的结构示意图;
29.图10是本技术实施例提供的电子设备的示意性框图。
具体实施方式
30.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
31.需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具备”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或服务器不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产
品或设备固有的其它步骤或单元。
32.首先对本技术实施例涉及的相关概念进行介绍:
33.帧率:帧率是图像领域中的定义,是指画面每秒传输帧数,通俗来讲就是指动画或视频的画面数。帧率越大,画面越流畅。
34.分层编码(svc):是视频编码的一种,该技术把视频信号编码成分层的形式,当带宽不足时只对基本层的码流进行传输和解码,但这时解码的视频质量不高。当带宽慢慢变大时,可以传输和解码增强层的码流来提高视频的解码质量。
35.基本层:位于基本层的视频帧是分层编码中不可丢弃的视频帧,会作为后续视频帧的参考,如果丢弃会导致解码失败或花屏。
36.增强层:位于增强层的视频帧是分层编码中可以随意丢弃的视频帧,不会作为后续视频帧的参考,如果丢弃对于支持svc的解码器没有影响。
37.图1为本技术实施例涉及的一种应用场景示意图,包括云服务器101和终端设备102。其中,云服务器101可以理解为编码设备,终端设备102可以理解为解码设备。
38.其中,云服务器101用于对视频数据进行编码(可以理解成压缩)产生码流,并将码流传输给终端设备102。
39.本技术实施例的云服务器101可以理解为具备视频编码功能的设备,终端设备102可以理解为具备视频解码功能的设备,即本技术实施例对云服务器101和终端设备102包括更广泛的装置,例如包含智能手机、台式计算机、移动计算装置、笔记本(例如,膝上型)计算机、平板计算机、机顶盒、电视、相机、显示装置、数字媒体播放器、视频游戏控制台、车载计算机等。
40.在一些实施例中,云服务器101可以经由信道103将编码后的视频数据(如码流)传输给终端设备102。信道103可以包括能够将编码后的视频数据从云服务器101传输到终端设备102的一个或多个媒体和/或装置。
41.在一个实例中,信道103包括使云服务器101能够实时地将编码后的视频数据直接发射到终端设备102的一个或多个通信媒体。在此实例中,云服务器101可根据通信标准来调制编码后的视频数据,且将调制后的视频数据发射到终端设备102。其中通信媒体包含无线通信媒体,例如射频频谱,可选的,通信媒体还可以包含有线通信媒体,例如一根或多根物理传输线。
42.在另一实例中,信道103包括存储介质,该存储介质可以存储云服务器101编码后的视频数据。存储介质包含多种本地存取式数据存储介质,例如光盘、dvd、快闪存储器等。在该实例中,终端设备102可从该存储介质中获取编码后的视频数据。
43.在另一实例中,信道103可包含存储服务器,该存储服务器可以存储云服务器101编码后的视频数据。在此实例中,终端设备102可以从该存储服务器中下载存储的编码后的视频数据。可选的,该存储服务器可以存储编码后的视频数据且可以将该编码后的视频数据发射到终端设备102,例如web服务器(例如,用于网站)、文件传送协议(ftp)服务器等。
44.一些实施例中,云服务器101包含视频编码器及输出接口。其中,输出接口可以包含调制器/解调器(调制解调器)和/或发射器。
45.在一些实施例中,云服务器101除了包括视频编码器和输入接口外,还可以包括视频源。
46.视频源可包含视频采集装置(例如,视频相机)、视频存档、视频输入接口、计算机图形系统中的至少一个,其中,视频输入接口用于从视频内容提供者处接收视频数据,计算机图形系统用于产生视频数据。
47.视频编码器对来自视频源的视频数据进行编码,产生码流。视频数据可包括一个或多个图像(picture)或图像序列(sequence of pictures)。码流以比特流的形式包含了图像或图像序列的编码信息。编码信息可以包含编码图像数据及相关联数据。相关联数据可包含序列参数集(sequence parameter set,简称sps)、图像参数集(picture parameter set,简称pps)及其它语法结构。sps可含有应用于一个或多个序列的参数。pps可含有应用于一个或多个图像的参数。语法结构是指码流中以指定次序排列的零个或多个语法元素的集合。
48.视频编码器经由输出接口将编码后的视频数据直接传输到终端设备102。编码后的视频数据还可存储于存储介质或存储服务器上,以供终端设备102后续读取。
49.在一些实施例中,终端设备102包含输入接口和视频解码器。
50.在一些实施例中,终端设备102除包括输入接口和视频解码器外,还可以包括显示装置。
51.其中,输入接口包含接收器及/或调制解调器。输入接口可通过信道接收编码后的视频数据。
52.视频解码器用于对编码后的视频数据进行解码,得到解码后的视频数据,并将解码后的视频数据传输至显示装置。
53.显示装置显示解码后的视频数据。显示装置可与终端设备整合或在终端设备外部。显示装置可包括多种显示装置,例如液晶显示器(lcd)、等离子体显示器、有机发光二极管(oled)显示器或其它类型的显示装置。
54.可选的,云服务器101可以是一台或多台。云服务器101是多台时,存在至少两台服务器用于提供不同的服务,和/或,存在至少两台服务器用于提供相同的服务,比如以负载均衡方式提供同一种服务,本技术实施例对此不加以限定。
55.可选的,上述云服务器101可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、cdn(content delivery network,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器。云服务器101也可以成为区块链的节点。
56.在一些实施例中,上述云服务器101为拥有强大计算资源的云服务器,具备高度虚拟化,高度分布式的特点。
57.在一些实施例中,本技术可应用于图像编解码领域、视频编解码领域、硬件视频编解码领域、专用电路视频编解码领域、实时视频编解码领域等。例如,本技术的方案可结合至音视频编码标准(audio video coding standard,简称avs),例如,h.264/音视频编码(audio video coding,简称avc)标准,h.265/高效视频编码(high efficiency video coding,简称hevc)标准以及h.266/多功能视频编码(versatile video coding,简称vvc)标准。或者,本技术的方案可结合至其它专属或行业标准而操作,所述标准包含itu-th.261、iso/iecmpeg-1visual、itu-th.262或iso/iecmpeg-2visual、itu-th.263、iso/
iecmpeg-4visual,itu-th.264(还称为iso/iecmpeg-4avc),包含可分级视频编解码(svc)及多视图视频编解码(mvc)扩展。应理解,本技术的技术不限于任何特定编解码标准或技术。
58.下面对本技术实施例涉及的视频编码框架进行介绍。
59.图2是本技术实施例提供的视频编码器的示意性框图。应理解,该视频编码器200可用于对图像进行有损压缩(lossy compression),也可用于对图像进行无损压缩(lossless compression)。该无损压缩可以是视觉无损压缩(visually lossless compression),也可以是数学无损压缩(mathematically lossless compression)。
60.该视频编码器200可应用于亮度色度(ycbcr,yuv)格式的图像数据上。
61.例如,该视频编码器200读取视频数据,针对视频数据中的每帧图像,将一帧图像划分成若干个编码树单元(coding tree unit,ctu),在一些例子中,ctb可被称作“树型块”、“最大编码单元”(largest coding unit,简称lcu)或“编码树型块”(coding tree block,简称ctb)。每一个ctu可以与图像内的具备相等大小的像素块相关联。每一像素可对应一个亮度(luminance或luma)采样及两个色度(chrominance或chroma)采样。因此,每一个ctu可与一个亮度采样块及两个色度采样块相关联。一个ctu大小例如为128
×
128、64
×
64、32
×
32等。一个ctu又可以继续被划分成若干个编码单元(coding unit,cu)进行编码,cu可以为矩形块也可以为方形块。cu可以进一步划分为预测单元(prediction unit,简称pu)和变换单元(transform unit,简称tu),进而使得编码、预测、变换分离,处理的时候更灵活。在一种示例中,ctu以四叉树方式划分为cu,cu以四叉树方式划分为tu、pu。
62.视频编码器及视频解码器可支持各种pu大小。假定特定cu的大小为2n
×
2n,视频编码器及视频解码器可支持2n
×
2n或n
×
n的pu大小以用于帧内预测,且支持2n
×
2n、2n
×
n、n
×
2n、n
×
n或类似大小的对称pu以用于帧间预测。视频编码器及视频解码器还可支持2n
×
nu、2n
×
nd、nl
×
2n及nr
×
2n的不对称pu以用于帧间预测。
63.在一些实施例中,如图2所示,该视频编码器200可包括:预测单元210、残差单元220、变换/量化单元230、反变换/量化单元240、重建单元250、环路滤波单元260、解码图像缓存270和熵编码单元280。需要说明的是,视频编码器200可包含更多、更少或不同的功能组件。
64.可选的,在本技术中,当前块(current block)可以称为当前编码单元(cu)或当前预测单元(pu)等。预测块也可称为预测图像块或图像预测块,重建图像块也可称为重建块或图像重建图像块。
65.在一些实施例中,预测单元210包括帧间预测单元211和帧内估计单元212。由于视频的一个帧中的相邻像素之间存在很强的相关性,在视频编解码技术中使用帧内预测的方法消除相邻像素之间的空间冗余。由于视频中的相邻帧之间存在着很强的相似性,在视频编解码技术中使用帧间预测方法消除相邻帧之间的时间冗余,从而提高编码效率。
66.帧间预测单元211可用于帧间预测,帧间预测可以参考不同帧的图像信息,帧间预测使用运动信息从参考帧中找到参考块,根据参考块生成预测块,用于消除时间冗余;帧间预测所使用的帧可以为p帧和/或b帧,p帧指的是向前预测帧,b帧指的是双向预测帧。运动信息包括参考帧所在的参考帧列表,参考帧索引,以及运动矢量。运动矢量可以是整像素的或者是分像素的,如果运动矢量是分像素的,那么需要再参考帧中使用插值滤波做出所需
的分像素的块,这里把根据运动矢量找到的参考帧中的整像素或者分像素的块叫参考块。有的技术会直接把参考块作为预测块,有的技术会在参考块的基础上再处理生成预测块。在参考块的基础上再处理生成预测块也可以理解为把参考块作为预测块然后再在预测块的基础上处理生成新的预测块。
67.目前最常用的帧间预测方法包括:vvc视频编解码标准中的几何划分模式(geometric partitioning mode,gpm),以及avs3视频编解码标准中的角度加权预测(angular weighted prediction,awp)。这两种帧内预测模式在原理上有共通之处。
68.帧内估计单元212只参考同一帧图像的信息,预测当前码图像块内的像素信息,用于消除空间冗余。帧内预测所使用的帧可以为关键帧。
69.hevc使用的帧内预测模式有平面模式(planar)、dc和33种角度模式,共35种预测模式。vvc使用的帧内模式有planar、dc和65种角度模式,共67种预测模式。avs3使用的帧内模式有dc、plane、bilinear和63种角度模式,共66种预测模式。
70.在一些实施例中,帧内估计单元212可以采用帧内块复制技术和帧内串复制技术实现。
71.残差单元220可基于cu的像素块及cu的pu的预测块来产生cu的残差块。举例来说,残差单元220可产生cu的残差块,使得残差块中的每一采样具备等于以下两者之间的差的值:cu的像素块中的采样,及cu的pu的预测块中的对应采样。
72.变换/量化单元230可量化变换系数。变换/量化单元230可基于与cu相关联的量化参数(qp)值来量化与cu的tu相关联的变换系数。视频编码器200可通过调整与cu相关联的qp值来调整应用于与cu相关联的变换系数的量化程度。
73.反变换/量化单元240可分别将逆量化及逆变换应用于量化后的变换系数,以从量化后的变换系数重建残差块。
74.重建单元250可将重建后的残差块的采样加到预测单元210产生的一个或多个预测块的对应采样,以产生与tu相关联的重建图像块。通过此方式重建cu的每一个tu的采样块,视频编码器200可重建cu的像素块。
75.环路滤波单元260可执行消块滤波操作以减少与cu相关联的像素块的块效应。
76.在一些实施例中,环路滤波单元260包括去块滤波单元和样点自适应补偿/自适应环路滤波(sao/alf)单元,其中去块滤波单元用于去方块效应,sao/alf单元用于去除振铃效应。
77.解码图像缓存270可存储重建后的像素块。帧间预测单元211可使用含有重建后的像素块的参考图像来对其它图像的pu执行帧间预测。另外,帧内估计单元212可使用解码图像缓存270中的重建后的像素块来对在与cu相同的图像中的其它pu执行帧内预测。
78.熵编码单元280可接收来自变换/量化单元230的量化后的变换系数。熵编码单元280可对量化后的变换系数执行一个或多个熵编码操作以产生熵编码后的数据。
79.图3是本技术实施例提供的视频解码器的示意性框图。
80.如图3所示,视频解码器300包含:熵解码单元310、预测单元320、反量化/变换单元330、重建单元340、环路滤波单元350及解码图像缓存360。需要说明的是,视频解码器300可包含更多、更少或不同的功能组件。
81.视频解码器300可接收码流。熵解码单元310可解析码流以从码流提取语法元素。
作为解析码流的一部分,熵解码单元310可解析码流中的经熵编码后的语法元素。预测单元320、反量化/变换单元330、重建单元340及环路滤波单元350可根据从码流中提取的语法元素来解码视频数据,即产生解码后的视频数据。
82.在一些实施例中,预测单元320包括帧内预测单元322和帧间预测单元321。
83.帧内预测单元322可执行帧内预测以产生pu的预测块。帧内预测单元322可使用帧内预测模式以基于空间相邻pu的像素块来产生pu的预测块。帧内预测单元322还可根据从码流解析的一个或多个语法元素来确定pu的帧内预测模式。
84.帧间预测单元321可根据从码流解析的语法元素来构造第一参考图像列表(列表0)及第二参考图像列表(列表1)。此外,如果pu使用帧间预测编码,则熵解码单元310可解析pu的运动信息。帧间预测单元321可根据pu的运动信息来确定pu的一个或多个参考块。帧间预测单元321可根据pu的一个或多个参考块来产生pu的预测块。
85.反量化/变换单元330可逆量化(即,解量化)与tu相关联的变换系数。反量化/变换单元330可使用与tu的cu相关联的qp值来确定量化程度。
86.在逆量化变换系数之后,反量化/变换单元330可将一个或多个逆变换应用于逆量化变换系数,以便产生与tu相关联的残差块。
87.重建单元340使用与cu的tu相关联的残差块及cu的pu的预测块以重建cu的像素块。例如,重建单元340可将残差块的采样加到预测块的对应采样以重建cu的像素块,得到重建图像块。
88.环路滤波单元350可执行消块滤波操作以减少与cu相关联的像素块的块效应。
89.视频解码器300可将cu的重建图像存储于解码图像缓存360中。视频解码器300可将解码图像缓存360中的重建图像作为参考图像用于后续预测,或者,将重建图像传输给显示装置呈现。
90.视频编解码的基本流程如下:在编码端,将一帧图像划分成块,针对当前块,预测单元210使用帧内预测或帧间预测产生当前块的预测块。残差单元220可基于预测块与当前块的原始块计算残差块,即预测块和当前块的原始块的差值,该残差块也可称为残差信息。该残差块经由变换/量化单元230变换与量化等过程,可以去除人眼不敏感的信息,以消除视觉冗余。可选的,经过变换/量化单元230变换与量化之前的残差块可称为时域残差块,经过变换/量化单元230变换与量化之后的时域残差块可称为频率残差块或频域残差块。熵编码单元280接收到变化量化单元230输出的量化后的变化系数,可对该量化后的变化系数进行熵编码,输出码流。例如,熵编码单元280可根据目标上下文模型以及二进制码流的概率信息消除字符冗余。
91.在解码端,熵解码单元310可解析码流得到当前块的预测信息、量化系数矩阵等,预测单元320基于预测信息对当前块使用帧内预测或帧间预测产生当前块的预测块。反量化/变换单元330使用从码流得到的量化系数矩阵,对量化系数矩阵进行反量化、反变换得到残差块。重建单元340将预测块和残差块相加得到重建块。重建块组成重建图像,环路滤波单元350基于图像或基于块对重建图像进行环路滤波,得到解码图像。编码端同样需要和解码端类似的操作获得解码图像。该解码图像也可以称为重建图像,重建图像可以为后续的帧作为帧间预测的参考帧。
92.需要说明的是,编码端确定的块划分信息,以及预测、变换、量化、熵编码、环路滤
波等模式信息或者参数信息等在必要时携带在码流中。解码端通过解析码流及根据已有信息进行分析确定与编码端相同的块划分信息,预测、变换、量化、熵编码、环路滤波等模式信息或者参数信息,从而保证编码端获得的解码图像和解码端获得的解码图像相同。
93.上述是基于块的混合编码框架下的视频编解码器的基本流程,随着技术的发展,该框架或流程的一些模块或步骤可能会被优化,本技术适用于该基于块的混合编码框架下的视频编解码器的基本流程,但不限于该框架及流程。
94.在一些实施例中,本发明实施例可应用于各种场景,包括但不限于云技术(例如云游戏)、人工智能、智慧交通、辅助驾驶等。
95.在一些实施例中,本技术实施例的方法可以应用于端云协同编码。端云协同编码指一种云端和终端协同编码以压缩视频的方案。由于视频内容生产方(云端)和视频内容的消费方(终端)的计算能力是存在差异的,因此可以两端协同完成一件相对复杂的视频压缩任务,既可利用云端的资源和强大的计算能力(如编码能力),减少网络传输的数据量,也有效利用了终端的计算能力(如解码能力)。可用于云游戏等场景。
96.在一些实施例中,视频编码协同,根据智能终端的编解码能力,并结合游戏类型、用户网络类型,选择最优的编解码配置和编解码策略。
97.端云协同协议是指云服务器和智能终端进行数据交互的统一协议。
98.智能终端协同接口是指智能终端软硬件模块接口,通过该接口可以与智能终端有效交互,配置视频编码、渲染参数,获取硬件实时运行性能。
99.解码性能指在特定的解码协议下,对给定的视频尺寸,支持的最高解码帧率和单帧解码延时。视频尺寸定义如下:360p,576p,720p,1080p,2k,4k。视频帧率定义如下:30fps,40fps,50fps,60fps,90fps,120fps。
100.终端设备的视频分辨率和视频帧率的定义见表1、表2。
101.表1终端设备的视频分辨率定义
102.视频分辨率枚举定义360p0x1576p0x2720p0x41080p0x82k0x104k0x20
103.表2终端设备的视频分辨率和视频帧率的定义
104.[0105][0106]
可选的,终端设备所支持的解码性能以三元组形式给出,第一个元素是视频分辨率的枚举定义,第二个元素是视频帧率的枚举定义,第三个元素是视频分辨率和视频帧率下的单帧解码延时,如设备a的h264解码,在720p@60fps下的单帧解码延时是10ms,则表示为(4,8,10)。
[0107]
视频编码协同优化方案,是云服务器根据游戏类型、网络状况确定需要启用的编码功能集合,再通过智能终端上报的设备类型、编码能力,确定当前设备最优的编码配置。
[0108]
在一些实施例中,终端设备解码能力数据结构要求见表3。
[0109]
表3终端设备解码能力数据结构要求
[0110]
[0111][0112]
云服务器根据智能终端的解码能力,并结合游戏类型、用户网络情况,确定当前设备最优的解码协议、解码分辨率、视频帧率等编解码配置,以及视频编码参考帧数量、svc启用等编解码策略。
[0113]
下面通过一些实施例对本技术实施例的技术方案进行详细说明。下面这几个实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
[0114]
首先以编码端为例进行说明。
[0115]
图4为本技术一实施例提供的分层编码方法的流程图,该方法可以应用于图1所示的云服务器101或应用于图2所示的编码器。下面以执行主体为云服务器为例进行说明。
[0116]
如图4所示,本技术实施例的包括如下步骤:
[0117]
s401、获取终端设备的解码能力信息。
[0118]
本技术实施例的终端设备可以理解为解码设备,该终端设备包括至少一个解码芯片,在一些实施例中,解码芯片也称为解码器。终端设备接收到码流后,终端设备中的解码芯片对码流进行解码,得到对应的视频。
[0119]
目前针对不用的网络和不同的终端设备,均采用默认的分层编码参数进行分层编码,由于编码层数越高,编码效率越低质量越差,在不同网络情况和终端设备性能下都使用默认的分层编码配置,可能不是最优的,会导致编码质量降低的问题。
[0120]
为了解码上述技术问题,本技术实施例根据网络波动情况和终端设备的解码能力,选择最优的分层编码配置,进而提高编码质量。
[0121]
终端设备的解码能力信息包括终端设备所包括的解码芯片类型,例如h264解码芯片和hevc解码芯片等。有些解码芯片支持分层解码方式,即具备对经过分层编码方式编码得到的码流进行分层解码的能力。有些解码芯片不支持分层解码方式,即不具备对经过分层编码方式编码得到的码流进行分层解码的能力。
[0122]
本技术实施例可以通过解码芯片类型,确定该解码芯片是否支持分层解码方式。
[0123]
在一些实施例中,终端设备的解码能力信息除了上述解码芯片类型外,还可以包括终端设备支持的最大解码参考帧数量。
[0124]
在一些实施例中,最大解码参考帧数量也称为终端设备支持的最大解码参考缓冲大小。例如,终端设备支持的最大解码参考帧数量为m时,则表示终端设备支持的最大解码参考缓冲中最大可以缓冲m张参考帧,也就是说,终端设备支持的最大解码参考缓冲大小为m。
[0125]
由上述可知,终端设备可能包括多个支持分层解码方式的解码芯片,且每一个解码芯片对应一个最大解码参考帧数量。本技术实施例,将终端设备中支持分层解码方式、且解码性能最优的解码芯片对应的最大解码参考帧数量确定为终端设备支持的最大解码参考帧数量。例如hevc的编码性能优于264,若终端设备同时包括支持分层解码方式的hevc解码芯片和264解码芯片,则优先选择hevc解码芯片作为最优的解码芯片,进而将hevc解码芯片对应的最大解码参考帧数量作为终端设备的最大解码参考帧数量。
[0126]
本技术实施例中获取终端设备的解码能力信息的方式包括但不限于如下几种:
[0127]
方式一,通过访问终端设备的硬件接口,获得终端设备的解码能力信息。
[0128]
方式二,向终端设备发送第一解码能力请求,并接收终端设备根据第一解码能力请求发送的第一响应信息,该第一解码能力请求用于请求终端设备的解码参数,该第一响应信息包括终端设备的解码能力信息。
[0129]
可选的,该解码信息包括终端设备所包括的所有解码芯片的类型,即包括支持分层解码方式的芯片类型和不支持分层解码方式的芯片类型。对应的,解码信息所包括的最大解码参考帧数量为所有解码芯片对应的最大解码参考帧数量。
[0130]
可选的,该解码信息包括终端设备中支持分层解码方式的芯片类型,不包括不支持分层解码方式的芯片类型。对应的,解码信息所包括的最大解码参考帧数量为支持分层解码方式的芯片对应的最大解码参考帧数量。
[0131]
方式三,若解码能力信息包括终端设备支持的最大解码参考帧数量,则本可以通过如下s401-a1至s401-a3的步骤获得终端设备支持的最大解码参考帧数量:
[0132]
s401-a1、向终端设备发送第二解码能力请求,该第二解码能力请求包括不同参考帧数目的视频码流,该第二解码能力请求用于请求终端设备关于不同参考帧数目的视频码流的解码结果;
[0133]
s401-a2、接收终端设备发送的第二响应信息,该第二响应信息包括终端设备关于不同参考帧数目的视频码流的解码结果;
[0134]
s401-a3、根据解码结果,确定终端设备支持的最大解码参考帧数量。
[0135]
该方式三中,云服务器向终端设备发送不同参考帧数目的视频码流,终端设备对这些不同参考帧数目的视频码流分别进行解码渲染,当终端设备支持的最大解码参考帧数量大于或等于视频码流的参考帧数目时,终端设备可以对该视频码流进行正常解码,当终端设备支持的最大解码参考帧数量小于视频码流的参考帧数目时,终端设备无法对该视频码流进行正常解码。这样可以通过判断终端设备能否正常对不同参考帧数目的视频码流进行解码(即是否出现错误提示/花屏),获取终端设备支持的最大解码参考帧数量。举例说明,云服务器将视频码流1和视频码流2发送终端设备,视频码流1的编码参考帧数目为6,视
频码流2的编码参考帧数目为7,终端设备可以对视频码流1进行正常解码,对视频码流2无法正常解码,进而可以确定终端设备支持的最大解码参考帧数量为6。
[0136]
本技术要求终端设备支持的最大解码参考帧数量大于或等于2。
[0137]
根据上述方法,获得终端设备的解码参考信息后,执行如下s402。
[0138]
s402、根据解码芯片类型,在确定终端设备中存在支持分层解码方式的解码芯片时,对网络进行探测,得到网络的波动信息。
[0139]
本技术实施例根据上述方法获得终端设备的解码能力信息,该解码能力信息包括终端设备所包括的解码芯片类型。根据终端设备所包括的解码芯片类型,首先判断终端设备中是否存在支持分层解码方式的解码芯片,当确定终端设备中不存在支持分层解码方式的解码芯片时,则确定不采用分层编码方式对当前待编码的目标视频进行编码。
[0140]
当确定终端设备中存在支持分层解码方式的解码芯片时,才对网络进行探测,得到当前网络的波动情况。
[0141]
本技术实施例以一段时间为网络探测窗口,例如以30秒为一个探测窗口,即每30秒统一几次网络的波动信息。
[0142]
本技术实施例对网络的波动信息不做限制。
[0143]
在一些实施例中,网络的波动信息包括当前探测窗口内所探测到的网络的波动次数、波动方差、关键帧(例如i帧)申请数目、最大波动值、最小波动值中的至少一个。
[0144]
需要说明的是,本技术实施例中,最大波动值和最小波动值并不是网络在当前探测窗口内偶尔一次或几次达到的最大波动值和最小波动值,而是在当前探测窗口内达到某最大波动值的次数大于第一预设次数时,将该最大波动值记为网络的最大波动值。同理,在当前探测窗口内达到某最小波动值的次数大于第二预设次数时,将该最小波动值记为网络的最大波动值。可选的,第一预设次数和第二预设次数相同。
[0145]
s403、根据网络的波动信息和终端设备的解码能力信息,确定分层编码方式对应的参数,并使用分层编码方式对应的参数对目标视频进行编码。
[0146]
本技术实施例,在对目标视频进行编码之前,首先获得终端设备的解码信息和网络的波动信息,进而根据终端设备的解码信息和网络的波动信息,确定分层编码方式对应的参数,得到适配终端设备的解码能力和网络波动情况的分层编码参数。使用该与终端设备的解码能力和网络的波动情况适配的分层编码参数进行编码时,可以提高编码质量。
[0147]
在一些实施例中,在执行上述s403之前,还需要根据网络的波动信息确定是否使用分层编码方式对目标视频进行编码。在确定使用分层编码方式对目标视频进行编码时,才执行上述s403的步骤,根据网络的波动信息和终端设备的解码能力信息,确定分层编码方式对应的参数,并使用分层编码方式对应的参数对目标视频进行编码。
[0148]
即在s403之前,本技术实施例的方法还包括如下步骤a:
[0149]
步骤a,根据网络的波动信息,确定是否使用分层编码方式对目标视频进行编码。
[0150]
由于分层编码方式编码过程复杂,编码效率低,且在网络较稳定时,云服务器将分层编码方式得到的所有码流均发送给终端设备,而分层编码方式对应的所有码流的大小(例如30fps)与非分层编码方式得到的码流大小相同。由此可知,在网络稳定时,不采用分层编码方式,以降低编码复杂度,在网络不稳定时,才采用分层编码方式。
[0151]
上述步骤a的实现方式包括但不限于如下几种:
[0152]
方式一,若波动信息包括所述网络的波动次数、波动方差、波动最大值和波动最小值中的至少一个,则上述步骤a包括如下步骤:
[0153]
步骤a-11、若网络的波动次数、波动方差、最大波动值和最小波动值中的至少一个大于或等于对应的预设阈值时,则确定采用分层编码方式对目标视频进行编码。
[0154]
步骤a-12、若网络的波动次数、波动方差、最大波动值和最小波动值均小于对应的预设阈值时,则确定不采用分层编码方式对目标视频进行编码。
[0155]
该方式一中,当网络的波动次数、波动方差、最大波动值和最小波动值中的至少一个大于或等于对应的预设阈值时,说明当前网络不稳定,此时确定采用分层编码方式对目标视频进行编码。
[0156]
例如,在当前探测窗口内,网络的波动次数大于或等于波动次数对应的预设阈值,和/或网络的波动方差大于或等于波动方差对应的预设阈值,和/或网络的最大波动值大于或等于最大波动值对应的预设阈值,和/或网络的最小波动值大于或等于最小波动值对应的预设阈值时,确定采用分层编码方式对目标视频进行编码。
[0157]
在当前探测窗口内,若网络的波动次数、波动方差、最大波动值和最小波动值均小于对应的预设阈值时,说明当前网络稳定,则确定不采用分层编码方式对目标视频进行编码。
[0158]
例如,若波动信息包括网络的波动次数和波动方差,则当网络的波动次数小于波动次数对应的预设阈值,且网络的波动方差小于波动方差对应的预设阈值时,说明当前网络稳定,此时确定不采用分层编码方式对目标视频进行编码。
[0159]
再例如,若波动信息包括网络的波动次数、波动方差和最大波动值,则当网络的波动次数小于波动次数对应的预设阈值,且网络的波动方差小于波动方差对应的预设阈值,且网络的最大波动值小于最大波动值对应的预设阈值时,说明当前网络稳定,此时确定不采用分层编码方式对目标视频进行编码。
[0160]
也就是说,若网络的波动信息包括网络的波动次数、波动方差、最大波动值和最小波动值中的一个或多个时,当这一个或多个均小于对应的预设阈值时,说明当前网络稳定,确定不采用分层编码方式对目标视频进行编码。
[0161]
方式二,若波动信息包括网络的关键帧申请数目时,则上述步骤a包括如下步骤:
[0162]
步骤a-21、若当前探测窗口内所探测的关键帧申请数目,与上一个探测窗口所探测的关键帧申请数目的差值大于或等于预设值,则确定采用分层编码方式对目标视频进行编码;
[0163]
步骤a-22、若当前探测窗口内所探测的关键帧申请数目,与上一个探测窗口所探测的关键帧申请数目的差值小于预设值,则确定不采用分层编码方式对目标视频进行编码。
[0164]
本技术实施例对上述预设值的具体取值不做限制,只要是大于0的数值即可。可选的,上述预设值还可以为固定阈值。
[0165]
在该方式二中,若在当前探测窗口内探测到当申请关键帧数量明显增加,说明此时网络出现了卡顿拥塞,可以判断当前网络环境状态不稳定,准备自动开启分层编码,否则视为正常的网络环境,无需开启分层编码,继续监控网络波动情况。
[0166]
具体是,将当前探测窗口内所探测的关键帧申请数目a与上一个探测窗口所探测
的关键帧申请数目b进行比较,若当前探测窗口内所探测的关键帧申请数目a与上一个探测窗口所探测的关键帧申请数目b的差值大于或等于预设值,说明当前网络不稳定,确定采用分层编码方式对目标视频进行编码。若当前探测窗口内所探测的关键帧申请数目a与上一个探测窗口所探测的关键帧申请数目b的差值小于预设值,说明当前网络稳定,确定不采用分层编码方式对目标视频进行编码。
[0167]
本技术实施例,通过对网络状态的实时探测来自动控制分层编码方式的开启与关闭,进而实现分层编码模式的自适应选择,提高编码质量和效率。
[0168]
本技术实施例在根据网络的波动信息,确定采用分层编码方式对目标视频进行编码时,执行上述s403的步骤。
[0169]
在一些实施例中,若终端设备的解码能力信息还包括所述终端设备支持的最大解码参考帧数量,所述分层编码方式对应的参数包括分层数量,则上述s403包括如下s403-a1和s403-a2的步骤:
[0170]
s403-a1、根据网络的最小波动值和网络的稳定值,确定分层编码方式对应的初始分层数量。
[0171]
本技术实施例中,根据上述步骤判断当前网络环境状态不稳定,需要开启分层编码时,根据网络波动情况的探测结果,即网络的波动信息,确定分层编码方式对应的初始层数。具体是,根据网络的最小波动值和网络的稳定值,确定分层编码方式对应的初始分层数量。
[0172]
本技术实施例对根据网络的最小波动值和网络的稳定值,确定分层编码方式对应的初始分层数量的方式不做限制。
[0173]
在一种可能的实现方式中,将网络的稳定值与网络的最小波动值之间的比值进行取整后的值,确定为分层编码方式对应的初始分层数量。例如,网络的稳定值与网络的最小波动值之间的比值为2,则确定分层编码方式对应的初始分层数量为2。
[0174]
在另一种可能的实现方式中,若网络的最小波动值大于或等于稳定值与n的比值,且小于稳定值与n-1的比值,则确定分层编码方式对应的初始分层数量为n,其中,n为大于1的正整数。
[0175]
例如,网络的最小波动值》=网络稳定值/2,说明最差的网络环境是缩小一半带宽,即需要丢弃一半的视频帧以保证数据流畅传输,此时采用双层分层编码即可实现,即一半的视频帧位于基础层,不可以丢弃,另一半的视频帧位于增强层,可以根据网络情况灵活丢弃。
[0176]
再例如,网络稳定值/2》网络的最小波动值》=网络稳定值/3,说明最差的网络环境是接近于缩小2/3带宽,即需要丢弃2/3的视频帧以保证数据流畅传输,此时采用三层分层编码即可实现,即1/3的视频帧位于基础层,不可以丢弃,2/3的视频帧位于增强层,可以根据网络情况灵活丢弃。
[0177]
由于分层编码方式对应的分层数量越大,编码效率和质量越低,为了保证编码效率和编码视频的画质质量,则分层数量不能太大,即上述n不能超过预设值。
[0178]
也就是说,根据上述方法确定的分层编码方式对应的初始分层数量n大于预设值时,说明网络波动较明显,此时,云服务器可以先降低当前的编码帧率,即将当前的编码帧率设置为预设编码帧率,该预设编码帧率小于当前的编码帧率,再应用本技术实施例提供
的自适应分层编码策略,以保证编码视频的画质。
[0179]
本技术实施例的方法,可以根据网络情况,自适应选择分层数量,以适应不同的网络抖动或网络拥塞情况,提供不同数量的可丢弃帧。
[0180]
s403-a2、根据初始分层数量和最大解码参考帧数量,确定分层编码方式对应的最终分层数量。
[0181]
上述确定的初始分层数量考虑了网络的波动情况,但未考虑终端设备的解码性能,直接使用上述确定的初始分层数量进行分层编码时,可能存在终端设备的解码能力不符合初始分层数量要求。
[0182]
为了解决该计算问题,本技术实施例根据终端设备的最大解码参考帧数量对上述确定的初始分层数量进行调整,得到分层编码方式对应的最终分层数量。
[0183]
也就是说,云服务器可以根据终端设备的解码能力选择合适的分层数量,充分利用终端设备的解码能力,提升分层编码的质量。
[0184]
本技术实施例中根据初始分层数量和最大解码参考帧数量,确定分层编码方式对应的最终分层数量的方式包括但不限于如下几种:
[0185]
方式一,若最大解码参考帧数量大于或等于初始分层数量,则将初始分层数量确定为最终分层数量。
[0186]
若最大解码参考帧数量大于或等于初始分层数量,则说明终端设备的解码能力足够对初始分层数量编码后的码流进行解码,因此,可以将上述确定的初始分层数量确定为最终分层数量。
[0187]
方式二,若最大解码参考帧数量小于初始分层数量,则将最大解码参考帧数量确定为最终分层数量。
[0188]
在该方式二中,若终端设备的最大解码参考帧数量小于初始分层数量,说明终端设备的解码能力无法对初始分层数量编码后的码流进行正确解码。此时,需要对上述确定的初始分层数量进行调整,例如将初始分层数量调整为小于或等于终端设备的最大解码参考帧数量的层数,将该调整后的数值确定为分层编码方式对应的最终分层数量。
[0189]
在一种可能的实现方式中,若最大解码参考帧数量小于初始分层数量,则直接将最大解码参考帧数量确定为最终分层数量。
[0190]
例如,对于双层编码,要求终端设备的最大解码参考帧数量》=2,对于三层编码,要求终端设备的最大解码参考帧数量》=3,以此类推。若终端设备的最大解码参考帧数量不符合上述确定的初始分层数量要求,例如初始分层数量为3,但是终端设备的最大解码参考帧数量为2,则自动降低初始分层数量至最大解码参考帧数量对应支持的配置,即确定的最终分层数量为2。
[0191]
本技术实施例,可以根据网络的最小波动值和终端设备的最大解码参考帧数量,确定分层编码方式对应的最终分层数量,这样在对目标视频进行编码时,可以采用该最终分层数量对目标视频进行编码,得到分层编码的码流。终端设备接收到该分层编码的码流时,可以实现对该码流的准确解码,进而提高视频的编解码质量。
[0192]
在一些实施例中,若分层编码方式对应的参数包括编码参考帧数量时,则上述s403包括如下s403-b:
[0193]
s403-b、根据最终分层数量和最大解码参考帧数量,确定编码参考帧数量。
[0194]
本技术实施例中,若分层编码方式对应的参数包括编码参考帧数量时,则可以根据上述确定的分层编码方式对应的最终分层数量和终端设备的最大解码参考帧数量,确定编码参考帧数量。即本技术实施例,当终端设备出现解码速度过慢的现象,可以通过丢弃增强帧进行缓解。
[0195]
上述s403-b的实现方式包括但不限于如下几种:
[0196]
方式一,若在分层编码方式未开始时,确定编码参考帧数量为小于最大解码参考帧数量的正整数。若分层编码方式开启时,确定编码参考帧数量为小于或等于最大解码参考帧数量与最终分层数量之间的比值的正整数。
[0197]
示例性的,对于双层编码,在不开启svc时,编码参考帧数目《=最大解码参考帧数量,在开启svc时,需重置编码器并调整设置编码参考帧数目《=(最大解码参考帧数量/2)。
[0198]
由于增加参考帧数目可以提升编码质量,因此在综合外部因素影响以及考虑编码时间消耗等其他原因,开启/不开启svc时都建议参考帧数目尽量大。例如,终端设备的最大解码参考帧缓冲区大小为4帧,则在不开启svc时,推荐编码参考帧数目设置为4帧,在开启svc时,推荐编码参考帧数目为2帧,具体的参考关系如图5,其中灰色帧为可丢弃的增强帧。
[0199]
对于三层编码,在不开启svc时,编码参考帧数目《=最大解码参考帧数量,在开启svc时,需重置编码器并调整设置编码参考帧数目《=(最大解码参考帧数量/3)。例如,终端设备的最大解码参考帧数量为6帧,则在不开启svc时,编码参考帧数目最多设置为6帧,在开启svc时,编码参考帧数目最多设置为2帧,具体的参考关系如图6,其中灰色帧为可丢弃的增强帧。
[0200]
方式二,若在分层编码方式开启和未开启时,确定编码参考帧数量均为小于或等于最大解码参考帧数量与最终分层数量之间的比值的正整数。这样在临时开启svc时可以不用重置编码器,只需要修改参考帧关系即可。
[0201]
需要说明的是,上述方式一和方式二只是确定编码参考帧一种实现方式,多帧分层编码的实现方法具有多样性,本技术实施例只要保证可丢弃帧(不被基础层帧参考)的数量符合编码要求,且参考帧和当前帧的最远距离《=解码参考帧最大缓冲区即可。
[0202]
由上述可知,本技术实施例,可以根据网络情况灵活自动开启/关闭分层编码,并且自适应选择分层数量,以适应不同的网络抖动或网络拥塞情况,提供不同数量的可丢弃帧。
[0203]
另外,云服务器可以根据终端设备的解码能力选择合适的分层数量,充分利用终端设备的解码能力,提升分层编码的质量。当终端出现解码速度过慢的现象,可以通过丢弃增强帧进行缓解。
[0204]
本技术实施例提供的分层编码方法,云服务器通过获取终端设备的解码能力信息,该解码能力信息包括终端设备所包括的解码芯片类型;根据解码芯片类型,在确定终端设备中存在支持分层解码方式的解码芯片时,对网络进行探测,得到网络的波动信息;根据网络的波动信息和终端设备的解码能力信息,确定分层编码方式对应的参数,并使用分层编码方式对应的参数对目标视频进行编码。即本技术实施例根据网络波动情况和终端设备的解码能力,选择最优的分层编码配置,进而提高编码质量。
[0205]
图7为本技术一实施例提供的分层编码方法的流程图,图7为本技术的一种具体实施例,包括:
[0206]
s701,获取终端设备的解码能力信息。
[0207]
其中,解码能力信息包括终端设备所包括的解码芯片类型。
[0208]
s702、判断终端设备中是否存在支持分层解码方式的解码芯片。
[0209]
若终端设备中存在支持分层解码方式的解码芯片,则执行如下s703,若终端设备中不存在支持分层解码方式的解码芯片时,则执行如下s706。
[0210]
s703、探测网络,得到网络的波动信息。
[0211]
其中,网络的波动信息包括当前探测窗口内所探测到的所述网络的波动次数、波动方差、关键帧申请数目、最大波动值、最小波动值中的至少一个。
[0212]
s704、判断网络波动是否严重。
[0213]
若判断当前网络波动严重,则执行如下s705,若判断当前网络波动不严重,则返回执行上述s703,继续对网络进行监测。
[0214]
其中判断当前网络波动是否严重的过程可以参照上述步骤a的相关描述,在此不再赘述。
[0215]
若当前网络波动严重时,确定启动分层编码方式对目标视频进行编码。若当前网络波动不严重时,则不启动分层编码方式。
[0216]
s705、根据网络的波动信息和终端设备的最大解码参考帧数量,确定分层编码方式对应的最终分层数量和编码参考帧数量。
[0217]
s706、不支持分层编码方式。
[0218]
本技术实施例提供的分层编码方法,云服务器获取终端设备的解码能力信息和网络的波动信息,根据终端设备的解码能力信息和网络的波动信息,确定分层编码方式对应的最终分层数量和编码参考帧数量,充分考虑了网络情况和终端设备的解码能力,进而提高编码质量。
[0219]
图8为本技术一实施例提供的分层编码方法的交互流程图,图8为本技术的一种具体实施例,包括:
[0220]
s801、云服务器通过客户端向终端设备发送解码能力请求。
[0221]
情况1,上述解码能力请求为上述的第一解码能力请求,该第一解码能力请求用于请求终端设备的解码参数。也就是说,云服务器通过客户端向终端设备发送第一解码能力请求,终端设备接收到该第一解码能力请求后,通过客户端向云服务器发送第一响应信息,该第一响应信息包括终端设备的解码能力信息。
[0222]
情况2,若解码能力信息包括所述终端设备支持的最大解码参考帧数量,则上述解码能力请求可以为上述实施例中的第二解码能力请求,该第二解码能力请求用于请求所述终端设备关于所述不同参考帧数目的视频码流的解码结果,且该第二解码能力请求包括不同参考帧数目的视频码流。也就是说,云服务器通过客户端向终端设备发送第二解码能力请求,该第二解码能力请求包括不同参考帧数目的视频码流。终端设备接收到该第二解码能力请求后,解析该第二解码能力请求,得到不同参考帧数目的视频码流,并对不同参考帧数目的视频码流分别进行解码,得到终端设备关于不同参考帧数目的视频码流的解码结果。接着,终端设备通过客户端将终端设备关于不同参考帧数目的视频码流的解码结果发送给云服务器,云服务器根据终端设备关于不同参考帧数目的视频码流的解码结果,确定终端设备支持的最大解码参考帧数量。
[0223]
示例性的,云服务器通过start客户端向终端设备发起请求,获取终端设备解码能力信息。
[0224]
示例性的,解码能力请求的代码见表4所示:
[0225]
表4
[0226][0227]
在一些实施例中,若上述解码能力请求为上述的第二解码能力请求时,则该解码能力请求中还可以包括不同参考帧数目的视频码流。
[0228]
s802、终端设备通过客户端向云服务器返回响应信息。
[0229]
可选的,该响应信息可以为第一响应或第二响应。
[0230]
在一些实施例中,终端设备返回的响应信息可以包括如下几种示例。
[0231]
示例1,若终端设备支持所有解码协议,则返回的响应信息如表5所示:
[0232]
表5
[0233]
[0234][0235]
示例2,若终端设备只支持部分解码协议,则返回的响应信息如表6所示:
[0236]
表6
[0237]
[0238]
示例3,若终端设备不支持部分解码协议,则返回的响应信息如表7所示:
[0239]
表7
[0240][0241]
示例4,若终端设备能力信息请求失败,则返回的响应信息如表8所示:
[0242]
表8
[0243][0244]
需要说明的是,上述表4至表8为终端设备的响应信息中的一种示例,本技术实施例中,终端设备返回的响应信息的格式包括但不限于表4至表8所示。
[0245]
s803、云服务器确定终端设备的最优解码配置。
[0246]
本技术实施例中,云服务器收到终端渲染能力信息以后,确定当前终端设备最优的渲染协同配置,把协同任务发送到终端设备。
[0247]
云服务器收到终端解码能力信息以后,结合游戏类型、用户网络情况,确定当前终端设备最优的解码协议、解码分辨率、视频帧率、分层解码方式等编解码配置,以及视频编码参考帧数量、svc启用等编解码策略。
[0248]
可选的,云服务器还可以执行上述s804的步骤。
[0249]
s804、云服务器通过客户端向终端设备发送最优解码配置。
[0250]
云服务器将确定的终端设备的最优解码配置发送给终端设备,以使终端设备收到最优解码配置后,进行视频流的解码。
[0251]
应理解,图4至图8仅为本技术的示例,不应理解为对本技术的限制。
[0252]
以上结合附图详细描述了本技术的优选实施方式,但是,本技术并不限于上述实施方式中的具体细节,在本技术的技术构思范围内,可以对本技术的技术方案进行多种简单变型,这些简单变型均属于本技术的保护范围。例如,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合,为了避免不必要的重复,本技术对各种可能的组合方式不再另行说明。又例如,本技术的各种不同的实施方式之间也可以进行任意组合,只要其不违背本技术的思想,其同样应当视为本技术所公开
的内容。
[0253]
上文结合图4至图8,详细描述了本技术的方法实施例,下文详细描述本技术的装置实施例。
[0254]
图9为本技术一实施例提供的分层编码装置的结构示意图,该装置应用于云服务器,装置10包括:
[0255]
获取单元11,用于获取终端设备的解码能力信息,所述解码能力信息包括所述终端设备所包括的解码芯片类型;
[0256]
网络探测单元12,用于根据所述解码芯片类型,在确定所述终端设备中存在支持分层解码方式的解码芯片时,对网络进行探测,得到所述网络的波动信息;
[0257]
编码单元13,用于根据所述网络的波动信息和所述终端设备的解码能力信息,确定分层编码方式对应的参数,并使用所述分层编码方式对应的参数对目标视频进行编码。
[0258]
在一些实施例中,编码单元13,还用于根据所述网络的波动信息,确定是否使用所述分层编码方式对所述目标视频进行编码;在确定使用所述分层编码方式对目标视频进行编码时,根据所述网络的波动信息和所述终端设备的解码能力信息,确定所述分层编码方式对应的参数。
[0259]
在一些实施例中,所述网络的波动信息包括当前探测窗口内所探测到的所述网络的波动次数、波动方差、关键帧申请数目、最大波动值、最小波动值中的至少一个。
[0260]
在一些实施例中,若所述波动信息包括所述网络的波动次数、波动方差、波动最大值和波动最小值中的至少一个,则编码单元13,具体用于若所述网络的波动次数、波动方差、最大波动值和最小波动值中的至少一个大于或等于对应的预设阈值时,则确定采用所述分层编码方式对所述目标视频进行编码;若所述网络的波动次数、波动方差、最大波动值和最小波动值均小于对应的预设阈值时,则确定不采用所述分层编码方式对所述目标视频进行编码。
[0261]
在一些实施例中,若所述波动信息包括所述网络的关键帧申请数目时,则编码单元13,具体用于若所述当前探测窗口内所探测的所述关键帧申请数目,与上一个探测窗口所探测的关键帧申请数目的差值大于或等于预设值,则确定采用所述分层编码方式对所述目标视频进行编码;若所述当前探测窗口内所探测的所述关键帧申请数目,与所述上一个探测窗口所探测的关键帧申请数目的差值小于预设值,则确定不采用所述分层编码方式对所述目标视频进行编码。
[0262]
在一些实施例中,所述终端设备的解码能力信息还包括所述终端设备支持的最大解码参考帧数量,所述分层编码方式对应的参数包括分层数量,所述编码单元13,具体用于根据所述网络的最小波动值和所述网络的稳定值,确定所述分层编码方式对应的初始分层数量;根据所述初始分层数量和所述最大解码参考帧数量,确定所述分层编码方式对应的最终分层数量。
[0263]
在一些实施例中,编码单元13,具体用于若所述网络的最小波动值大于或等于所述稳定值与n的比值,且小于所述稳定值与n-1的比值,则确定所述分层编码方式对应的初始分层数量为n,所述n为大于1的正整数。
[0264]
可选的,若所述n大于预设值时,则编码单元13,还用于将当前的编码帧率设置为预设编码帧率,所述预设编码帧率小于所述当前的编码帧率。
[0265]
在一些实施例中,编码单元13,具体用于若所述最大解码参考帧数量大于或等于所述初始分层数量,则将所述初始分层数量确定为所述最终分层数量;若所述最大解码参考帧数量小于所述初始分层数量,则将所述最大解码参考帧数量确定为所述最终分层数量。
[0266]
在一些实施例中,所述分层编码方式对应的参数包括编码参考帧数量,编码单元13,具体用于根据所述最终分层数量和所述最大解码参考帧数量,确定编码参考帧数量。
[0267]
在一些实施例中,编码单元13,具体用于若所述分层编码方式开启时,确定所述编码参考帧数量为小于或等于所述最大解码参考帧数量与所述最终分层数量之间的比值的正整数;若所述分层编码方式未开启时,确定所述编码参考帧数量为小于或等于所述最大解码参考帧数量与所述最终分层数量之间的比值的正整数,或者,确定所述编码参考帧数量为小于所述最大解码参考帧数量的正整数。
[0268]
在一些实施例中,所述终端设备支持的最大解码参考帧数量为所述终端设备中支持所述分层解码方式、且解码性能最优的解码芯片对应的最大解码参考帧数量。
[0269]
在一些实施例中,获取单元11,具体用于通过访问所述终端设备的硬件接口,获得所述终端设备的解码能力信息;或者,获取单元11,具体用于向所述终端设备发送第一解码能力请求,并接收所述终端设备根据所述第一解码能力请求发送的第一响应信息,所述第一解码能力请求用于请求所述终端设备的解码参数,所述第一响应信息包括所述终端设备的解码能力信息。
[0270]
在一些实施例中,若所述解码能力信息包括所述终端设备支持的最大解码参考帧数量,则获取单元11,具体用于向所述终端设备发送第二解码能力请求,所述第二解码能力请求包括不同参考帧数目的视频码流,所述第二解码能力请求用于请求所述终端设备关于所述不同参考帧数目的视频码流的解码结果;接收所述终端设备发送的第二响应信息,所述第二响应信息包括所述终端设备关于所述不同参考帧数目的视频码流的解码结果;根据所述解码结果,确定所述终端设备支持的最大解码参考帧数量。
[0271]
应理解的是,装置实施例与方法实施例可以相互对应,类似的描述可以参照方法实施例。为避免重复,此处不再赘述。具体地,图9所示的装置20可以执行上述方法实施例,并且装置9中的各个模块的前述和其它操作和/或功能分别为了实现上述图4和图5所示的方法实施例,为了简洁,在此不再赘述。
[0272]
上文中结合附图从功能模块的角度描述了本技术实施例的装置。应理解,该功能模块可以通过硬件形式实现,也可以通过软件形式的指令实现,还可以通过硬件和软件模块组合实现。具体地,本技术实施例中的方法实施例的各步骤可以通过处理器中的硬件的集成逻辑电路和/或软件形式的指令完成,结合本技术实施例公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。可选地,软件模块可以位于随机存储器,闪存、只读存储器、可编程只读存储器、电可擦写可编程存储器、寄存器等本领域的成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法实施例中的步骤。
[0273]
图10是本技术实施例提供的电子设备的示意性框图,该电子设备可以为上述的终端设备和/或服务器。
[0274]
如图10所示,该电子设备40可包括:
[0275]
存储器41和存储器42,该存储器41用于存储计算机程序,并将该程序代码传输给该存储器42。换言之,该存储器42可以从存储器41中调用并运行计算机程序,以实现本技术实施例中的方法。
[0276]
例如,该存储器42可用于根据该计算机程序中的指令执行上述方法实施例。
[0277]
在本技术的一些实施例中,该存储器42可以包括但不限于:
[0278]
通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等等。
[0279]
在本技术的一些实施例中,该存储器41包括但不限于:
[0280]
易失性存储器和/或非易失性存储器。其中,非易失性存储器可以是只读存储器(read-only memory,rom)、可编程只读存储器(programmable rom,prom)、可擦除可编程只读存储器(erasable prom,eprom)、电可擦除可编程只读存储器(electrically eprom,eeprom)或闪存。易失性存储器可以是随机存取存储器(random access memory,ram),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的ram可用,例如静态随机存取存储器(static ram,sram)、动态随机存取存储器(dynamic ram,dram)、同步动态随机存取存储器(synchronous dram,sdram)、双倍数据速率同步动态随机存取存储器(double data rate sdram,ddr sdram)、增强型同步动态随机存取存储器(enhanced sdram,esdram)、同步连接动态随机存取存储器(synch link dram,sldram)和直接内存总线随机存取存储器(direct rambus ram,dr ram)。
[0281]
在本技术的一些实施例中,该计算机程序可以被分割成一个或多个模块,该一个或者多个模块被存储在该存储器41中,并由该存储器42执行,以完成本技术提供的方法。该一个或多个模块可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述该计算机程序在该视频制作设备中的执行过程。
[0282]
如图10所示,该电子设备40还可包括:
[0283]
收发器40,该收发器43可连接至该存储器42或存储器41。
[0284]
其中,存储器42可以控制该收发器43与其他设备进行通信,具体地,可以向其他设备发送信息或数据,或接收其他设备发送的信息或数据。收发器43可以包括发射机和接收机。收发器43还可以进一步包括天线,天线的数量可以为一个或多个。
[0285]
应当理解,该视频制作设备中的各个组件通过总线系统相连,其中,总线系统除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。
[0286]
本技术还提供了一种计算机存储介质,其上存储有计算机程序,该计算机程序被计算机执行时使得该计算机能够执行上述方法实施例的方法。或者说,本技术实施例还提供一种包含指令的计算机程序产品,该指令被计算机执行时使得计算机执行上述方法实施例的方法。
[0287]
当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行该计算机程序指令时,全部或部分地产生按照本技术实施例该的流程或功能。该计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。该计算机指令可以存储在计算机可读存储介质中,
或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,该计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。该计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。该可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如数字视频光盘(digital video disc,dvd))、或者半导体介质(例如固态硬盘(solid state disk,ssd))等。
[0288]
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的模块及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
[0289]
在本技术所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,该模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0290]
作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。例如,在本技术各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。
[0291]
以上内容,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以该权利要求的保护范围为准。
技术特征:
1.一种分层编码方法,其特征在于,包括:获取终端设备的解码能力信息,所述解码能力信息包括所述终端设备所包括的解码芯片类型;根据所述解码芯片类型,在确定所述终端设备中存在支持分层解码方式的解码芯片时,对网络进行探测,得到所述网络的波动信息;根据所述网络的波动信息和所述终端设备的解码能力信息,确定分层编码方式对应的参数,并使用所述分层编码方式对应的参数对目标视频进行编码。2.根据权利要求1所述的方法,其特征在于,在根据所述网络的波动信息和所述终端设备的解码能力信息,确定分层编码方式对应的参数之前,所述方法还包括:根据所述网络的波动信息,确定是否使用所述分层编码方式对所述目标视频进行编码。3.根据权利要求2所述的方法,其特征在于,所述网络的波动信息包括当前探测窗口内所探测到的所述网络的波动次数、波动方差、关键帧申请数目、最大波动值、最小波动值中的至少一个。4.根据权利要求3所述的方法,其特征在于,若所述波动信息包括所述网络的波动次数、波动方差、波动最大值和波动最小值中的至少一个,则所述根据所述网络的波动信息,确定是否采用分层编码方式对所述目标视频进行编码,包括:若所述网络的波动次数、波动方差、最大波动值和最小波动值中的至少一个大于或等于对应的预设阈值时,则确定采用所述分层编码方式对所述目标视频进行编码;若所述网络的波动次数、波动方差、最大波动值和最小波动值均小于对应的预设阈值时,则确定不采用所述分层编码方式对所述目标视频进行编码。5.根据权利要求3所述的方法,其特征在于,若所述波动信息包括所述网络的关键帧申请数目时,则所述根据所述网络的波动信息,确定是否采用分层编码方式对所述目标视频进行编码,包括:若所述当前探测窗口内所探测的所述关键帧申请数目,与上一个探测窗口所探测的关键帧申请数目的差值大于或等于预设值,则确定采用所述分层编码方式对所述目标视频进行编码;若所述当前探测窗口内所探测的所述关键帧申请数目,与所述上一个探测窗口所探测的关键帧申请数目的差值小于预设值,则确定不采用所述分层编码方式对所述目标视频进行编码。6.根据权利要求1-5任一项所述的方法,其特征在于,所述终端设备的解码能力信息还包括所述终端设备支持的最大解码参考帧数量,所述分层编码方式对应的参数包括分层数量,所述根据所述网络的波动信息和所述终端设备的解码能力信息,确定所述分层编码方式对应的参数,包括:根据所述网络的最小波动值和所述网络的稳定值,确定所述分层编码方式对应的初始分层数量;根据所述初始分层数量和所述最大解码参考帧数量,确定所述分层编码方式对应的最终分层数量。7.根据权利要求6所述的方法,其特征在于,所述根据所述网络的最小波动值和所述网
络的稳定值,确定所述分层编码方式对应的初始分层数量,包括:若所述网络的最小波动值大于或等于所述稳定值与n的比值,且小于所述稳定值与n-1的比值,则确定所述分层编码方式对应的初始分层数量为n,所述n为大于1的正整数。8.根据权利要求7所述的方法,其特征在于,若所述n大于预设值时,所述方法还包括:将当前的编码帧率设置为预设编码帧率,所述预设编码帧率小于所述当前的编码帧率。9.根据权利要求6所述的方法,其特征在于,所述根据所述初始分层数量和所述最大解码参考帧数量,确定所述分层编码方式对应的最终分层数量,包括:若所述最大解码参考帧数量大于或等于所述初始分层数量,则将所述初始分层数量确定为所述最终分层数量;若所述最大解码参考帧数量小于所述初始分层数量,则将所述最大解码参考帧数量确定为所述最终分层数量。10.根据权利要求6所述的方法,其特征在于,所述分层编码方式对应的参数包括编码参考帧数量,所述根据所述网络的波动信息和所述终端设备的解码能力信息,确定所述分层编码方式对应的参数,包括:根据所述最终分层数量和所述最大解码参考帧数量,确定编码参考帧数量。11.根据权利要求10所述的方法,其特征在于,所述根据所述最终分层数量和所述最大解码参考帧数量,确定编码参考帧数量,包括:若所述分层编码方式开启时,确定所述编码参考帧数量为小于或等于所述最大解码参考帧数量与所述最终分层数量之间的比值的正整数;若所述分层编码方式未开启时,确定所述编码参考帧数量为小于或等于所述最大解码参考帧数量与所述最终分层数量之间的比值的正整数,或者,确定所述编码参考帧数量为小于所述最大解码参考帧数量的正整数。12.根据权利要求6所述的方法,其特征在于,所述终端设备支持的最大解码参考帧数量为所述终端设备中支持所述分层解码方式、且解码性能最优的解码芯片对应的最大解码参考帧数量。13.根据权利要求1-5任一项所述的方法,其特征在于,所述获取终端设备的解码能力信息,包括:通过访问所述终端设备的硬件接口,获得所述终端设备的解码能力信息;或者,向所述终端设备发送第一解码能力请求,并接收所述终端设备根据所述第一解码能力请求发送的第一响应信息,所述第一解码能力请求用于请求所述终端设备的解码参数,所述第一响应信息包括所述终端设备的解码能力信息。14.根据权利要求1-5任一项所述的方法,其特征在于,若所述解码能力信息包括所述终端设备支持的最大解码参考帧数量,则所述获取终端设备的解码能力信息,包括:向所述终端设备发送第二解码能力请求,所述第二解码能力请求包括不同参考帧数目的视频码流,所述第二解码能力请求用于请求所述终端设备关于所述不同参考帧数目的视频码流的解码结果;接收所述终端设备发送的第二响应信息,所述第二响应信息包括所述终端设备关于所述不同参考帧数目的视频码流的解码结果;
根据所述解码结果,确定所述终端设备支持的最大解码参考帧数量。15.一种分层编码装置,其特征在于,包括:获取单元,用于获取终端设备的解码能力信息,所述解码能力信息包括所述终端设备所包括的解码芯片类型;网络探测单元,用于根据所述解码芯片类型,在确定所述终端设备中存在支持分层解码方式的解码芯片时,对网络进行探测,得到所述网络的波动信息;编码单元,用于根据所述网络的波动信息和所述终端设备的解码能力信息,确定分层编码方式对应的参数,并使用所述分层编码方式对应的参数对目标视频进行编码。16.一种电子设备,其特征在于,包括:处理器和存储器,所述存储器用于存储计算机程序,所述处理器用于调用并运行所述存储器中存储的计算机程序,以执行权利要求1至14任一项所述的方法。17.一种计算机存储介质,其特征在于,包括计算机程序指令,所述计算机程序指令使得计算机执行权利要求1至14任一项所述的方法。
技术总结
本申请提供了一种分层编码方法、装置、设备及存储介质,可以应用于云技术、人工智能、智慧交通、辅助驾驶、视频等各种场景,该方法包括:云服务器获取终端设备的解码能力信息,该解码能力信息包括终端设备所包括的解码芯片类型;根据解码芯片类型,在确定终端设备中存在支持分层解码方式的解码芯片时,对网络进行探测,得到网络的波动信息;根据网络的波动信息和终端设备的解码能力信息,确定分层编码方式对应的参数,并使用分层编码方式对应的参数对目标视频进行编码。即本申请根据网络波动情况和终端设备的解码能力,选择最优的分层编码配置,进而提高编码质量。进而提高编码质量。进而提高编码质量。
技术研发人员:陈思佳 曹洪彬 张佳 黄永铖 曹健 杨小祥
受保护的技术使用者:腾讯科技(深圳)有限公司
技术研发日:2022.01.27
技术公布日:2023/8/8
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
上一篇:信号同步设备、神经刺激装置和神经刺激系统的制作方法 下一篇:剪式举升装置的制作方法
