一种码率控制方法及装置与流程

文档序号:14844502发布日期:2018-06-30 14:42阅读:146来源:国知局
一种码率控制方法及装置与流程

本发明涉及视频编码技术领域,特别是涉及一种码率控制方法及装置。



背景技术:

在视频传输或存储过程中,为减少传输或存储的数据量,通常需要对原始视频数据进行压缩编码。每一帧画面的运动复杂度、动态纹理、遮挡、光照变化等情况会有所不同,因此压缩后的帧的数据量会有变化,单位时间内视频传输的码率就会有所波动。在实际的视频传输或存储应用中,由于带宽和存储空间的限制,通常需要对码率的最大值、平均值等进行限制。通过控制编码器的一些编码参数以达到使编码器产生的码率符合预期的过程就是码率控制过程,码率控制器与编码器的关系如图1所示,编码器103依据码率控制器102输出的编码参数对输入的视频帧101进行编码,将编码后的码流状态反馈给码率控制器102,并输出视频比特流。

在实际应用中,通常有两种码率控制模式:VBR(Variable Bit Rate,可变码率模式)和CBR(Constant Bit Rate,固定码率模式)。VBR设定图像质量值和码率上限,在不超出码率上限的情况下,保持图像质量稳定在所设定的值,该模式适用于本地存储的应用场景;CBR保持输出瞬时码率维持在所设定的码率值,该模式适用于信道带宽基本恒定的应用场景。

当编码设备采用VBR模式时,由于码率波动难以预估,通常使用VBR的码率上限值来计算存储空间,这会导致预估的存储设备容量过大,浪费存储资源;当编码设备采用CBR模式时,可以使用CBR的目标码率值来精确估计监控系统需要的存储空间,但是CBR算法对简单场景和复杂场景都用同样的目标码率进行编码,而在复杂场景时,为了防止存储空间溢出,又不能采用更大的码率进行编码,使得图像质量下降。因此,以上两种常用的码率控制模式都难以在一定容量的存储空间中最大效率的得到最清晰、效果最好的码流。

针对VBR模式下存储设备容量过大、浪费存储资源的问题,现有技术提出根据业务需求为编码设备配置较小的存储空间,在使用VBR获得固定质量的视频编码码流的基础上,实时监测剩余存储空间和存储时间,使用丢帧、降低QP(Quantization Parameter,量化参数)等码率控制策略保证实际编码码流满足存储空间的要求。但是该方案只能保证实际编码大小不大于预设存储空间,这样有可能会使得实际使用过程中硬盘剩余过多的空间。

针对CBR模式下图像质量不稳定的问题,现有技术提出一种缓冲区自适应的码率控制方法。这种方法是在CBR的前提下,通过对一段时间内的图像复杂度信息的分析,调整虚拟缓冲区的目标平衡点和缓冲区调整力度两个参数,应对图像变复杂时产生的跳帧和图像质量不稳定问题。但是利用该方案,目标平衡点的调整余量太小,只能应对短时的图像复杂化,如果场景长期变复杂,难以保证能将空闲时段的码率匀给繁忙时段,从而使得在繁忙时段下没有足够的存储空间以保证图像质量。

综上所述,现有的码率控制方法在保证图像满足一定质量的条件下,无法合理分配存储空间。



技术实现要素:

本发明实施例的目的在于提供一种码率控制方法及装置,以实现在保证图像满足一定质量的条件下,合理分配存储空间。具体技术方案如下:

第一方面,本发明实施例提供了一种码率控制方法,所述方法包括:

获取并根据长周期中当前短周期的码率控制模式及编码控制参数,确定所述当前短周期的帧级编码参数,并发送所述帧级编码参数至编码器,其中,所述长周期包含多个短周期,所述当前短周期为所述多个短周期中的任一个,所述编码控制参数至少包括:预设码率控制参数及第一码流信息,所述第一码流信息为所述当前短周期中当前视频帧的相邻上一视频帧已编码的码流信息;

获取所述编码器发送的第二码流信息,其中,所述第二码流信息为所述编码器根据所述当前短周期的帧级编码参数、对所述当前视频帧进行编码得到的码流信息;

根据所述第二码流信息,统计包括所述当前视频帧的复杂度信息、所述当前短周期的总编码比特及所述当前短周期的编码质量信息的统计信息;

在所述长周期未结束时,判断所述当前短周期是否结束,如果结束,获取并根据所述当前短周期的周期长度、所述预设码率控制参数及所述统计信息,确定所述长周期中所述当前短周期的相邻下一个短周期的平均码率,以通过计算所述相邻下一个短周期的帧级编码参数,从而对所述相邻下一个短周期的视频帧进行编码。

可选的,所述预设码率控制参数包括:预设码率上限、预设图像质量等级、预设平均码率、预设平均码率控制误差及预设帧率;

所述码流信息包括:编码质量信息及码流长度信息。

可选的,所述获取并根据长周期中当前短周期的码率控制模式及编码控制参数,确定所述当前短周期的帧级编码参数之前,所述方法还包括:

获取用户输入的预设码率控制参数及长周期的预设周期长度;

根据所述预设平均码率控制误差、所述预设平均码率、所述长周期的预设周期长度、预设初始充盈度及预设条件,确定长周期虚拟缓冲区的目标平衡上限、所述长周期虚拟缓冲区的目标平衡下限及所述长周期虚拟缓冲区的期望输出码率,其中,所述预设条件为:

所述ERROR_RANGE为所述预设平均码率控制误差,所述MinVBF为所述长周期虚拟缓冲区的目标平衡下限,所述InitVBF为所述预设初始充盈度,所述MaxVBF为所述长周期虚拟缓冲区的目标平衡上限,所述TARGET_BITRATE为所述预设平均码率,所述T为所述长周期的预设周期长度,所述target_bitrate为所述长周期虚拟缓冲区的期望输出码率。

可选的,所述编码控制参数还包括:所述当前短周期的平均码率;

所述获取并根据长周期中当前短周期的码率控制模式及编码控制参数,确定所述当前短周期的帧级编码参数,包括:

在获取的长周期中当前短周期的码率控制模式为固定码率模式CBR时,获取并根据所述当前短周期的平均码率、所述预设码率控制参数中的预设帧率及第一码流信息,通过计算、确定所述CBR对应的第一帧级编码参数,并将所述第一帧级编码参数作为所述当前短周期的帧级编码参数;

或者,

在获取的长周期中当前短周期的码率控制模式为可变码率模式VBR时,获取并根据所述预设码率控制参数中的预设码率上限、预设帧率及第一码流信息,通过计算、确定所述VBR对应的第二帧级编码参数,并将所述第二帧级编码参数作为所述当前短周期的帧级编码参数,其中,所述VBR为所述长周期中第一个短周期的码率控制模式;

或者,

在获取的长周期中当前短周期的码率控制模式既包括CBR、又包括VBR时,获取并根据所述当前短周期的平均码率、所述预设码率控制参数中的预设帧率及第一码流信息,通过计算、确定所述CBR对应的第一帧级编码参数;根据所述预设码率控制参数中的预设码率上限、预设帧率及第一码流信息,通过计算、确定所述VBR对应的第二帧级编码参数;在帧级编码参数与所述码流长度正相关时,确定所述第一帧级编码参数与所述第二帧级编码参数中的最小值为所述当前短周期的帧级编码参数;在帧级编码参数与所述码流长度反相关时,确定所述第一帧级编码参数与所述第二帧级编码参数中的最大值为所述当前短周期的帧级编码参数。

可选的,所述获取并根据所述当前短周期的平均码率、所述预设码率控制参数中的预设帧率及第一码流信息,通过计算、确定所述CBR对应的第一帧级编码参数,包括:

获取并根据所述当前短周期的平均码率及所述预设码率控制参数中的预设帧率,通过计算、得到所述当前短周期内视频帧的第一目标比特平均值;

获取所述第一码流信息中的码流长度及所述CBR对应的当前短周期虚拟缓冲区的第一充盈度,并根据所述第一码流信息中的码流长度、所述第一充盈度及所述第一目标比特平均值,通过计算、更新所述第一充盈度;

获取所述CBR对应的当前短周期虚拟缓冲区的第一目标充盈度,并根据所述第一充盈度、所述第一目标充盈度、所述第一目标比特平均值及预设调节强度参数,通过计算、得到所述当前短周期中当前视频帧的第一目标比特;

根据所述第一码流信息中的编码质量信息、所述第一码流信息中的码流长度、所述第一目标比特及所述第一目标比特平均值,通过计算、确定所述CBR对应的当前短周期的第一帧级编码参数。

可选的,所述获取并根据所述预设码率控制参数中的预设码率上限、预设帧率及第一码流信息,通过计算、确定所述VBR对应的第二帧级编码参数,包括:

获取并根据所述预设码率控制参数中的预设码率上限及预设帧率,通过计算、得到所述当前短周期内视频帧的第二目标比特平均值;

获取所述第一码流信息中的码流长度、所述VBR对应的当前短周期虚拟缓冲区的第二充盈度及所述VBR对应的当前短周期虚拟缓冲区的第二目标充盈度,并根据所述第一码流信息中的码流长度、所述第二充盈度及所述第二目标比特平均值,通过计算、确定更新后的所述第二充盈度和所述第二目标充盈度中的最大值为所述第二充盈度;

根据所述第二充盈度、所述第二目标充盈度、所述第二目标比特平均值及预设调节强度参数,通过计算、得到所述当前短周期中当前视频帧的第二目标比特;

根据所述第一码流信息中的编码质量信息、所述第一码流信息中的码流长度、所述第二目标比特及所述第二目标比特平均值,通过计算、确定所述VBR对应的当前短周期的第二帧级编码参数。

可选的,所述方法还包括:

在所述长周期结束时,进行下一个长周期内第一个短周期的码率控制。

