伸缩性视频编码方法、装置、设备及存储介质
文献发布时间:2023-06-19 12:11:54
技术领域
本申请实施例涉及视频处理技术,尤其涉及一种伸缩性视频编码方法、装置、设备及存储介质。
背景技术
在多方实时视频通信场景中,存在不同的网络和不同的终端设备,使得不同的网络或者不同的终端设备对视频质量的需求不一样,例如,在利用网络传输视频时,由于网络带宽限制了视频传输,因此要求当网络带宽较小的时候,只传输基本的视频信号,并根据实际网络的状况决定是否传输增强的视频信号,使视频的质量得到加强。在这样的背景下,利用可分级视频编码技术实现一次性编码产生具有不同帧率、分辨率的视频压缩码流,然后根据不同网络带宽、不同的显示屏幕和终端解码能力选择需要传输的视频信息量,以此实现视频质量的自适应调整。为了能够实现从单一码流中解码得到不同帧率、分辨率和图像质量的视频数据的编码技术。伸缩性视频编码(Scalable Video Coding,SVC)以H.264 高级视频编码(Advanced Video Coding,AVC)标准、H.265高效视频编码(High EfficiencyVideo Coding,HEVC)为基础,利用了AVC以及HEVC编解码器的各种高效算法工具,在编码产生的编码视频时间上、空间上可扩展,并且是在视频质量方面可扩展的,可产生不同帧速率、分辨率或质量等级的视频。
SVC的可伸缩性,即可分级性主要包括:时间可分级、空间可分级和质量可分级,其中,时间可分级至关重要。目前,在进行视频序列的时间分级时,编码设备采用固定的时间分层层数,一旦该时间分层层数确定,时域参考结构也就固定了。目前的时域参考结构主要是通过时域上较长的参考距离来换取抗丢包的效果,然而,当参考距离过大时,将会导致图像帧的码率变大,即消耗的码字变多,进而导致视频压缩效率较低的问题,而当参考距离过小时,虽然消耗的码字变少,视频压缩效率较高,但是容易发生丢包情况,从而使得视频流畅性较差,因此,如何平衡视频压缩效率以及视频流畅性是本申请亟待解决的技术问题。
发明内容
本申请提供一种伸缩性视频编码方法、装置、设备及存储介质,从而可以平衡视频压缩效率以及视频流畅性。
第一方面,提供一种伸缩性视频编码方法,包括:获取视频序列;获取视频序列的时域分层层数N和N-1层各自在一个时域参考单元的码率占比,N为大于1的整数;根据时域分层层数和N-1层各自在一个时域参考单元的码率占比确定视频序列的时域参考结构;根据时域参考结构对视频序列进行编码,以得到输出码流。
第二方面,提供一种伸缩性视频编码装置,包括:第一获取模块、第二获取模块、确定模块、编码模块,其中,第一获取模块用于获取视频序列;第二获取模块用于获取视频序列的时域分层层数N和N-1层各自在一个时域参考单元的码率占比;确定模块用于根据时域分层层数和N-1层各自在一个时域参考单元的码率占比确定视频序列的时域参考结构;编码模块用于根据时域参考结构对视频序列进行编码,以得到输出码流。
第三方面,提供一种终端设备,包括:处理器和存储器,该存储器用于存储计算机程序,该处理器用于调用并运行该存储器中存储的计算机程序,执行如第一方面或其各实现方式中的方法。
第四方面,提供一种计算机可读存储介质,用于存储计算机程序,计算机程序使得计算机执行如第一方面或其各实现方式中的方法。
第五方面,提供一种计算机程序产品,包括计算机程序指令,该计算机程序指令使得计算机执行如第一方面或其各实现方式中的方法。
第六方面,提供一种计算机程序,计算机程序使得计算机执行如第一方面或其各实现方式中的方法。
通过本申请的技术方案,终端设备可以设置时域分层层数以及各层的码率占比,即限定各层的码率占比,也就是说,针对不同的终端设备或者不同终端设备所采用的不同网络,可以设置不同的时域分层层数以及各层的码率占比,例如:对于性能较好的终端设备,可以为其设置基础层的码率占比相对于性能较差的终端设备的基础层码率占比高一些,因为性能较好的终端设备可以消耗更多的码字,从而可以保证这类终端的视频流畅性。对于性能较差的终端设备,可以为其设置的基础层码率占比相对于性能较好的终端设备的基础层码率占比低一些,因为性能较好的终端设备不能消耗更多的码字,因此,需要保证这类终端设备的压缩效率较低,总之,通过限定各层的码率占比,可以平衡视频压缩效率以及视频流畅性。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的多方实时视频通信场景的示意图;
图2为一种典型的视频编码器的示意图;
图3为一种3层时域参考结构的示意图;
图4为本申请实施例提供的一种伸缩性视频编码方法的流程图;
图5为本申请实施例提供的一种时域参考结构的示意图;
图6为本申请实施例提供的另一种时域参考结构的示意图;
图7为本申请实施例提供的再一种时域参考结构的示意图;
图8为本申请实施例提供的又一种时域参考结构的示意图;
图9为本申请实施例提供的一种伸缩性视频编码装置的示意图;
图10是本申请实施例提供的终端设备的示意性框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或服务器不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
本申请技术方案的应用场景可以是多方实时视频通信场景,但不限于此。图1为本申请实施例提供的多方实时视频通信场景的示意图,如图1所示,多方实时视频通信系统中包括:各种终端设备110和服务器120,其中,终端设备110和服务器120通过网络连接。
应理解的是,当各方终端设备110进行实时视频通信时,任何一方终端设备110利用可分级视频编码技术实现一次性编码产生具有不同帧率、分辨率的视频压缩码流,然后将码流发送给服务器120,然后服务器120根据不同网络带宽、不同的显示屏幕和其他终端设备的解码能力选择需要传输的视频信息量,并向其他终端设备发送对应的视频信息。
需要说明的是,上述各方终端设备110之间也可以直接进行视频信息的传输,例如:当各方终端设备110进行实时视频通信时,任何一方终端设备110利用可分级视频编码技术实现一次性编码产生具有不同帧率、分辨率的视频压缩码流,然后根据不同网络带宽、不同的显示屏幕和其他终端设备的解码能力选择需要传输的视频信息量,并向其他终端设备发送对应的视频信息。
应理解的是,上述任一终端设备110可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱以及可穿戴设备等,本申请对此不做限制。服务器130可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,本申请对此不做限制。
如上所述,在多方实时视频通信场景中,存在不同的网络和不同的终端设备,使得不同的网络或者不同的终端设备对视频质量的需求不一样,例如,在利用网络传输视频时,由于网络带宽限制了视频传输,因此要求当网络带宽较小的时候,只传输基本的视频信号,并根据实际网络的状况决定是否传输增强的视频信号,使视频的质量得到加强。在这样的背景下,利用可分级视频编码技术实现一次性编码产生具有不同帧率、分辨率的视频压缩码流,然后根据不同网络带宽、不同的显示屏幕和终端解码能力选择需要传输的视频信息量,以此实现视频质量的自适应调整。为了能够实现从单一码流中解码得到不同帧率、分辨率和图像质量的视频数据的编码技术。SVC以H.264 AVC标准、H.265 HEVC为基础,利用了AVC以及HEVC编解码器的各种高效算法工具,在编码产生的编码视频时间上、空间上可扩展,并且是在视频质量方面可扩展的,可产生不同帧速率、分辨率或质量等级的视频。
SVC的可伸缩性,即可分级性主要包括:时间可分级、空间可分级和质量可分级。其中,时间可分级表示子码流中包含减小了播放帧率的视频信息。空间可分级表示子码流中包含减小了图像空间分辨率的视频信息。质量可分级表示子码流提供与完整码流相同的空间分辨率,但是质量更低。
应理解的是,上述的子码流是每个时间分层对应的码流,或者,每个空间分层对应的码流,又或者是每个质量分层对应的码流。完整码流是整个视频序列对应的码流。
视频编码是一个将原始视频(即上述视频序列)压缩成最小比特数,同时确保解码后的重建视频具有一定的播放质量。图2为一种典型的视频编码器的示意图,如图2所示,典型的视频编码器一般主要分为如下几个基本单元,时间域模型、空间域模型和熵编码器。其中,时间域模型输入的是未经压缩的视频序列,它利用序列中相邻图像帧之间的相关性来去除时域冗余,通常采用建立对当前帧的预测图像来实现。时间域模型输出的是当前图像与预测图像作差得到的残差图像,以及运动矢量等模型参数。空间域模型的输入是前面输出的参考图像,其作用是利用残差图像中相邻像素点的相关性,对残差图像的像素值进行变换并量化,去除空间冗余。对变换系数进行量化后,只保留少量关键系数值作为输入数据。时间和空间域模型的输出参数经过熵编码器的压缩,来去除数据中的统计冗余。压缩后的编码输出主要包含编码后的运动矢量、残差等参数和头信息。
SVC编码器将视频编码成多个空间层、多个时间层和多个质量层。其中,时间可分级技术可以通过单一码流,支持多种视频播放帧率,一个支持时间可分级的视频流,可以被分解为时域上的一个基础层和一个或多个增强层。
目前视频编码结构可以是:全帧内(All Intra)编码结构、低延迟(LowPersistence,LP)编码结构和随机接入(Random Access,RA)编码结构。
其中,LP编码结构只有第一帧图像按照帧内方式进行编码,并成为即使解码刷新(Instantaneous Decoding Refresh,IDR)帧,随后的各帧都作为普通P和B帧(GeneralizedP and B picture,GPB)进行编码。根据后续帧的类型是B帧还是P帧,将低延迟编码结构进一步分为LDB和LDP两种编码结构。需要说明的是,目前按照预测类型将图像帧分为三种类别,分别是I帧、P帧和B帧,其中,I帧中所有编码单元只使用帧内预测进行编码。P帧中的编码单元可使用帧内预测或者单向帧间预测进行编码。B帧中的编码单元可使用帧内预测或者双向帧间预测进行编码。也就是说,P帧仅有一个参考列表,而B帧有两个参考列表。
采用LP编码结构时,视频序列的播放顺序和编码顺序一致。因此每帧图像仅参考播放顺序在当前编码图像之前的重建帧,视频序列按播放顺序编解码,不必等待编码顺序在当前图像后面而播放顺序在前面的图像的编解码,时延相对更小,低延时结构由此得名,主要是为交互式实时通信设计的,适合直播、视频通话等对时延要求较高的场景。
如上所述,SVC可以解决由于不同终端设备和不同网络条件导致的视频质量不一问题,而这其中从实现的复杂度,性价比以及兼容性考虑,以时域分层采用最为广泛。视频序列在时域上的分层通常是通过预设的时域分层层数来决定时域参考结构,再根据该时域参考结构来参考编码视频序列,以将编码后的码流传输给服务器或接收端,服务器进行二次分发,或者接收端进行选择性的解码等处理。应理解的是,这里的时域参考结构也就是上述视频序列经过时域分层后的结构,由于每个图像帧可能要作为其他图像帧的参考图像帧,因此,该结构被称为时域参考结构。时域参考结构选择的好坏严重影响视频的清晰度和流畅性等关键指标。图3为一种3层时域参考结构的示意图,如图3所示,这里的Pn(m)表示位于第n层且视频时序是第m帧的图像帧。其中,除了第0帧是IDR帧之外,其他帧均是P帧,即这些帧均采用单向预测方式,图3中的箭头指向方向表示参考图像帧,例如:P3(1)的参考图像帧是IDR(0),该3层时域参考结构中由多个时域参考单元构成,这些时域参考单元的结构完全相同,如图3所示,IDR(0)、P3(1)、P2(2)、P3(3)构成一个时域参考单元,而P1(4)、P3(5)、P2(6)、P3(7)构成另一个时域参考单元,这两个时域参考单元的结构完全相同。
在低延时有损网络环境下,只有基础层即图3中的第1层中的图像帧丢失才需要等待下一个关键帧(即I帧)的到来,而其他增强层如第2层或者第3层中的图像帧丢失,并不需要重传和等待下一个关键帧。这种特性本身就天然的抗丢包,例如:在传统的IPPP编码中,任1帧丢失就要等待关键帧,而当基础层中图像帧间隔N帧时,基础层中的图像帧发生丢失的概率是IPPP编码中图像帧丢失的1/N,也就是这种时域参考结构具有较好的抗丢包特性。而在选择性地做向前纠错(Forward Error Correction,FEC)保护时,也只需要对基础层进行,大大增加了带宽的有效利用,也减少了需要大量重传引入的延时。然而,目前的时域参考结构主要时域上较长的参考距离来换取抗丢包的效果,当参考距离过大时,将会导致图像帧的码率变大,即消耗的码字变多,进而导致视频压缩效率较低的问题。例如:当量化参数(Quantization Parameter,QP)=30时,不同参考距离下所消耗的码字的关系如表1所示:
表1
表格中的横纵项均是参考距离,它们构成参考距离对,每个参考距离对对应的数字表示两个参考距离下所消耗的码字之间的关系,例如:表1中第2行第3列数字1.436表示参考距离为2时所消耗的码字是参考距离为1时所消耗的码字的1.436倍。表1中第2行第4列数字1.719表示参考距离为3时所消耗的码字是参考距离为1时所消耗的码字的1.719倍。
假设在IPPP模式下,每个P帧消耗的码字为1,那么4个P帧消耗的码字是4,其中,IPPP模式下,相邻P帧之间的参考距离是1,总之,在IPPP模式下,这4个P帧消耗的码字是4*1=4。假设对于这4个P帧采用如图3所示的3层参考结构,例如:这4个P帧是图3中的P1(4)、P3(5)、P2(6)、P3(7),而P1(4)的参考图像帧是IDR(0),该P1(4)与IDR(0)的参考距离是4-0=4;P3(5)的参考图像帧是P1(4),该P3(5)与P1(4)的参考距离是5-4=1;P2(6)的参考图像帧是P1(4),该P2(6)与P1(4)的参考距离是6-4=2;P3(7)的参考图像帧是P2(6),该P3(7)与P2(6)的参考距离是7-6=1。参照表1所示,当参考距离是4时,其消耗的码字是参考距离为1时消耗的码字的1.974倍。当参考距离是2时,其消耗的码字是参考距离为1时消耗的码字的1.436倍。那么当采用图3所示的3层参考结构时,这4个P帧消耗的码字是1.974+1.436+2*1=5.41,采用图3所示的3层参考结构所消耗的码字是IPPP模式下所消耗的码字的5.41/4≈1.35,也就是说采用SVC要比IPPP模式多消耗35%的码字,从而导致视频压缩效率较低的问题。
当参考距离过小时,虽然消耗的码字变少,视频压缩效率较高,但是容易发生丢包情况,从而使得视频流畅性较差,因此,如何平衡视频压缩效率以及视频流畅性是本申请亟待解决的技术问题。
为了解决上述技术问题,在本申请中,可以设置时域分层层数以及各层的码率占比,即限定各层的码率占比,从而可以平衡视频压缩效率以及视频流畅性。
应理解的是,码率就是数据传输时单位时间传送的数据位数,码率也叫比特率,表示经过压缩编码后的视频数据每秒需要用多少个比特来表示,即把每秒显示的图像进行压缩后的数据量。因此,上述消耗的码字也可以从码率的角度来讲,也就是说,消耗的码字越多,那么码率则越大。相反,消耗的码字越少,那么码率则越小。
下面将对本申请方案进行详细阐述:
图4为本申请实施例提供的一种伸缩性视频编码方法的流程图,该方法可以由编码设备执行,该编码设备可以是如图1所示的任何终端设备,但不限于此,如图4所示,该方法包括如下步骤:
S410:获取视频序列。
S420:获取视频序列的时域分层层数N和N-1层各自在一个时域参考单元的码率占比,N为大于1的整数。
S430:根据时域分层层数和N-1层各自在一个时域参考单元的码率占比确定视频序列的时域参考结构。
S440:根据时域参考结构对视频序列进行编码,以得到输出码流。
应理解的是,该视频序列可以通过终端设备的摄像头拍摄得到,该视频序列可以被称为视频或者图像序列,本申请对此不做限制。
如上所述,在SVC技术中,终端设备可以对视频序列进行时间分级,其中,时域分级层数可以是2层,3层或者更多层,本申请对此不做限制。例如:如图3所示,该视频序列的时域分层层数为3。
应理解的是,时域参考结构中由多个时域参考单元构成,这些时域参考单元的结构完全相同,如图3所示,IDR(0)、P3(1)、P2(2)、P3(3)构成一个时域参考单元,而P1(4)、P3(5)、P2(6)、P3(7)构成另一个时域参考单元,这两个时域参考单元的结构完全相同。
可选的,当视频序列在时域上被划分为N层时,上述终端设备只需要获取这N个时域层中的任意N-1层各自在一个时域参考单元的码率占比,但不限于此。例如:假设视频序列被划分为N层,那么终端设备可以获取第1层、第2层至第N-1层各自在一个时域参考单元的码率占比,或者,终端设备可以获取第2层、第3层至第N层各自在一个时域参考单元的码率占比。
应理解的是,终端设备也可以获取N层,即所有时域层各自在一个时域参考单元的码率占比,由于N层各自在一个时域参考单元的码率占比之和为1,并且终端设备在后续确定时域参考结构时待确定的是第i层中每个图像帧在第i+1层对应的图像帧数量,即确定N-1个未知量,因此,只需要满足N-1个条件,即可确定这N-1个未知量,基于此,在实际应用中,终端设备只需要利用这N层中的任意N-1层各自在一个时域参考单元的码率占比即可。
应理解的是,对于上述N-1层中的任一层而言,其在一个时域参考单元的码率占比指的是在该时域参考单元内,该层中所有图像帧的码率之和与所有层中的所有图像帧的码率之和的比值。
示例性的,如图3所示,假设在IPPP模式下,每个P帧的码率是1,那么4个P帧的码率之和是4,其中,IPPP模式下,相邻P帧之间的参考距离是1,总之,在IPPP模式下,这4个P帧的码率之和是4*1=4。假设对于这4个P帧采用如图3所示的3层参考结构,例如:这4个P帧是图3中的P1(4)、P3(5)、P2(6)、P3(7),而P1(4)的参考图像帧是IDR(0),该P1(4)与IDR(0)的参考距离是4-0=4;P3(5)的参考图像帧是P1(4),该P3(5)与P1(4)的参考距离是5-4=1;P2(6)的参考图像帧是P1(4),该P2(6)与P1(4)的参考距离是6-4=2;P3(7)的参考图像帧是P2(6),该P3(7)与P2(6)的参考距离是7-6=1。参照表1所示,当参考距离是4时,其码率是参考距离为1时码率的1.974倍。当参考距离是2时,其码率是参考距离为1时码率的1.436倍。那么当采用图3所示的3层参考结构时,这4个P帧的码率之和是1.974+1.436+2*1=5.41,而在P1(4)、P3(5)、P2(6)、P3(7)构成的时域参考单元内,第0层的码率是1.974,因此,第0层在该时域参考单元的码率占比是1.974/5.41≈0.36。
需要说明的是,针对不同的终端设备,可以设置不同的时域分层层数以及各层的码率占比,例如:对于性能较好的终端设备,可以为其设置的基础层码率占比相对于性能较差的终端设备的基础层码率占比高一些,因为性能较好的终端设备可以消耗更多的码字,从而可以保证这类终端的视频流畅性。对于性能较差的终端设备,可以为其设置的基础层码率占比相对于性能较好的终端设备的基础层码率占比低一些,因为性能较好的终端设备不能消耗更多的码字,因此,需要保证这类终端设备的压缩效率较低。
类似的,针对各个终端设备所使用的不同网络,也可以为这些终端设备设置不同的码率占比,例如:若终端设备A使用的是无线保真(wireless fidelity)网络,终端设备B使用的5G移动网络,那么可以为终端设备A设置较低的基础层码率占比,为终端设备B设置较高的基础层码率占比。应理解的是,由于一个时域参考结构主要涉及的参数是时域分层层数和该时域参考结构中在任一个时域参考单元中第i层中每个图像帧在第i+1层对应的图像帧数量,i=1,2……N,其中,N表示时域参考结构的层数,第1层为基础层。而时域分层层数已经是配置好的,因此,终端设备确定任一个时域参考单元中第i层中每个图像帧在第i+1层对应的图像帧数量是确定时域参考结构的重中之重。应理解的是,对于第i层中任一个图像帧,该图像帧在第i+1层对应的图像帧数量指的是该图像帧在第i+1层对应的图像帧的数量,也就是可以插入至该图像帧以及第i层中该图像帧之后的图像帧之间的第i+1层图像帧的数量。例如,如图3所示的时域参考结构,P1(4)是位于第1层的图像帧,该图像帧之后的图像帧是P1(8),而位于第2层,且可以插入至P1(4)与P1(8)的图像帧是P2(6),因此,P1(4)在第2层对应的图像帧数量是1。
可选的,终端设备可以通过如下两种可实现方式来确定一个时域参考单元中第i层中每个图像帧在第i+1层对应的图像帧数量,但不限于此:可实现方式一:终端设备根据时域分层层数和N-1层各自在一个时域参考单元的码率占比确定一个时域参考单元中第i层中每个图像帧在第i+1层对应的图像帧数量。可实现方式二:终端设备根据时域分层层数和N-1层各自在一个时域参考单元的码率占比确定一个时域参考单元中第i层中每个图像帧在第i+1层对应的图像帧数量之前,可以针对该时域参考单元,获取N-1层中每个图像帧的码率下限值,码率下限值是每个图像帧相对于最高增强层中的图像帧的码率下限值。相应的,终端设备可以根据N-1层中每个图像帧的码率下限值、时域分层层数和N-1层各自在一个时域参考单元的码率占比确定一个时域参考单元中第i层中每个图像帧在第i+1层对应的图像帧数量。
也就是说,可实现方式一中不涉及码率下限值的限制,而可实现方式二中涉及码率下限值的限制。
下面将针对可实现方式一进行详细阐述:
假设终端设备获取到了时域分层层数N,以及,第1层至第N-1层各自在一个时域参考单元的码率占比,并且假设第N层中的任一个图像帧的码率是1,第1层中每个图像帧是相对于第N层中的任一个图像帧的码率是
其中,
应理解的是,对于上述N个公式,已知
下面将针对可实现方式二进行详细阐述:
应理解的是,本申请中涉及的图像帧的码率下限值指的是该图像帧的码率的下限值,而图像帧的码率是该图像帧相对于最高增强层中的图像帧的码率。当然,该码率也可以是相对于其他图像帧的码率,例如:是相对于倒数第二层中的图像帧的码率,只要所有图像帧的码率所相对的基准值统一即可,本申请对此不做限制。
假设终端设备获取到了时域分层层数N,以及,第1层至第N-1层各自在一个时域参考单元的码率占比,并且假设第N层中的任一个图像帧的码率是1,第1层中每个图像帧是相对于第N层中的任一个图像帧的码率是
并且需要满足如下条件:
其中,
应理解的是,对于上述N个公式,已知
下面针对时域分层层数为2的情况,对确定
示例性的,假设终端设备获取到了时域分层层数2,并且假设第2层中的任一个图像帧的码率是1,第1层中每个图像帧是相对于第2层中的任一个图像帧的码率是
即
并且需要满足如下条件:
下面针对时域分层层数为3的情况,对确定
示例性的,假设终端设备获取到了时域分层层数3,并且假设第3层中的任一个图像帧的码率是1,第1层中每个图像帧是相对于第3层中的任一个图像帧的码率是
其中,
即
并且需要满足如下条件:
由于
假设
进一步地,当终端设备确定了一个时域参考单元中第i层中每个图像帧在第i+1层对应的图像帧数量之后,终端设备可以确定时域参考结构。
示例性地,图5为本申请实施例提供的一种时域参考结构的示意图,如图5所示的是一个3层时域参考结构,一个时域参考单元中第1层中每个图像帧在第2层对应的图像帧数量为2,例如:第1层的P1(6)对应的第2层的图像帧是P2(8)和P2(10),箭头方向所指的是参考图像帧,如P2(8)的参考图像帧是P1(6),而在一个时域参考单元中第2层中每个图像帧在第3层对应的图像帧数量为1,例如:第2层的图像帧P2(8)对应的第3层的图像帧是P2(9)。
示例性地,图6为本申请实施例提供的另一种时域参考结构的示意图,如图6所示的是一个2层时域参考结构,一个时域参考单元中第1层中每个图像帧在第2层对应的图像帧数量为2,例如:第1层的P1(3)对应的第2层的图像帧是P2(4)和P2(5),箭头方向所指的是参考图像帧,如P2(4)的参考图像帧是P1(3)。
需要说明的是,本申请对终端设备根据一个时域参考单元中第i层中每个图像帧在第i+1层对应的图像帧数量,确定时域参考结构不做限制。
进一步地,终端设备在确定了视频序列的时域参考结构之后,可以确定各个图像帧具体采用的是帧内预测还是帧间预测进行图像预测,以得到各个图像帧中的编码单元(即图像块)的预测信息,然后对该编码单元的原始信号减去预测信息,得到残差信号。经过预测后,残差信号的幅值远小于原始信号,进一步对残差信号进行变换和量化操作。经过变换量化后,得到变换量化系数。最后通过熵编码技术编码量化系数以及编码中的其他指示信息,得到码流。
综上,在本申请中,终端设备可以设置时域分层层数以及各层的码率占比,即限定各层的码率占比,也就是说,针对不同的终端设备或者不同终端设备所采用的不同网络,可以设置不同的时域分层层数以及各层的码率占比,例如:对于性能较好的终端设备,可以为其设置基础层的码率占比相对于性能较差的终端设备的基础层码率占比高一些,因为性能较好的终端设备可以消耗更多的码字,从而可以保证这类终端的视频流畅性。对于性能较差的终端设备,可以为其设置的基础层码率占比相对于性能较好的终端设备的基础层码率占比低一些,因为性能较好的终端设备不能消耗更多的码字,因此,需要保证这类终端设备的压缩效率较低,总之,通过限定各层的码率占比,可以平衡视频压缩效率以及视频流畅性。进一步地,本申请还可以规定图像帧的码率下限值,从而可以进一步地保证视频流畅性。
应理解的是,在实际的图像编码中,终端设备可以对每个图像帧采用一定的码率进行编码,以避免压缩效率较低的问题,下面将对确定每个图像帧的码率进行说明:
可选的,终端设备可以根据时域参考结构和N-1层各自在一个时域参考单元的码率占比确定N-1层中每个图像帧的码率,如上所述,码率是每个图像帧相对于最高增强层中的图像帧的码率。当然,该码率也可以是相对于其他图像帧的码率,例如:是相对于倒数第二层中的图像帧的码率,只要所有图像帧的码率所相对的基准值统一即可,本申请对此不做限制。进一步地,终端设备在进行视频序列的编码时,针对N-1层中每个图像帧,可以采用该图像帧的码率进行编码。
可选的,终端设备通过如下公式可以计算
其中,
示例性地,若时域分层层数为2,基础层在一个时域参考单元的码率占比为
示例性地,若时域分层层数为3,基础层在一个时域参考单元的码率占比为
综上,在本申请中,终端设备可以确定时域参考结构中的各个图像帧的码率,以根据这些图像帧各自的码率进行编码。
可选的,终端设备还可以确定是否存在抗丢包要求,如果不存在抗丢包要求,则不对上述时域参考结构进行调整,如果存在抗丢包要求,则对时域参考结构进行调整。其中,终端设备可以采用如下调整方式调整时域参考结构,但不限于此:假设在一个时域参考单元中第i层中图像帧在第i+1层对应的图像帧数量大于1,那么针对该第i层中图像帧对应的第i+1层中的多个图像帧中的最后一个图像帧,可以将该最后一个图像帧的参考图像帧调整为该第i层中的图像帧。例如:在时域分两层同时有较好的抗高网络丢包,那么在第1层加入一定的前向纠错(Forward Error Correction,FEC)同时,选用如图7的时域参考结构;没有抗丢包要求,那么为了最大化画质与压缩效率则选用图6所示的时域参考结构,其相对于图6所示的时域参考结构,图7的时域参考结构中第1层中的每个图像帧在第2层对应的最后一个图像帧的参考图像帧该第1层中的图像帧,例如:P2(2)的参考图像帧是P1(0),P2(5)的参考图像帧是P1(3)。再例如:在时域分三层同时有较好的抗高网络丢包,那么在第1层加入一定的FEC同时,选用如图8的时域参考结构;没有抗丢包要求,那么为了最大化画质与压缩效率则选用图5所示的时域参考结构,其相对于图5所示的时域参考结构,图8的时域参考结构中第1层中的每个图像帧在第2层对应的最后一个图像帧的参考图像帧该第1层中的图像帧,例如:P2(4)的参考图像帧是P1(0),P2(10)的参考图像帧是P1(6)。
综上,在本申请中,终端设备可以确定是否存在抗丢包要求,如果不存在抗丢包要求,则不对上述时域参考结构进行调整,如果存在抗丢包要求,则对时域参考结构进行调整,从而在平衡视频压缩效率以及视频流畅性的同时,还可以更好的实现抗丢包,即更好的实现视频流畅性。
图9为本申请实施例提供的一种伸缩性视频编码装置的示意图,如图9所示,该伸缩性视频编码装置包括:
第一获取模块901,用于获取视频序列。
第二获取模块902,用于获取视频序列的时域分层层数N和N-1层各自在一个时域参考单元的码率占比。
第一确定模块903,用于根据时域分层层数和N-1层各自在一个时域参考单元的码率占比确定视频序列的时域参考结构。
编码模块904,用于根据时域参考结构对视频序列进行编码,以得到输出码流。
可选的,第一确定模块903具体用于:根据时域分层层数和N-1层各自在一个时域参考单元的码率占比确定一个时域参考单元中第i层中每个图像帧在第i+1层对应的图像帧数量,i=1,2……N,其中,N表示时域参考结构的层数,第1层为基础层。根据第i+1层对应的图像帧数量确定视频序列的时域参考结构。
可选的,伸缩性视频编码装置还包括:第三获取模块904,用于在第一确定模块903根据时域分层层数和N-1层各自在一个时域参考单元的码率占比确定一个时域参考单元中第i层中每个图像帧在第i+1层对应的图像帧数量之前,针对一个时域参考单元,获取N-1层中每个图像帧的码率下限值,码率下限值是每个图像帧相对于最高增强层中的图像帧的码率下限值。相应的,第一确定模块903具体用于:根据N-1层中每个图像帧的码率下限值、时域分层层数和N-1层各自在一个时域参考单元的码率占比确定一个时域参考单元中第i层中每个图像帧在第i+1层对应的图像帧数量。
可选的,第一确定模块903具体用于:若时域分层层数为2,基础层中每个图像帧的码率下限值为
可选的,第一确定模块903具体用于:若时域分层层数为3,基础层中每个图像帧的码率下限值为
可选的,伸缩性视频编码装置还包括:第二确定模块905,用于在第一确定模块903根据时域分层层数和N-1层各自在一个时域参考单元的码率占比确定视频序列的时域参考结构之后,根据时域参考结构和N-1层各自在一个时域参考单元的码率占比确定N-1层中每个图像帧的码率,码率是每个图像帧相对于最高增强层中的图像帧的码率。相应的,编码模块904具体用于:根据时域参考结构和N-1层中每个图像帧的码率对视频序列进行编码,以得到输出码流。
可选的,第二确定模块905具体用于:若时域分层层数为2,基础层在一个时域参考单元的码率占比为
可选的,第二确定模块905具体用于:若时域分层层数为3,基础层在一个时域参考单元的码率占比为
可选的,伸缩性视频编码装置还包括:判断模块906和调整模块907,判断模块906用于在第一确定模块903根据时域分层层数和N-1层各自在一个时域参考单元的码率占比确定视频序列的时域参考结构之后,判断是否存在抗丢包要求。调整模块907用于若存在抗丢包要求,则对时域参考结构进行调整。
应理解的是,装置实施例与方法实施例可以相互对应,类似的描述可以参照方法实施例。为避免重复,此处不再赘述。具体地,图9所示的装置可以执行图4对应的方法实施例,并且装置中的各个模块的前述和其它操作和/或功能分别为了实现图4中的各个方法中的相应流程,为了简洁,在此不再赘述。
上文中结合附图从功能模块的角度描述了本申请实施例的装置。应理解,该功能模块可以通过硬件形式实现,也可以通过软件形式的指令实现,还可以通过硬件和软件模块组合实现。具体地,本申请实施例中的方法实施例的各步骤可以通过处理器中的硬件的集成逻辑电路和/或软件形式的指令完成,结合本申请实施例公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。可选地,软件模块可以位于随机存储器,闪存、只读存储器、可编程只读存储器、电可擦写可编程存储器、寄存器等本领域的成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法实施例中的步骤。
图10是本申请实施例提供的终端设备的示意性框图。
如图10所示,该终端设备可包括:
存储器1010和处理器1020,该存储器1010用于存储计算机程序,并将该程序代码传输给该处理器1020。换言之,该处理器1020可以从存储器1010中调用并运行计算机程序,以实现本申请实施例中的方法。
例如,该处理器1020可用于根据该计算机程序中的指令执行上述方法实施例。
在本申请的一些实施例中,该处理器1020可以包括但不限于:
通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(FieldProgrammable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等等。
在本申请的一些实施例中,该存储器1010包括但不限于:
易失性存储器和/或非易失性存储器。其中,非易失性存储器可以是只读存储器(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 DataRate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synch link DRAM,SLDRAM)和直接内存总线随机存取存储器(Direct Rambus RAM,DR RAM)。
在本申请的一些实施例中,该计算机程序可以被分割成一个或多个模块,该一个或者多个模块被存储在该存储器1010中,并由该处理器1020执行,以完成本申请提供的方法。该一个或多个模块可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述该计算机程序在该终端设备中的执行过程。
如图10所示,该终端设备还可包括:
收发器1030,该收发器1030可连接至该处理器1020或存储器1010。
其中,处理器1020可以控制该收发器1030与其他设备进行通信,具体地,可以向其他设备发送信息或数据,或接收其他设备发送的信息或数据。收发器1030可以包括发射机和接收机。收发器1030还可以进一步包括天线,天线的数量可以为一个或多个。
应当理解,该终端设备中的各个组件通过总线系统相连,其中,总线系统除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。
本申请还提供了一种计算机存储介质,其上存储有计算机程序,该计算机程序被计算机执行时使得该计算机能够执行上述方法实施例的方法。或者说,本申请实施例还提供一种包含指令的计算机程序产品,该指令被计算机执行时使得计算机执行上述方法实施例的方法。
当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行该计算机程序指令时,全部或部分地产生按照本申请实施例该的流程或功能。该计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。该计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,该计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。该计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。该可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如数字视频光盘(digital video disc,DVD))、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的模块及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,该模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。例如,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。
以上该,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以该权利要求的保护范围为准。
- 伸缩性视频编码方法、装置、设备及存储介质
- 使用基础层的可伸缩性视频编码方法和设备