可选的,所述方法还包括:

在所述当前短周期未结束时,则执行所述获取第一码流信息的步骤。

可选的,所述获取并根据所述当前短周期的周期长度、所述预设码率控制参数及所述统计信息,确定所述长周期中所述当前短周期的相邻下一个短周期的平均码率,包括:

获取所述长周期虚拟缓冲区的期望输出码率,并将所述长周期虚拟缓冲区的期望输出码率确定为所述当前短周期的期望输出码率;

获取并根据所述当前短周期的周期长度及所述当前短周期的期望输出码率,通过计算、得到所述当前短周期的期望输出比特;

获取所述长周期虚拟缓冲区的实际充盈度,根据所述当前短周期的期望输出比特、所述当前短周期的总编码比特及所述长周期虚拟缓冲区的实际充盈度,通过计算、更新所述长周期虚拟缓冲区的实际充盈度;

根据所述长周期虚拟缓冲区的实际充盈度、所述预设初始充盈度、所述长周期虚拟缓冲区的目标平衡上限及所述长周期虚拟缓冲区的目标平衡下限,计算所述长周期虚拟缓冲区的目标充盈度;

根据所述长周期虚拟缓冲区的实际充盈度、所述预设初始充盈度、所述长周期虚拟缓冲区的目标平衡上限及所述长周期虚拟缓冲区的目标平衡下限,计算复杂度目标比特加权因子;

根据所述长周期虚拟缓冲区的目标充盈度、所述长周期虚拟缓冲区的实际充盈度、预设调节强度参数及预设调节的基准码率,通过计算、得到所述长周期中所述相邻下一个短周期的虚拟缓冲区目标码率;

根据所述当前视频帧的复杂度信息,所述预设图像质量等级、所述当前短周期的总编码比特数及所述当前短周期的周期长度,确定所述长周期中所述相邻下一个短周期的复杂度目标码率;

根据所述长周期中所述相邻下一个短周期的虚拟缓冲区目标码率、所述长周期中所述相邻下一个短周期的复杂度目标码率及所述复杂度目标比特加权因子,通过加权计算、确定所述长周期中所述相邻下一个短周期的平均码率。

可选的,所述根据所述长周期虚拟缓冲区的实际充盈度、所述预设初始充盈度、所述长周期虚拟缓冲区的目标平衡上限及所述长周期虚拟缓冲区的目标平衡下限,计算所述长周期虚拟缓冲区的目标充盈度,包括:

判断所述长周期虚拟缓冲区的实际充盈度是否介于所述长周期虚拟缓冲区的目标平衡点上限与所述长周期虚拟缓冲区的目标平衡下限之间;

若是,则确定所述初始充盈度为所述长周期虚拟缓冲区的目标充盈度;

若否,在所述长周期虚拟缓冲区的实际充盈度大于所述长周期虚拟缓冲区的目标平衡点上限时,则确定所述长周期虚拟缓冲区的目标平衡点上限为所述长周期虚拟缓冲区的目标充盈度;在所述长周期虚拟缓冲区的实际充盈度小于所述长周期虚拟缓冲区的目标平衡点下限时,则确定所述长周期虚拟缓冲区的目标平衡点下限为所述长周期虚拟缓冲区的目标充盈度。

可选的,所述根据所述长周期虚拟缓冲区的实际充盈度、所述预设初始充盈度、所述长周期虚拟缓冲区的目标平衡上限及所述长周期虚拟缓冲区的目标平衡下限,计算复杂度目标比特加权因子,包括:

判断所述长周期虚拟缓冲区的实际充盈度是否介于所述长周期虚拟缓冲区的目标平衡点上限与所述长周期虚拟缓冲区的目标平衡下限之间;

若是,则确定所述复杂度目标比特加权因子为预设第一数值;

若否,则确定所述复杂度目标比特加权因子为预设第二数值。

第二方面,本发明实施例还提供了一种码率控制装置,所述装置包括:

短周期控制模块,用于获取并根据长周期中当前短周期的码率控制模式及编码控制参数,确定所述当前短周期的帧级编码参数,并发送所述帧级编码参数至编码器,其中,所述长周期包含多个短周期,所述当前短周期为所述多个短周期中的任一个,所述编码控制参数至少包括:预设码率控制参数及第一码流信息,所述第一码流信息为所述当前短周期中当前视频帧的相邻上一视频帧已编码的码流信息,所述预设码率控制参数包括:预设码率上限、预设图像质量等级、预设平均码率、预设平均码率控制误差及预设帧率,所述码流信息包括:编码质量信息及码流长度信息;获取所述编码器发送的第二码流信息,其中,所述第二码流信息为所述编码器根据所述当前短周期的帧级编码参数、对所述当前视频帧进行编码得到的码流信息;

数据统计模块,用于根据所述第二码流信息,统计包括所述当前视频帧的复杂度信息、所述当前短周期的总编码比特及所述当前短周期的编码质量信息的统计信息;

长周期控制模块,用于在所述长周期未结束时,判断所述当前短周期是否结束,如果结束,获取并根据所述当前短周期的周期长度、所述预设码率控制参数及所述统计信息,确定所述长周期中所述当前短周期的相邻下一个短周期的平均码率,以通过计算所述相邻下一个短周期的帧级编码参数,从而对所述相邻下一个短周期的视频帧进行编码。

可选的,所述装置还包括:

模型初始化模块,用于获取用户输入的预设码率控制参数及长周期的预设周期长度;根据所述预设平均码率控制误差、所述预设平均码率、所述长周期的预设周期长度、预设初始充盈度及预设条件,确定长周期虚拟缓冲区的目标平衡上限、所述长周期虚拟缓冲区的目标平衡下限及所述长周期虚拟缓冲区的期望输出码率,其中,所述预设条件为:

所述ERROR_RANGE为所述预设平均码率控制误差,所述MinVBF为所述长周期虚拟缓冲区的目标平衡下限,所述InitVBF为所述预设初始充盈度,所述MaxVBF为所述长周期虚拟缓冲区的目标平衡上限,所述TARGET_BITRATE为所述预设平均码率,所述T为所述长周期的预设周期长度,所述target_bitrate为所述长周期虚拟缓冲区的期望输出码率。

可选的,所述装置还包括:

复杂度分析模块,用于对所述当前视频帧进行复杂度分析,得到所述当前视频帧的复杂度信息。

可选的,所述编码控制参数还包括:所述当前短周期的平均码率;

所述短周期控制模块,包括:

帧级CBR码率控制子模块,用于在获取的长周期中当前短周期的码率控制模式为固定码率模式CBR时,获取并根据所述当前短周期的平均码率、所述预设码率控制参数中的预设帧率及第一码流信息,通过计算、确定所述CBR对应的第一帧级编码参数,并将所述第一帧级编码参数作为所述当前短周期的帧级编码参数;

帧级VBR码率控制子模块,用于在获取的长周期中当前短周期的码率控制模式为可变码率模式VBR时,获取并根据所述预设码率控制参数中的预设码率上限、预设帧率及第一码流信息,通过计算、确定所述VBR对应的第二帧级编码参数,并将所述第二帧级编码参数作为所述当前短周期的帧级编码参数,其中,所述VBR为所述长周期中第一个短周期的码率控制模式;

帧级码率控制子模块,用于在获取的长周期中当前短周期的码率控制模式既包括CBR,又包括VBR时,获取并根据所述当前短周期的平均码率、所述预设码率控制参数中的预设帧率及第一码流信息,通过计算、确定所述CBR对应的第一帧级编码参数;根据所述预设码率控制参数中的预设码率上限、预设帧率及第一码流信息,通过计算、确定所述VBR对应的第二帧级编码参数;在帧级编码参数与所述码流长度正相关时,确定所述第一帧级编码参数与所述第二帧级编码参数中的最小值为所述当前短周期的帧级编码参数;在帧级编码参数与所述码流长度反相关时,确定所述第一帧级编码参数与所述第二帧级编码参数中的最大值为所述当前短周期的帧级编码参数。

可选的,所述帧级CBR码率控制子模块,包括:

第一计算单元,用于获取并根据所述当前短周期的平均码率及所述预设码率控制参数中的预设帧率,通过计算、得到所述当前短周期内视频帧的第一目标比特平均值;

第二计算单元,用于获取所述第一码流信息中的码流长度及所述CBR对应的当前短周期虚拟缓冲区的第一充盈度,并根据所述第一码流信息中的码流长度、所述第一充盈度及所述第一目标比特平均值,通过计算、更新所述第一充盈度;

第三计算单元,用于获取所述CBR对应的当前短周期虚拟缓冲区的第一目标充盈度,并根据所述第一充盈度、所述第一目标充盈度、所述第一目标比特平均值及预设调节强度参数,通过计算、得到所述当前短周期中当前视频帧的第一目标比特;

第四计算单元,用于根据所述第一码流信息中的编码质量信息、所述第一码流信息中的码流长度、所述第一目标比特及所述第一目标比特平均值,通过计算、确定所述CBR对应的当前短周期的第一帧级编码参数。

可选的,所述帧级VBR码率控制子模块,包括:

第五计算单元,用于获取并根据所述预设码率控制参数中的预设码率上限及预设帧率,通过计算、得到所述当前短周期内视频帧的第二目标比特平均值;

第六计算单元,用于获取所述第一码流信息中的码流长度、所述VBR对应的当前短周期虚拟缓冲区的第二充盈度及所述VBR对应的当前短周期虚拟缓冲区的第二目标充盈度,并根据所述第一码流信息中的码流长度、所述第二充盈度及所述第二目标比特平均值,通过计算、确定更新后的所述第二充盈度和所述第二目标充盈度中的最大值为所述第二充盈度;

第七计算单元,用于根据所述第二充盈度、所述第二目标充盈度、所述第二目标比特平均值及预设调节强度参数,通过计算、得到所述当前短周期中当前视频帧的第二目标比特;

第八计算单元,用于根据所述第一码流信息中的编码质量信息、所述第一码流信息中的码流长度、所述第二目标比特及所述第二目标比特平均值,通过计算、确定所述VBR对应的当前短周期的第二帧级编码参数。

可选的,所述装置还用于:

在所述长周期结束时,进行下一个长周期内第一个短周期的码率控制。

可选的,所述装置还用于:

在所述当前短周期未结束时,则执行所述获取第一码流信息的步骤。

可选的,所述长周期控制模块,包括:

期望输出比特计算子模块,用于获取所述当前短周期的周期长度及所述长周期虚拟缓冲区的期望输出码率,并将所述长周期虚拟缓冲区的期望输出码率确定为所述当前短周期的期望输出码率;根据所述当前短周期的周期长度及所述当前短周期的期望输出码率,通过计算、得到所述当前短周期的期望输出比特;

虚拟缓冲区更新子模块,用于获取所述长周期虚拟缓冲区的实际充盈度,根据所述当前短周期的期望输出比特、所述当前短周期的总编码比特及所述长周期虚拟缓冲区的实际充盈度,通过计算、更新所述长周期虚拟缓冲区的实际充盈度;

缓冲区自适应控制子模块,用于根据所述长周期虚拟缓冲区的实际充盈度、所述预设初始充盈度、所述长周期虚拟缓冲区的目标平衡上限及所述长周期虚拟缓冲区的目标平衡下限,计算所述长周期虚拟缓冲区的目标充盈度;根据所述长周期虚拟缓冲区的实际充盈度、所述预设初始充盈度、所述长周期虚拟缓冲区的目标平衡上限及所述长周期虚拟缓冲区的目标平衡下限,计算复杂度目标比特加权因子;

缓冲区目标码率预测子模块,用于根据所述长周期虚拟缓冲区的目标充盈度、所述长周期虚拟缓冲区的实际充盈度、预设调节强度参数及预设调节的基准码率,通过计算、得到所述长周期中所述相邻下一个短周期的虚拟缓冲区目标码率;

复杂度目标码率预测子模块,用于根据所述当前视频帧的复杂度信息,所述预设图像质量等级、所述当前短周期的总编码比特数及所述当前短周期的周期长度,确定所述长周期中所述相邻下一个短周期的复杂度目标码率;

平均码率确定子模块,用于根据所述长周期中所述相邻下一个短周期的虚拟缓冲区目标码率、所述长周期中所述相邻下一个短周期的复杂度目标码率及所述复杂度目标比特加权因子,通过加权计算、确定所述长周期中所述相邻下一个短周期的平均码率。

可选的,所述缓冲区自适应控制子模块,具体还用于:

判断所述长周期虚拟缓冲区的实际充盈度是否介于所述长周期虚拟缓冲区的目标平衡点上限与所述长周期虚拟缓冲区的目标平衡下限之间;

若是,则确定所述初始充盈度为所述长周期虚拟缓冲区的目标充盈度;

若否,在所述长周期虚拟缓冲区的实际充盈度大于所述长周期虚拟缓冲区的目标平衡点上限时,则确定所述长周期虚拟缓冲区的目标平衡点上限为所述长周期虚拟缓冲区的目标充盈度;在所述长周期虚拟缓冲区的实际充盈度小于所述长周期虚拟缓冲区的目标平衡点下限时,则确定所述长周期虚拟缓冲区的目标平衡点下限为所述长周期虚拟缓冲区的目标充盈度。

可选的,所述缓冲区自适应控制子模块,具体还用于:

判断所述长周期虚拟缓冲区的实际充盈度是否介于所述长周期虚拟缓冲区的目标平衡点上限与所述长周期虚拟缓冲区的目标平衡下限之间;

若是,则确定所述复杂度目标比特加权因子为预设第一数值;

若否,则确定所述复杂度目标比特加权因子为预设第二数值。

本发明实施例提供的码率控制方法及装置,通过设置码率控制参数,既精确计算存储空间,又应对带宽的限制,量化指标精确控制实际编码的平均码率与设定的平均码率之间的误差,充分利用已配置的存储空间,通过复杂度信息保证图像质量的稳定,并通过长周期结合短周期的码率控制方法,实现空闲时段和繁忙时段的图像质量均稳定,从而实现了在保证图像满足一定质量的条件下,合理分配存储空间。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为现有技术的码率控制器与编码器的关系示意图;

图2为本发明实施例的码率控制方法的一种流程示意图;

图3为本发明实施例的长周期与短周期在时间尺度上的关系示意图;

图4为本发明实施例的短周期控制单元结构示意图;

图5为本发明实施例的码率控制方法的另一种流程示意图;

图6为本发明实施例的目标充盈度和加权因子确定步骤的一种流程示意图;

图7为本发明实施例的码率控制装置的一种结构示意图;

图8为本发明实施例的码率控制装置的另一种结构示意图;

图9为本发明实施例的码率控制装置的再一种结构示意图;

图10为本发明实施例的短周期控制模块的一种结构示意图;

图11为本发明实施例的长周期控制模块的一种结构示意图;

图12为本发明实施例的qp_scale[bg_qp]/qp_scale[fg_qp]与背景QP值/前景QP值的关系示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

为了充分利用已配置的存储空间,并实现在场景长期复杂的情况下,保证繁忙时段和空闲时段的图像质量均稳定,本发明实施例提供了一种码率控制方法及装置。

下面首先对本发明实施例所提供的码率控制方法进行介绍。

需要说明的是,本发明实施例所提供的一种码率控制方法的执行主体为视频传输/存储应用系统中的码率控制器。其中,实现本实施例所提供的一种码率控制方法的功能软件为设置于码率控制器中的软件。

如图2所示,本发明实施例所提供的一种码率控制方法,可以包括如下步骤:

S201,获取并根据长周期中当前短周期的码率控制模式及编码控制参数,确定当前短周期的帧级编码参数,并发送该帧级编码参数至编码器。

其中,码率控制模式包括:VBR(Variable Bit Rate,可变码率模式)和CBR(Constant Bit Rate,固定码率模式),针对本实施例,码率控制模式可以是仅为VBR的码率控制模式,也可以是仅为CBR的码率控制模式,还可以是既包含VBR又包含CBR的码率控制模式,这些都是合理的。当前短周期的平均码率为当前短周期的视频帧的目标能够达到的码率的平均值。长周期包含多个短周期,当前短周期为多个短周期中的任一个,短周期包括起始时间和结束时间,当前短周期的结束时间与相邻下一个短周期的起始时间相同,短周期包含多个视频帧,当前视频帧为多个视频帧的任一个,编码控制参数至少包括:预设码率控制参数及第一码流信息,第一码流信息为当前短周期中当前视频帧的相邻上一视频帧已编码的码流信息。需要说明的是,一般情况下,预设平均码率小于预设码率上限。长周期和短周期在时间尺度上的划分如图3所示。码率控制器获取用户预先设定的存储周期T,并设置该存储周期为长周期的周期长度T1(即T1=T),该长周期可以划分为多个短周期,短周期的周期长度为T2,该短周期中还可以作为长周期再划分为多个短周期T3,图中t表示当前周期,则t+1表示下一周期,依次至t+n表示当前周期之后的第n个周期,n大于2。需要强调的是,如图4所示,短周期401中包含的可以是多个视频帧402,也可以是多个组成短周期401的、可视为更小的短周期的GOP 403(Group of Pictures,图像组),这都是合理的。具体的,所述预设码率控制参数可以包括:预设码率上限、预设图像质量等级、预设平均码率、预设平均码率控制误差及预设帧率;所述码流信息可以包括编码质量、码流长度等信息;编码质量可以由编码QP(Quantization Parameter,量化参数)值表示。需要强调的是,预设码率控制参数可以是用户根据实际需求情况输入的,也可以是根据周期内的参数计算得到的。

需要说明的是,在实际应用中,针对两种不同的码率控制模式:VBR和CBR,本实施例对码率控制方法的具体实现进行规定,不对编码参数的具体类别进行规定,可以是量化参数QP的值,也可以是强制丢帧标志,这都是合理的。

S202,获取编码器发送的第二码流信息。

其中,第二码流信息为编码器根据当前短周期的帧级编码参数、对当前视频帧进行编码得到的码流信息。

需要说明的是,编码器依据编码参数对输入的视频帧进行编码,视频编码的过程就是通过特定的压缩技术,将某个视频格式的文件转换成另一种视频格式文件的方式。视频流传输中最为重要的编解码标准有国际电联的H.261、H.263、H.264、H.265,运动静止图像专家组的M-JPEG和国际标准化组织运动图像专家组的MPEG系列标准。本实施例采用以上任一种视频编码技术都是合理的,这些视频编码技术均属于现有技术,这里不再一一赘述。

S203,根据第二码流信息,统计包括当前视频帧的复杂度信息、当前短周期的总编码比特及当前短周期的编码质量信息的统计信息。

其中,当前视频帧的复杂度信息可以通过运动检测得到,也可以通过纹理复杂度分析得到,还可以通过对已编码码流的大小、图像质量等进行分析得到,这些都是合理的。并且视频帧的复杂度可以用运动复杂度表示,也可以用纹理复杂度表示;复杂度信息的表示方式可以是运动区域面积,也可以是残差的SAD(Sum of Absolute Difference,绝对差值和)值,这都是合理的。

需要说明的是,当前短周期的总编码比特可以是通过将当前短周期内所有第二码流信息中的码流长度累加统计得到的,当前短周期的编码质量信息可以是通过将当前短周期内所有第二码流信息中的编码质量做平均值统计得到的。

可选的,在一种具体的实现方式中,联动一个背景分析模块,在编码及码率控制前,对输入待编码视频帧进行背景建模及运动检测,统计运动区域面积,作为视频帧复杂度的表示方法。

需要说明的是,可以将统计的当前视频帧的复杂度信息、当前短周期的总编码比特及当前短周期的编码质量等统计信息存储至存储器或者内存中,以在需要进行长周期控制时输出。

S204,在长周期未结束时,判断当前短周期是否结束,如果结束,获取并根据当前短周期的周期长度、预设码率控制参数及统计信息,确定长周期中当前短周期的相邻下一个短周期的平均码率,以通过计算相邻下一个短周期的帧级编码参数,从而对相邻下一个短周期的视频帧进行编码。

其中,判断长周期及短周期是否结束可以使用时间辅助信息,其中,时间辅助信息可以为时标信息,也可以为当前时刻。例如,在进行周期配置时,配置长周期的周期长度为24小时,短周期的周期长度为10分钟,那么在长周期开始时标记长周期的开始时刻为0,在短周期开始时标记短周期的开始时刻为0,在执行过程中累计执行的时间,在到达10分钟后认为短周期结束,在到达24小时后认为长周期结束;或者再长周期开始时记录长周期开始的初始北京时间,在短周期开始时记录短周期开始的初始北京时间,在执行过程中实时采集执行时刻的北京时间,与初始北京时间作差,如果到达10分钟则认为短周期结束,如果达到24小时则认为长周期结束,这都是合理的。当然,这里的北京时间也可以为任意时区的时间。

需要说明的是,长周期中包含有短周期,每当一个短周期结束时,需要确定下一个短周期的平均码率,下一个短周期只有在获取到平均码率时,才可以根据该平均码率计算帧级编码参数,以进行编码。

具体的,在长周期结束时,进行下一个长周期内第一个短周期的码率控制。

需要说明的是,下一个长周期内第一个短周期的码率控制与上述S201至S204的步骤相同,这里不再赘述。

具体的,在当前短周期未结束时,则执行获取第一码流信息的步骤。

需要说明的是,在当前短周期中当前视频帧控制完成后,当前视频帧即为相邻上一视频帧,当前视频帧的相邻下一个视频帧即为当前短周期中的当前视频帧。

应用本实施例,通过设置码率控制参数,既精确计算存储空间,又应对带宽的限制,量化指标精确控制实际编码的平均码率与设定的平均码率之间的误差,充分利用已配置的存储空间,通过复杂度信息保证图像质量的稳定,并通过长周期结合短周期的码率控制方法,实现空闲时段和繁忙时段的图像质量均稳定,从而实现了在保证图像满足一定质量的条件下,合理分配存储空间。

如图5所示,本发明实施例所提供的一种码率控制方法,在所述获取并根据长周期中当前短周期的码率控制模式及编码控制参数,确定当前短周期的帧级编码参数的步骤之前,还可以包括如下步骤:

S501,获取用户输入的预设码率控制参数及长周期的预设周期长度。

其中,预设码率控制参数可以包括:预设码率上限、预设图像质量等级、预设平均码率及预设平均码率控制误差;预设码率控制参数以及长周期的预设周期长度都可以由用户根据具体需要进行限定。

S502,根据预设平均码率控制误差、预设平均码率、长周期的预设周期长度、预设初始充盈度及预设条件,确定长周期虚拟缓冲区的目标平衡上限、长周期虚拟缓冲区的目标平衡下限及长周期虚拟缓冲区的期望输出码率。

其中,预设条件为:

ERROR_RANGE为预设平均码率控制误差,MinVBF为长周期虚拟缓冲区的目标平衡下限,InitVBF为预设初始充盈度,MaxVBF为长周期虚拟缓冲区的目标平衡上限,TARGET_BITRATE为预设平均码率,T为长周期的预设周期长度,target_bitrate为长周期虚拟缓冲区的期望输出码率。

需要说明的是,为了实现长周期的控制,需要创建一个虚拟缓冲区,预设初始充盈度、长周期虚拟缓冲区的目标平衡上限、长周期虚拟缓冲区的目标平衡下限及长周期虚拟缓冲区的期望输出码率均属于虚拟缓冲区的参数,这些参数表征了虚拟缓冲区的大小和容量,且这些参数与预设码率控制参数中的预设平均码率控制误差、预设平均码率有直接关系。

可选的,在一种具体的实现方式中,根据公式(1),确定长周期虚拟缓冲区的目标平衡上限、长周期虚拟缓冲区的目标平衡下限及长周期虚拟缓冲区的期望输出码率。

其中,InitVBF为预设初始充盈度,MaxVBF为长周期虚拟缓冲区的目标平衡上限,ERROR_RANGE为预设平均码率控制误差,TARGET_BITRATE为预设平均码率,T为长周期的预设周期长度,MinVBF为长周期虚拟缓冲区的目标平衡下限,target_bitrate为长周期虚拟缓冲区的期望输出码率。

需要说明的是,在初始的情况下预先设定初始充盈度为0,当然预先设定初始充盈度为其他任一数值也是可以的。本实施例中假设初始充盈度为介于长周期虚拟缓冲区的目标平衡上限MaxVBF与长周期虚拟缓冲区的目标平衡下限MinVBF之间,且预设平均码率控制误差的大小等于MaxVBF与MinVBF之差的1/2,当然如果假设预设平均码率控制误差的大小等于MaxVBF与MinVBF之差的1/3、1/4等小于1的倍数,都是合理的。

需要说明的是,由于码率控制模式可以是CBR,也可以是VBR,还可以是CBR与VBR混合的码率控制模式,这些都是合理的。根据不同的码率控制模式,确定当前短周期的帧级编码参数的步骤有所不同。

可选的,所述编码控制参数还可以包括:当前短周期的平均码率;

所述获取并根据长周期中当前短周期的码率控制模式及编码控制参数,确定当前短周期的帧级编码参数的步骤,可以包括:

在获取的长周期中当前短周期的码率控制模式为固定码率模式CBR时,获取并根据当前短周期的平均码率、预设码率控制参数中的预设帧率及第一码流信息,通过计算、确定CBR对应的第一帧级编码参数,并将第一帧级编码参数作为当前短周期的帧级编码参数;

或者,

在获取的长周期中当前短周期的码率控制模式为可变码率模式VBR时,获取并根据预设码率控制参数中的预设码率上限、预设帧率及第一码流信息,通过计算、确定VBR对应的第二帧级编码参数,并将第二帧级编码参数作为当前短周期的帧级编码参数,其中,所述VBR为所述长周期中第一个短周期的码率控制模式;

或者,

在获取的长周期中当前短周期的码率控制模式既包括CBR、又包括VBR时,获取并根据当前短周期的平均码率、预设码率控制参数中的预设帧率及第一码流信息,通过计算、确定CBR对应的第一帧级编码参数;根据预设码率控制参数中的预设码率上限、预设帧率及第一码流信息,通过计算、确定VBR对应的第二帧级编码参数;在帧级编码参数与码流长度正相关时,确定第一帧级编码参数与第二帧级编码参数中的最小值为当前短周期的帧级编码参数;在帧级编码参数与码流长度反相关时,确定第一帧级编码参数与第二帧级编码参数中的最大值为当前短周期的帧级编码参数。

需要说明的是,由于VBR的码率控制模式下,仅需要通过预设码率控制参数中的预设码率上限、预设帧率及第一码流信息确定当前短周期的帧级编码参数,而不需要当前短周期的平均码率。因此,在本实施例中,长周期中的第一个短周期的码率控制模式可以为CBR、VBR或者既包括CBR又包括VBR,计算得到的下一个短周期的平均码率,而在长周期中除第一个短周期以外的其他短周期,码率控制模式只能为CBR或者既包括CBR又包括VBR,不可以为VBR。

下面以帧级编码参数为QP值为例,分别对码率控制模式为上述三种情况时,确定当前短周期的帧级编码参数的步骤作介绍。

可选的,在一种具体的实现方式中,在获取的长周期中当前短周期的码率控制模式为CBR时,所述获取并根据当前短周期的平均码率、预设码率控制参数中的预设帧率及第一码流信息,通过计算、确定CBR对应的第一帧级编码参数,并将该第一帧级编码参数作为当前短周期的帧级编码参数的步骤,可以包括:

首先,获取并根据当前短周期的平均码率及预设码率控制参数中的预设帧率,通过计算、得到当前短周期内视频帧的第一目标比特平均值。

需要说明的是,本实施例中,还可以根据当前短周期的平均码率及预设码率控制参数中的预设帧率,通过计算,得到视频帧的第一目标比特最小值和第一目标比特最大值。

具体的,计算当前短周期内视频帧的第一目标比特平均值所使用的公式如公式(2)所示,计算视频帧的第一目标比特最小值和第一目标比特最大值所使用的公式如公式(3)所示,

其中,avg_frame_size为当前短周期内视频帧的第一目标比特平均值,Targett为当前短周期的平均码率,frame_rate为预设帧率,MIN_Target_bytesCBR为视频帧的第一目标比特最小值,MAX_Target_bytesCBR为视频帧的第一目标比特最大值。

其次,获取第一码流信息中的码流长度及CBR对应的当前短周期虚拟缓冲区的第一充盈度,并根据第一码流信息中的码流长度、第一充盈度及第一目标比特平均值,通过计算、更新第一充盈度。

具体的,计算CBR对应的当前短周期虚拟缓冲区的第一充盈度所使用的公式如公式(4)所示,

currVBFCBR=currVBFCBR+(recent_bs_lens-avg_frame_size) (4)

其中,currVBFCBR为CBR对应的当前短周期虚拟缓冲区的第一充盈度,recent_bs_lens为第一码流信息中的码流长度,avg_frame_size为当前短周期内视频帧的第一目标比特平均值。

然后,获取CBR对应的当前短周期虚拟缓冲区的第一目标充盈度,并根据第一充盈度、第一目标充盈度、第一目标比特平均值及预设调节强度参数,通过计算、得到当前短周期中当前视频帧的第一目标比特。

其中,CBR对应的当前短周期虚拟缓冲区的第一目标充盈度可以取值为初始化过程中得到的预设初始充盈度,还可以取值为初始化过程中得到的预设初始充盈度上下浮动预设值的充盈度。

具体的,计算当前短周期中当前视频帧的第一目标比特所使用的公式如公式(5)所示,

其中,Target_bytesCBR为当前短周期中当前视频帧的第一目标比特,Kp为预设调节强度参数,targetVBFCBR为CBR对应的当前短周期虚拟缓冲区的第一目标充盈度,currVBFCBR为CBR对应的当前短周期虚拟缓冲区的第一充盈度,avg_frame_size为当前短周期内视频帧的第一目标比特平均值;预设调节强度参数是控制当前短周期中当前视频帧的目标比特调节强度的参数,可以取0至1.0中任一数值。

需要强调的是,第一目标比特与第一目标比特最小值、第一目标比特最大值存在以下关系:

Target_bytesCBR=CLIP3(Target_bytesCBR,MIN_Target_bytesCBR,MAX_Target_bytesCBR)其中,CLIP3(Target_bytesCBR,MIN_Target_bytesCBR,MAX_Target_bytesCBR)函数表示在第一目标比特Target_bytesCBR大于第一目标比特最小值MIN_Target_bytesCBR,且小于第一目标比特最大值MAX_Target_bytesCBR时,Target_bytesCBR即为其本身;在Target_bytesCBR小于MIN_Target_bytesCBR时,将MIN_Target_bytesCBR赋给Target_bytesCBR;在Target_bytesCBR大于MAX_Target_bytesCBR时,将MAX_Target_bytesCBR赋给Target_bytesCBR。

最后,根据第一码流信息中的编码质量信息、第一码流信息中的码流长度、第一目标比特及第一目标比特平均值,通过计算、确定CBR对应的当前短周期的第一帧级编码参数,并将该第一帧级编码参数作为当前短周期的帧级编码参数。

具体的,计算CBR对应的当前短周期的第一帧级编码参数所使用的公式如公式(6)所示,

其中,QPCBR为CBR对应的当前短周期的第一帧级编码参数,prev_qp为编码质量的量化参数值,Kbytes_to_qp为预设换算参数,recent_bs_lens为第一码流信息中的码流长度,Target_bytesCBR为当前短周期中当前视频帧的第一目标比特,avg_frame_size为当前短周期内视频帧的第一目标比特平均值;编码质量的量化参数值可以是相邻上一视频帧已编码的码流长度使用的编码QP值;预设换算参数表示编码比特与QP值的换算关系;需要强调的是,预设换算参数与视频帧的类型有关,视频帧的类型包括P帧、I帧及B帧;I帧的预设换算参数最大,B帧的预设换算参数最小。

可选的,在一种具体的实现方式中,在获取的长周期中当前短周期的码率控制模式为VBR时,所述获取并根据预设码率控制参数中的码率上限、预设帧率及第一码流信息,通过计算、确定VBR对应的当前短周期的第二帧级编码参数,并将该第二帧级编码参数作为当前短周期的帧级编码参数的步骤,可以包括:

首先,获取并根据预设码率控制参数中的预设码率上限及预设帧率,通过计算、得到当前短周期内视频帧的第二目标比特平均值。

需要说明的是,本实施例中,还可以根据预设码率控制参数中的预设码率上限及预设帧率,通过计算,得到视频帧的第二目标比特最小值和第二目标比特最大值。

具体的,计算当前短周期内视频帧的第二目标比特平均值所使用的公式如公式(7)所示,计算视频帧的第二目标比特最小值和第二目标比特最大值所使用的公式如公式(8)所示,

其中,max_frame_size为当前短周期内视频帧的第二目标比特平均值,MAX_BITRATE为预设码率上限,frame_rate为预设帧率,MIN_Target_bytesVBR为视频帧的第二目标比特最小值,MAX_Target_bytesVBR为视频帧的第二目标比特最大值。

其次,获取第一码流信息中的码流长度、VBR对应的当前短周期虚拟缓冲区的第二充盈度及VBR对应的当前短周期虚拟缓冲区的第二目标充盈度,并根据第一码流信息中的码流长度、第二充盈度及第二目标比特平均值,通过计算、确定更新后的第二充盈度和第二目标充盈度中的最大值为第二充盈度。

其中,VBR对应的当前短周期虚拟缓冲区的第二目标充盈度一般取值为初始化过程中得到的预设初始充盈度,还可以取值为初始化过程中得到的预设初始充盈度上下浮动预设值的充盈度。

具体的,计算VBR对应的当前短周期虚拟缓冲区的第二充盈度所使用的公式如公式(9)所示,更新第二充盈度所使用的公式如公式(10)所示,

currVBFVBR=currVBFVBR+(recent_bs_lens-max_frame_size) (9)

currVBFVBR=MAX(currVBFVBR,targetVBFVBR) (10)

其中,currVBFVBR为VBR对应的当前短周期虚拟缓冲区的第二充盈度,recent_bs_lens为第一码流信息中的码流长度,max_frame_size为当前短周期内视频帧的第二目标比特平均值,targetVBFVBR为VBR对应的当前短周期虚拟缓冲区的第二目标充盈度。

然后,根据第二充盈度、第二目标充盈度、第二目标比特平均值及预设调节强度参数,通过计算、得到当前短周期中当前视频帧的第二目标比特。

具体的,计算当前短周期中当前视频帧的第二目标比特所使用的公式如公式(11)所示,

其中,Target_bytesVBR为当前短周期中当前视频帧的第二目标比特,Kp为预设调节强度参数,targetVBFVBR为VBR对应的当前短周期虚拟缓冲区的第二目标充盈度,currVBFVBR为VBR对应的当前短周期虚拟缓冲区的第二充盈度,max_frame_size为当前短周期内视频帧的第二目标比特平均值;预设调节强度参数是控制当前短周期中当前视频帧的目标比特调节强度的参数,可以取0至1.0中任一数值。

需要强调的是,第二目标比特与第二目标比特最小值、第二目标比特最大值存在以下关系:

Target_bytesVBR=CLIP3(Target_bytesVBR,MIN_Target_bytesVBR,MAX_Target_bytesVBR)其中,CLIP3(Target_bytesVBR,MIN_Target_bytesVBR,MAX_Target_bytesVBR)函数表示在第二目标比特Target_bytesVBR大于第二目标比特最小值MIN_Target_bytesVBR,且小于第二目标比特最大值MAX_Target_bytesVBR时,Target_bytesVBR即为其本身;在Target_bytesVBR小于MIN_Target_bytesVBR时,将MIN_Target_bytesVBR赋给Target_bytesVBR;在Target_bytesVBR大于MAX_Target_bytesVBR时,将MAX_Target_bytesVBR赋给Target_bytesVBR。

最后,根据第一码流信息中的编码质量信息、第一码流信息中的码流长度、第二目标比特及第二目标比特平均值,通过计算、确定VBR对应的当前短周期的第二帧级编码参数,并将该第二帧级编码参数作为当前短周期的帧级编码参数。

具体的,计算VBR对应的当前短周期的第二帧级编码参数所使用的公式如公式(12)所示,

其中,QPVBR为VBR对应的当前短周期的第二帧级编码参数,prev_qp为编码质量的量化参数值,Kbytes_to_qp为预设换算参数,recent_bs_lens为第一码流信息中的码流长度,Target_bytesVBR为当前短周期中当前视频帧的第二目标比特,max_frame_size为当前短周期内视频帧的第二目标比特平均值;编码质量的量化参数值可以是相邻上一视频帧已编码的码流长度使用的编码QP值;预设换算参数表示编码比特与QP值的换算关系;需要强调的是,预设换算参数与视频帧的类型有关,视频帧的类型包括P帧、I帧及B帧;I帧的预设换算参数最大,B帧的预设换算参数最小。

需要说明的是,针对CBR利用预设平均码率,限定码率的目标值,针对VBR利用预设码率上限,限定码率的最大值,为短周期CBR的码率控制及短周期VBR的码率控制分别建立虚拟缓冲区;可以将CBR和VBR的优点做相应融合,在充分利用存储空间的同时,保证图像质量的稳定性。

可选的,在一种具体的实现方式中,所述获取并根据当前短周期的周期长度、预设码率控制参数及统计信息,确定长周期中当前短周期的相邻下一个短周期的平均码率的步骤,可以包括:

首先,获取长周期虚拟缓冲区的期望输出码率,并将长周期虚拟缓冲区的期望输出码率确定为当前短周期的期望输出码率。

其次,获取并根据当前短周期的周期长度及上述当前短周期的期望输出码率,通过计算、得到当前短周期的期望输出比特。

具体的,计算当前短周期的期望输出比特所使用的公式如公式(13)所示,

Sdstt=target_bitrate·T2 (13)

其中,Sdstt为当前短周期的期望输出比特,target_bitrate为当前短周期的期望输出码率,T2为当前短周期的周期长度。

再次,获取长周期虚拟缓冲区的实际充盈度,根据当前短周期的期望输出比特、当前短周期的总编码比特及长周期虚拟缓冲区的实际充盈度,通过计算、更新长周期虚拟缓冲区的实际充盈度。

具体的,计算长周期虚拟缓冲区的实际充盈度所使用的公式如公式(14)所示,

currVBF=currVBF+(Scurt-Sdstt) (14)

其中,currVBF为长周期虚拟缓冲区的实际充盈度,Scurt为当前短周期的总编码比特,Sdstt为当前短周期的期望输出比特。

然后,根据长周期虚拟缓冲区的实际充盈度、预设初始充盈度、长周期虚拟缓冲区的目标平衡上限及长周期虚拟缓冲区的目标平衡下限,计算长周期虚拟缓冲区的目标充盈度。

具体的,所述计算长周期虚拟缓冲区的目标充盈度的步骤,可以包括:

判断长周期虚拟缓冲区的实际充盈度是否介于长周期虚拟缓冲区的目标平衡点上限与长周期虚拟缓冲区的目标平衡下限之间;

若是,则确定初始充盈度为长周期虚拟缓冲区的目标充盈度;

若否,在长周期虚拟缓冲区的实际充盈度大于长周期虚拟缓冲区的目标平衡点上限时,则确定长周期虚拟缓冲区的目标平衡点上限为长周期虚拟缓冲区的目标充盈度;在长周期虚拟缓冲区的实际充盈度小于长周期虚拟缓冲区的目标平衡点下限时,则确定长周期虚拟缓冲区的目标平衡点下限为长周期虚拟缓冲区的目标充盈度。

再然后,根据长周期虚拟缓冲区的实际充盈度、预设初始充盈度、长周期虚拟缓冲区的目标平衡上限及长周期虚拟缓冲区的目标平衡下限,计算复杂度目标比特加权因子。

具体的,所述计算复杂度目标比特加权因子的步骤,可以包括:

判断所述长周期虚拟缓冲区的实际充盈度是否介于所述长周期虚拟缓冲区的目标平衡点上限与所述长周期虚拟缓冲区的目标平衡下限之间;

若是,则确定所述复杂度目标比特加权因子为预设第一数值,其中,预设第一数值为0至1中的任一数值;

若否,则确定所述复杂度目标比特加权因子为预设第二数值,其中,预设第二数值为0至1中除预设第一数值以外的任一数值。

可选的,如图6所示,在一种具体的实现方式中,确定长周期虚拟缓冲区的目标充盈度及复杂度目标比特加权因子的步骤,可以包括:

S601,判断长周期虚拟缓冲区的实际充盈度currVBF是否大于长周期虚拟缓冲区的目标平衡上限MaxVBF,如果是则执行S602,否则执行S603;

S602,输出MaxVBF为长周期虚拟缓冲区的目标充盈度targetVBF,复杂度目标比特加权因子s=0;

S603,判断currVBF是否小于长周期虚拟缓冲区的目标平衡下限MinVBF,如果是则执行S604,否则执行S605;

S604,输出MinVBF为targetVBF,复杂度目标比特加权因子s=0;

S605,输出预设初始充盈度InitVBF为targetVBF,复杂度目标比特加权因子s=1。

需要说明的是,长周期虚拟缓冲区的实际充盈度越接近长周期虚拟缓冲区的目标平衡点上限或者长周期虚拟缓冲区的目标平衡点下限,复杂度目标比特加权因子越小,缓冲区目标比特的加权因子越大;长周期虚拟缓冲区的目标充盈度调整的趋势及方向与长周期虚拟缓冲区的实际充盈度的变化方向一致,长周期虚拟缓冲区的实际充盈度越大,长周期虚拟缓冲区的目标充盈度随之升高。

再然后,根据长周期虚拟缓冲区的目标充盈度、长周期虚拟缓冲区的实际充盈度、预设调节强度参数及预设调节的基准码率,通过计算、得到长周期中相邻下一个短周期的虚拟缓冲区目标码率。

具体的,计算长周期中相邻下一个短周期的虚拟缓冲区目标码率所使用的公式如公式(15)所示,

其中,Target_VBFt+1为长周期中相邻下一个短周期的虚拟缓冲区目标码率,Kp为预设调节强度参数,targetVBF为长周期虚拟缓冲区的目标充盈度,currVBF为长周期虚拟缓冲区的实际充盈度,Target_bitrate为预设调节的基准码率。

再然后,根据当前视频帧的复杂度信息,预设图像质量等级、当前短周期的总编码比特数及当前短周期的周期长度,确定长周期中相邻下一个短周期的复杂度目标码率。

具体的,计算长周期中相邻下一个短周期的复杂度目标码率所使用的公式如公式(16)所示,

其中,fg_bytest为长周期中当前短周期的总前景比特,fg_numt为长周期中当前短周期的总前景点数,qp_scale[fg_qp]为前景QP值与编码大小的相对关系,bg_numt为长周期中当前短周期的总背景点数,qp_scale[bg_qp]为背景QP值与编码大小的相对关系,Scurt为当前短周期的总编码比特,bg_bytest为长周期中当前短周期的总背景比特,fg_bytest+1为长周期中相邻下一个短周期的总前景比特,fg_numt+1为长周期中相邻下一个短周期的总前景点数,fg_numt+1可通过fg_numt+1=2·fg_numt-fg_numt-1估计获得,fg_numt-1为长周期中相邻上一个短周期的总前景点数,bg_bytest+1为长周期中相邻下一个短周期的总背景比特,bg_numt+1为长周期中相邻下一个短周期的总背景点数,Target_CPLXt+1为长周期中相邻下一个短周期的复杂度目标码率,T2为当前短周期的周期长度。

需要说明的是,如图12所示,qp_scale[bg_qp]与背景QP值以及qp_scale[fg_qp]与前景QP值的关系为非线性反比关系。

最后,根据长周期中相邻下一个短周期的虚拟缓冲区目标码率、长周期中相邻下一个短周期的复杂度目标码率及复杂度目标比特加权因子,通过加权计算、确定长周期中相邻下一个短周期的平均码率。

具体的,计算长周期中相邻下一个短周期的平均码率所使用的公式如公式(17)所示,

Targett+1=s·Target_CPLXt+1+(1-s)·Target_VBFt+1 (17)

其中,Targett+1为长周期中相邻下一个短周期的平均码率,s为复杂度目标比特加权因子,Target_CPLXt+1为长周期中相邻下一个短周期的复杂度目标码率,Target_VBFt+1为长周期中相邻下一个短周期的虚拟缓冲区目标码率。

应用本实施例,通过设置码率控制参数,既精确计算存储空间,又应对带宽的限制,量化指标精确控制实际编码的平均码率与设定的平均码率之间的误差,充分利用已配置的存储空间,通过复杂度信息保证图像质量的稳定,并通过长周期结合短周期的码率控制方法,实现空闲时段和繁忙时段的图像质量均稳定,从而实现了在保证图像满足一定质量的条件下,合理分配存储空间;并且通过初始化确定满足一定条件的包括长周期虚拟缓冲区的目标平衡上限、长周期虚拟缓冲区的目标平衡下限及长周期虚拟缓冲区的期望输出码率的初始化参数,构建了用于长周期控制的虚拟缓冲区,保证在短周期控制时充分利用该虚拟缓冲区空间。

相应于上述码率控制方法实施例,如图7所示,本发明实施例提供一种码率控制装置,所述装置可以包括:

短周期控制模块710,用于获取并根据长周期中当前短周期的码率控制模式及编码控制参数,确定所述当前短周期的帧级编码参数,并发送所述帧级编码参数至编码器,其中,所述长周期包含多个短周期,所述当前短周期为所述多个短周期中的任一个,所述编码控制参数至少包括:预设码率控制参数及第一码流信息,所述第一码流信息为所述当前短周期中当前视频帧的相邻上一视频帧已编码的码流信息,所述预设码率控制参数包括:预设码率上限、预设图像质量等级、预设平均码率、预设平均码率控制误差及预设帧率,所述码流信息包括:编码质量信息及码流长度信息;获取所述编码器发送的第二码流信息,其中,所述第二码流信息为所述编码器根据所述当前短周期的帧级编码参数、对所述当前视频帧进行编码得到的码流信息;

数据统计模块720,用于根据所述第二码流信息,统计包括所述当前视频帧的复杂度信息、所述当前短周期的总编码比特及所述当前短周期的编码质量信息的统计信息;

长周期控制模块730,用于在所述长周期未结束时,判断所述当前短周期是否结束,如果结束,获取并根据所述当前短周期的周期长度、所述预设码率控制参数及所述统计信息,确定所述长周期中所述当前短周期的相邻下一个短周期的平均码率,以通过计算所述相邻下一个短周期的帧级编码参数,从而对所述相邻下一个短周期的视频帧进行编码。

应用本实施例,通过设置码率控制参数,既精确计算存储空间,又应对带宽的限制,量化指标精确控制实际编码的平均码率与设定的平均码率之间的误差,充分利用已配置的存储空间,通过复杂度信息保证图像质量的稳定,并通过长周期结合短周期的码率控制方法,实现空闲时段和繁忙时段的图像质量均稳定,从而实现了在保证图像满足一定质量的条件下,合理分配存储空间。

更进一步的,在包含短周期控制模块710、数据统计模块720、长周期控制模块730的基础上,如图8所示,本实施例所提供的一种码率控制装置还可以包括:

模型初始化模块740,用于获取用户输入的预设码率控制参数及长周期的预设周期长度;根据所述预设平均码率控制误差、所述预设平均码率、所述长周期的预设周期长度、预设初始充盈度及预设条件,确定长周期虚拟缓冲区的目标平衡上限、所述长周期虚拟缓冲区的目标平衡下限及所述长周期虚拟缓冲区的期望输出码率,其中,所述预设条件为:

所述ERROR_RANGE为所述预设平均码率控制误差,所述MinVBF为所述长周期虚拟缓冲区的目标平衡下限,所述InitVBF为所述预设初始充盈度,所述MaxVBF为所述长周期虚拟缓冲区的目标平衡上限,所述TARGET_BITRATE为所述预设平均码率,所述T为所述长周期的预设周期长度,所述target_bitrate为所述长周期虚拟缓冲区的期望输出码率。

具体的,模型初始化模块740采用公式(18)确定长周期虚拟缓冲区的目标平衡上限、长周期虚拟缓冲区的目标平衡下限及长周期虚拟缓冲区的期望输出码率,

其中,InitVBF为预设初始充盈度,MaxVBF为长周期虚拟缓冲区的目标平衡上限,ERROR_RANGE为预设平均码率控制误差,TARGET_BITRATE为预设平均码率,T为长周期的预设周期长度,MinVBF为长周期虚拟缓冲区的目标平衡下限,target_bitrate为长周期虚拟缓冲区的期望输出码率。

应用本实施例,通过设置码率控制参数,既精确计算存储空间,又应对带宽的限制,量化指标精确控制实际编码的平均码率与设定的平均码率之间的误差,充分利用已配置的存储空间,通过复杂度信息保证图像质量的稳定,并通过长周期结合短周期的码率控制方法,实现空闲时段和繁忙时段的图像质量均稳定,从而实现了在保证图像满足一定质量的条件下,合理分配存储空间;并且通过初始化确定满足一定条件的包括长周期虚拟缓冲区的目标平衡上限、长周期虚拟缓冲区的目标平衡下限及长周期虚拟缓冲区的期望输出码率的初始化参数,构建了用于长周期控制的虚拟缓冲区,保证在短周期控制时充分利用该虚拟缓冲区空间。

更进一步的,在包含短周期控制模块710、数据统计模块720、长周期控制模块730的基础上,如图9所示,本实施例所提供的一种码率控制装置还可以包括:

复杂度分析模块750,用于对所述当前视频帧进行复杂度分析,得到所述当前视频帧的复杂度信息。

需要说明的是,复杂度分析模块750所采用复杂度分析方法可以是对输入的视频帧进行运动检测,也可以是对输入的视频帧进行纹理复杂度分析,还可以是对已编码码流的大小、图像质量等进行分析,这都是合理的。视频帧的复杂度可以是运动复杂度,也可以是纹理复杂度,视频帧的复杂度信息可以是运动区域面积,也可以是残差的SAD值。这些都是合理的。

应用本实施例,通过设置码率控制参数,既精确计算存储空间,又应对带宽的限制,量化指标精确控制实际编码的平均码率与设定的平均码率之间的误差,充分利用已配置的存储空间,通过复杂度信息保证图像质量的稳定,并通过长周期结合短周期的码率控制方法,实现空闲时段和繁忙时段的图像质量均稳定,从而实现了在保证图像满足一定质量的条件下,合理分配存储空间;并通过复杂度信息应对图像复杂度波动带来的质量下降。

如图10所示,可选的,所述编码控制参数还包括:所述当前短周期的平均码率;

本实施例中,短周期控制模块710可以包括:

帧级CBR码率控制子模块711,用于在获取的长周期中当前短周期的码率控制模式为固定码率模式CBR时,获取并根据所述当前短周期的平均码率、所述预设码率控制参数中的预设帧率及第一码流信息,通过计算、确定所述CBR对应的第一帧级编码参数,并将所述第一帧级编码参数作为所述当前短周期的帧级编码参数。

具体的,帧级CBR码率控制子模块711,可以包括:

第一计算单元,用于获取并根据所述当前短周期的平均码率及所述预设码率控制参数中的预设帧率,通过计算、得到所述当前短周期内视频帧的第一目标比特平均值;

第二计算单元,用于获取所述第一码流信息中的码流长度及所述CBR对应的当前短周期虚拟缓冲区的第一充盈度,并根据所述第一码流信息中的码流长度、所述第一充盈度及所述第一目标比特平均值,通过计算、更新所述第一充盈度;

第三计算单元,用于获取所述CBR对应的当前短周期虚拟缓冲区的第一目标充盈度,并根据所述第一充盈度、所述第一目标充盈度、所述第一目标比特平均值及预设调节强度参数,通过计算、得到所述当前短周期中当前视频帧的第一目标比特;

第四计算单元,用于根据所述第一码流信息中的编码质量信息、所述第一码流信息中的码流长度、所述第一目标比特及所述第一目标比特平均值,通过计算、确定所述CBR对应的当前短周期的第一帧级编码参数。

其中,第一计算单元中采用公式(19)计算当前短周期内视频帧的第一目标比特平均值,

其中,avg_frame_size为当前短周期内视频帧的第一目标比特平均值,Targett为当前短周期的平均码率,frame_rate为预设帧率;

需要说明的是,第一计算单元中还可以采用公式(20)计算视频帧的第一目标比特最小值和第一目标比特最大值,

其中,MIN_Target_bytesCBR为视频帧的第一目标比特最小值,avg_frame_size为当前短周期内视频帧的第一目标比特平均值,MAX_Target_bytesCBR为视频帧的第一目标比特最大值;

第二计算单元中采用公式(21)计算CBR对应的当前短周期虚拟缓冲区的第一充盈度,

currVBFCBR=currVBFCBR+(recent_bs_lens-avg_frame_size) (21)

其中,currVBFCBR为CBR对应的当前短周期虚拟缓冲区的第一充盈度,recent_bs_lens为第一码流信息中的码流长度,avg_frame_size为当前短周期内视频帧的第一目标比特平均值;

第三计算单元中采用公式(22)计算当前短周期中当前视频帧的第一目标比特,

其中,Target_bytesCBR为当前短周期中当前视频帧的第一目标比特,Kp为预设调节强度参数,targetVBFCBR为CBR对应的当前短周期虚拟缓冲区的第一目标充盈度,currVBFCBR为CBR对应的当前短周期虚拟缓冲区的第一充盈度,avg_frame_size为当前短周期内视频帧的第一目标比特平均值;预设调节强度参数是控制当前短周期中当前视频帧的目标比特调节强度的参数,可以取0至1.0中任一数值;

需要强调的是,第一目标比特与第一目标比特最小值、第一目标比特最大值存在以下关系:

Target_bytesCBR=CLIP3(Target_bytesCBR,MIN_Target_bytesCBR,MAX_Target_bytesCBR)其中,CLIP3(Target_bytesCBR,MIN_Target_bytesCBR,MAX_Target_bytesCBR)函数表示在第一目标比特Target_bytesCBR大于第一目标比特最小值MIN_Target_bytesCBR,且小于第一目标比特最大值MAX_Target_bytesCBR时,Target_bytesCBR即为其本身;在Target_bytesCBR小于MIN_Target_bytesCBR时,将MIN_Target_bytesCBR赋给Target_bytesCBR;在Target_bytesCBR大于MAX_Target_bytesCBR时,将MAX_Target_bytesCBR赋给Target_bytesCBR。

第四计算单元中采用公式(23)计算CBR对应的当前短周期的第一帧级编码参数为当前短周期的帧级编码参数,

其中,QPCBR为CBR对应的当前短周期的第一帧级编码参数,prev_qp为编码质量的量化参数值,Kbytes_to_qp为预设换算参数,recent_bs_lens为第一码流信息中的码流长度,Target_bytesCBR为当前短周期中当前视频帧的第一目标比特,avg_frame_size为当前短周期内视频帧的第一目标比特平均值;编码质量的量化参数值可以是相邻上一视频帧已编码的码流长度使用的编码QP值;预设换算参数表示编码比特与QP值的换算关系;需要强调的是,预设换算参数与视频帧的类型有关,视频帧的类型包括P帧、I帧及B帧;I帧的预设换算参数最大,B帧的预设换算参数最小。

帧级VBR码率控制子模块712,用于在获取的长周期中当前短周期的码率控制模式为可变码率模式VBR时,获取并根据所述预设码率控制参数中的预设码率上限、预设帧率及第一码流信息,通过计算、确定所述VBR对应的第二帧级编码参数,并将所述第二帧级编码参数作为所述当前短周期的帧级编码参数,其中,所述VBR为所述长周期中第一个短周期的码率控制模式。

具体的,VBR码率控制子模块712,可以包括:

第五计算单元,用于获取并根据所述预设码率控制参数中的预设码率上限及预设帧率,通过计算、得到所述当前短周期内视频帧的第二目标比特平均值;

第六计算单元,用于获取所述第一码流信息中的码流长度、所述VBR对应的当前短周期虚拟缓冲区的第二充盈度及所述VBR对应的当前短周期虚拟缓冲区的第二目标充盈度,并根据所述第一码流信息中的码流长度、所述第二充盈度及所述第二目标比特平均值,通过计算、确定更新后的所述第二充盈度和所述第二目标充盈度中的最大值为所述第二充盈度;

第七计算单元,用于根据所述第二充盈度、所述第二目标充盈度、所述第二目标比特平均值及预设调节强度参数,通过计算、得到所述当前短周期中当前视频帧的第二目标比特;

第八计算单元,用于根据所述第一码流信息中的编码质量信息、所述第一码流信息中的码流长度、所述第二目标比特及所述第二目标比特平均值,通过计算、确定所述VBR对应的当前短周期的第二帧级编码参数。

其中,第五计算单元中采用公式(24)计算当前短周期内视频帧的第二目标比特平均值,

其中,max_frame_size为当前短周期内视频帧的第二目标比特平均值,MAX_BITRATE为预设码率上限,frame_rate为预设帧率;

需要说明的是,第五计算单元中还可以采用公式(25)计算视频帧的第二目标比特最小值和第二目标比特最大值,

其中,MIN_Target_bytesVBR为视频帧的第二目标比特最小值,max_frame_size为当前短周期内视频帧的第二目标比特平均值,MAX_BITRATE为预设码率上限;

第六计算单元中采用公式(26)计算VBR对应的当前短周期虚拟缓冲区的第二充盈度,

currVBFVBR=currVBFVBR+(recent_bs_lens-max_frame_size) (26)

其中,currVBFVBR为VBR对应的当前短周期虚拟缓冲区的第二充盈度,recent_bs_lens为第一码流信息中的码流长度,max_frame_size为当前短周期内视频帧的第二目标比特平均值;

第六计算单元中采用公式(27)更新VBR对应的当前短周期虚拟缓冲区的第二充盈度,

currVBFVBR=MAX(currVBFVBR,targetVBFVBR) (27)

其中,currVBFVBR为VBR对应的当前短周期虚拟缓冲区的第二充盈度,targetVBFVBR为VBR对应的当前短周期虚拟缓冲区的第二目标充盈度;

第七计算单元中采用公式(28)计算当前短周期中当前视频帧的第二目标比特,

其中,Target_bytesVBR为当前短周期中当前视频帧的第二目标比特,Kp为预设调节强度参数,targetVBFVBR为VBR对应的当前短周期虚拟缓冲区的第二目标充盈度,currVBFVBR为VBR对应的当前短周期虚拟缓冲区的第二充盈度,max_frame_size为当前短周期内视频帧的第二目标比特平均值;预设调节强度参数是控制当前短周期中当前视频帧的目标比特调节强度的参数,可以取0至1.0中任一数值;

需要强调的是,第二目标比特与第二目标比特最小值、第二目标比特最大值存在以下关系:

Target_bytesVBR=CLIP3(Target_bytesVBR,MIN_Target_bytesVBR,MAX_Target_bytesVBR)其中,CLIP3(Target_bytesVBR,MIN_Target_bytesVBR,MAX_Target_bytesVBR)函数表示在第二目标比特Target_bytesVBR大于第二目标比特最小值MIN_Target_bytesVBR,且小于第二目标比特最大值MAX_Target_bytesVBR时,Target_bytesVBR即为其本身;在Target_bytesVBR小于MIN_Target_bytesVBR时,将MIN_Target_bytesVBR赋给Target_bytesVBR;在Target_bytesVBR大于MAX_Target_bytesVBR时,将MAX_Target_bytesVBR赋给Target_bytesVBR。

第八计算单元中采用公式(29)计算VBR对应的当前短周期的第二帧级编码参数,

其中,QPVBR为VBR对应的当前短周期的第二帧级编码参数,prev_qp为编码质量的量化参数值,Kbytes_to_qp为预设换算参数,recent_bs_lens为第一码流信息中的码流长度,Target_bytesVBR为当前短周期中当前视频帧的第二目标比特,max_frame_size为当前短周期内视频帧的第二目标比特平均值;编码质量的量化参数值可以是相邻上一视频帧已编码的码流长度使用的编码QP值;预设换算参数表示编码比特与QP值的换算关系;需要强调的是,预设换算参数与视频帧的类型有关,视频帧的类型包括P帧、I帧及B帧;I帧的预设换算参数最大,B帧的预设换算参数最小。

帧级码率控制子模块713,用于在获取的长周期中当前短周期的码率控制模式既包括CBR,又包括VBR时,获取并根据所述当前短周期的平均码率、所述预设码率控制参数中的预设帧率及第一码流信息,通过计算、确定所述CBR对应的第一帧级编码参数;根据所述预设码率控制参数中的预设码率上限、预设帧率及第一码流信息,通过计算、确定所述VBR对应的第二帧级编码参数;在帧级编码参数与所述码流长度正相关时,确定所述第一帧级编码参数与所述第二帧级编码参数中的最小值为所述当前短周期的帧级编码参数;在帧级编码参数与所述码流长度反相关时,确定所述第一帧级编码参数与所述第二帧级编码参数中的最大值为所述当前短周期的帧级编码参数。

可选的,所述码率控制装置还可以用于:在长周期结束时,进行下一个长周期内第一个短周期的码率控制。

可选的,所述码率控制装置还可以用于:在当前短周期未结束时,则执行获取第一码流信息的步骤。

如图11所示,可选的,本实施例中,长周期控制模块730可以包括:

期望输出比特计算子模块731,用于获取所述当前短周期的周期长度及所述长周期虚拟缓冲区的期望输出码率,并将所述长周期虚拟缓冲区的期望输出码率确定为所述当前短周期的期望输出码率;根据所述当前短周期的周期长度及所述当前短周期的期望输出码率,通过计算、得到所述当前短周期的期望输出比特;

虚拟缓冲区更新子模块732,用于获取所述长周期虚拟缓冲区的实际充盈度,根据所述当前短周期的期望输出比特、所述当前短周期的总编码比特及所述长周期虚拟缓冲区的实际充盈度,通过计算、更新所述长周期虚拟缓冲区的实际充盈度。

具体的,虚拟缓冲区更新子模块732采用公式(30)计算长周期虚拟缓冲区的实际充盈度,

currVBF=currVBF+(Scurt-Sdstt) (30)

其中,currVBF为长周期虚拟缓冲区的实际充盈度,Scurt为当前短周期的总编码比特,Sdstt为当前短周期的期望输出比特。

缓冲区自适应控制子模块733,用于根据所述长周期虚拟缓冲区的实际充盈度、所述预设初始充盈度、所述长周期虚拟缓冲区的目标平衡上限及所述长周期虚拟缓冲区的目标平衡下限,计算所述长周期虚拟缓冲区的目标充盈度;根据所述长周期虚拟缓冲区的实际充盈度、所述预设初始充盈度、所述长周期虚拟缓冲区的目标平衡上限及所述长周期虚拟缓冲区的目标平衡下限,计算复杂度目标比特加权因子。

缓冲区目标码率预测子模块734,用于根据所述长周期虚拟缓冲区的目标充盈度、所述长周期虚拟缓冲区的实际充盈度、预设调节强度参数及预设调节的基准码率,通过计算、得到所述长周期中所述相邻下一个短周期的虚拟缓冲区目标码率。

具体的,缓冲区目标码率预测子模块734采用公式(31)计算长周期中相邻下一个短周期的虚拟缓冲区目标码率,

其中,Target_VBFt+1为长周期中相邻下一个短周期的虚拟缓冲区目标码率,Kp为预设调节强度参数,targetVBF为长周期虚拟缓冲区的目标充盈度,currVBF为长周期虚拟缓冲区的实际充盈度,Target_bitrate为预设调节的基准码率。

复杂度目标码率预测子模块735,用于根据所述当前视频帧的复杂度信息,所述预设图像质量等级、所述当前短周期的总编码比特数及所述当前短周期的周期长度,确定所述长周期中所述相邻下一个短周期的复杂度目标码率。

具体的,复杂度目标码率预测子模块735采用公式(32)计算长周期中相邻下一个短周期的复杂度目标码率,

其中,fg_bytest为长周期中当前短周期的总前景比特,fg_numt为长周期中当前短周期的总前景点数,qp_scale[fg_qp]为前景QP值与编码大小的相对关系,bg_numt为长周期中当前短周期的总背景点数,qp_scale[bg_qp]为背景QP值与编码大小的相对关系,Scurt为当前短周期的总编码比特,bg_bytest为长周期中当前短周期的总背景比特,fg_bytest+1为长周期中相邻下一个短周期的总前景比特,fg_numt+1为长周期中相邻下一个短周期的总前景点数,fg_numt+1可通过fg_numt+1=2·fg_numt-fg_numt-1估计获得,fg_numt-1为长周期中相邻上一个短周期的总前景点数,bg_bytest+1为长周期中相邻下一个短周期的总背景比特,bg_numt+1为长周期中相邻下一个短周期的总背景点数,Target_CPLXt+1为长周期中相邻下一个短周期的复杂度目标码率,T2为当前短周期的周期长度。

平均码率确定子模块736,用于根据所述长周期中所述相邻下一个短周期的虚拟缓冲区目标码率、所述长周期中所述相邻下一个短周期的复杂度目标码率及所述复杂度目标比特加权因子,通过加权计算、确定所述长周期中所述相邻下一个短周期的平均码率。

具体的,平均码率确定子模块736采用公式(33)计算长周期中相邻下一个短周期的平均码率,

Targett+1=s·Target_CPLXt+1+(1-s)·Target_VBFt+1 (33)

其中,Targett+1为长周期中相邻下一个短周期的平均码率,s为复杂度目标比特加权因子,Target_CPLXt+1为长周期中相邻下一个短周期的复杂度目标码率,Target_VBFt+1为长周期中相邻下一个短周期的虚拟缓冲区目标码率。

可选的,所述缓冲区自适应控制子模块,具体还可以用于:

判断所述长周期虚拟缓冲区的实际充盈度是否介于所述长周期虚拟缓冲区的目标平衡点上限与所述长周期虚拟缓冲区的目标平衡下限之间;

若是,则确定所述初始充盈度为所述长周期虚拟缓冲区的目标充盈度;

若否,在所述长周期虚拟缓冲区的实际充盈度大于所述长周期虚拟缓冲区的目标平衡点上限时,则确定所述长周期虚拟缓冲区的目标平衡点上限为所述长周期虚拟缓冲区的目标充盈度;在所述长周期虚拟缓冲区的实际充盈度小于所述长周期虚拟缓冲区的目标平衡点下限时,则确定所述长周期虚拟缓冲区的目标平衡点下限为所述长周期虚拟缓冲区的目标充盈度。

可选的,所述缓冲区自适应控制子模块,具体还可以用于:

判断所述长周期虚拟缓冲区的实际充盈度是否介于所述长周期虚拟缓冲区的目标平衡点上限与所述长周期虚拟缓冲区的目标平衡下限之间;

若是,则确定所述复杂度目标比特加权因子为预设第一数值;

若否,则确定所述复杂度目标比特加权因子为预设第二数值。

可以理解的是,本发明实施例的另一实施例中,码率控制装置可以同时包括:短周期控制模块710、数据统计模块720、长周期控制模块730、模型初始化模块740和复杂度分析模块750。

需要说明的是,本发明实施例的码率控制装置为应用上述码率控制方法的装置,则上述码率控制方法的所有实施例均适用于该装置,且均能达到相同或相似的有益效果。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1