一种码流控制的方法和装置转让专利

申请号 : CN201210181176.2

文献号 : CN102724490B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 汪辉

申请人 : 浙江宇视科技有限公司

摘要 :

本发明提供一种码流控制的方法:判断是否到达检测周期,如果到达,统计到当前时间已经传输总的实际码流的大小Scur,计算与当前时间对应的总的预设码流大小Sdst;判断多余码流Sredu是否大于0,其中Sredu=Scur-Sdst,如果否,返回;如果是,执行码流控制处理。在控制码流时,从存储剩余时间、当前运动量、多余码流大小的角度执行码流控制处理。基于方法同样的构思,本发明还提供一种码流控制的装置。编码设备应用本发明的技术后,既可以根据图像效果采用可变码率技术得到最佳的视频编码码流,又可以结合存储业务的实际需要精确计算出需要的存储空间。

权利要求 :

1.一种码流控制的方法,该方法应用于编码设备上,其特征在于,该方法包括如下步骤:

A、判断是否到达检测周期,如果到达,统计到当前时间已经传输总的实际码流的大小Scur,计算与当前时间对应的总的预设码流大小Sdst;

B、判断多余码流Sredu是否大于0,其中Sredu=Scur-Sdst,如果否,返回步骤A;如果是,执行步骤C;

C、计算存储剩余时间,如果剩余时间小于预设的预警时间阈值t,则查询时间编码参数表,以获取的画面组GOP和/或量化参数QP进行编码,返回步骤A,其中该时间编码参数表记录剩余时间与GOP和/或QP的对应关系;如果剩余时间大于t,执行步骤D;

D、计算当前的运动量,如果当前运动量值小于预设运动量值m,则查询运动编码参数表,以获取的编码帧率进行编码,返回步骤A,该运动编码参数表记录运动量与编码帧率之间的对应关系;如果当前运动量大于预设运动量值m,则执行步骤E;

E、如果步骤B中计算的多余码流Sredu值大于预设的多余码流值s,则查询多余码流编码参数表,以获取的GOP和/或QP进行编码,返回步骤A;该多余码流编码参数表记录多余码流与GOP和/或QP的对应关系;如果多余码流小于s,返回步骤A。

2.如权利要求1所述的方法,其特征在于,步骤D中如果当前运动量大于预设运动量值m,则执行步骤F;

F、判断当前是否已经进行降帧率处理,如果是,恢复正常帧率进行编码,返回步骤A;

如果否,执行步骤E。

3.如权利要求1所述的方法,其特征在于,步骤E中如果多余码流小于s,则执行步骤G;

G、判断当前是否已经进行GOP值和/或QP值的修正,如果是,恢复正常的GOP值和/或QP值,返回步骤A;如果否,返回步骤A。

4.一种码流控制的装置,该装置应用于编码设备上,其特征在于,该装置包括:

码流大小检测模块,用于到达检测周期时统计到当前时间已经传输的总的实际码流的大小Scur,计算与当前时间对应的总的预设码流大小Sdst,判断多余码流Sredu是否大于

0,其中Sredu=Scur-Sdst,如果否,等待下一个检测周期到来进行码流的检测;如果是,通知码流控制模块执行码流控制处理;

码流控制模块,用于收到检测模块的通知执行码流控制后,计算存储剩余时间,如果剩余时间小于预设的预警时间阈值t,则查询时间编码参数表,获取对应的画面组GOP和/或量化参数QP,通知编码模块以获取的GOP和/或QP进行编码,其中该时间编码参数表记录剩余时间与GOP和/或QP的对应关系;如果剩余时间大于t,计算当前的运动量,如果当前运动量值小于预设运动量值m,则查询运动编码参数表,获取对应的编码帧率,通知编码模块以获取的编码帧率进行编码,该运动编码参数表记录运动量与编码帧率之间的对应关系;如果当前运动量大于预设运动量值m,并且多余码流Sredu值大于预设的多余码流值s,则查询多余码流编码参数表,获取对应的GOP和/或QP,通知编码模块以获取的GOP和/或QP进行编码,该多余码流编码参数表记录多余码流与GOP和/或QP的对应关系;

编码模块,用于以获取的编码帧率或GOP和/或QP进行编码。

5.如权利要求4所述的装置,其特征在于,码流控制模块,用于在当前运动量大于预设运动量值m,判断当前是否已经进行降帧率处理,如果是,恢复正常帧率;如果否,继续执行在多余码流Sredu值大于预设的多余码流值s时,查询多余码流编码参数表,获取对应的GOP和/或QP,通知编码模块以获取的GOP和/或QP进行编码的处理,该多余码流编码参数表记录多余码流与GOP和/或QP的对应关系。

6.如权利要求4所述的装置,其特征在于,码流控制模块,用于如果多余码流小于s,判断当前是否已经进行GOP值和/或QP值的修正,如果是,恢复正常的GOP值和/或QP值。

说明书 :

一种码流控制的方法和装置

技术领域

[0001] 本发明涉及视频监控领域,尤其涉及一种码流控制的方法和装置。

背景技术

[0002] 视频编解码技术在数字视频监控领域有着广泛的应用。视频编解码的码流控制算法包括CBR和VBR两大类。CBR(固定码率编码)在所有场合和都使用相同的码率编码;VBR(可变码率编码)根据场景的不同使用不同的码率编码。数字视频监控系统一般要求对采集编码的音视频码流进行保存,以便后续查询分析。这对数据的存储空间有一定的要求。当前在项目实施中,无论视频编码器采用CBR还是VBR,都无法很好的计算存储空间,得到最优的存储空间配置方案。
[0003] 当编码设备采用CBR算法时,可以采用CBR的目标码率值来估计监控系统需要的存储空间。但是CBR算法本身将导致简单场景时浪费了有效存储空间,而在复杂场景时,为了防止存储空间溢出,又不能采用更大的码率进行编码。因此监控系统就不能在一定容量的存储空间中最大效率的得到最清晰、效果最好的监控码流。
[0004] 当编码设备采用VBR算法时,可以采用VBR的最大码率、或者估计一个平均码率来计算监控系统需要的存储空间。但是如果采用VBR的最大码率计算存储空间,就会导致选择的存储设备容量过大,浪费存储资源;如果采用估计的平均码率计算存储空间,要么选择的存储设备容量过小,丢失存储数据,要么选择的存储设备容量过大,浪费存储资源。

发明内容

[0005] 有鉴于此,本发明提供一种码流控制的方法,该方法应用于编码设备上,其特征在于,该方法包括如下步骤:A、判断是否到达检测周期,如果到达,统计到当前时间已经传输总的实际码流的大小Scur,计算与当前时间对应的总的预设码流大小Sdst;B、判断多余码流Sredu是否大于0,其中Sredu=Scur-Sdst,如果否,返回步骤A;如果是,执行步骤C;C、计算存储剩余时间,如果剩余时间小于预设的预警时间阈值t,则查询时间编码参数表,以获取的编码参数进行编码,返回步骤A,其中该时间编码参数表记录剩余时间与编码参数的对应关系;如果剩余时间大于t,执行步骤D;D、计算当前的运动量,如果当前运动量值小于预设运动量值m,则查询运动编码参数表,以获取的编码参数进行编码,返回步骤A,该运动编码参数表记录运动量与编码参数之间的对应关系;如果当前运动量大于预设运动量值m,则执行步骤E;E、如果步骤B中计算的多余码流Sredu值大于预设的多余码流值s,则查询多余码流编码参数表,以获取的编码参数进行编码,返回步骤A;该多余码流编码参数表记录多余码流与编码参数的对应关系;如果多余码流小于s,返回步骤A。
[0006] 更优地,步骤D中的编码参数具体为编码的帧率。
[0007] 更优地,步骤D中如果当前运动量大于预设运动量值m,则执行步骤F;F、判断当前是否已经进行降帧率处理,如果是,恢复正常帧率进行编码,返回步骤A;如果否,执行步骤E。
[0008] 更优地,步骤C和步骤E中的编码参数为画面组GOP和/或量化参数QP。
[0009] 更优地,步骤E中如果多余码流小于s,则执行步骤G;G、判断当前是否已经进行GOP值和/或QP值的修正,如果是,恢复正常的GOP值和/或QP值,返回步骤A;如果否,返回步骤A。
[0010] 本发明还提供一种码流控制的装置,该装置应用于编码设备上,该装置包括:码流大小检测模块,用于到达检测周期时统计到当前时间已经传输的总的实际码流的大小Scur,计算与当前时间对应的总的预设码流大小Sdst,判断多余码流Sredu是否大于0,其中Sredu=Scur-Sdst,如果否,等待下一个检测周期到来进行码流的检测;如果是,通知码流控制模块执行码流控制处理;码流控制模块,用于收到检测模块的通知执行码流控制后,计算存储剩余时间,如果剩余时间小于预设的预警时间阈值t,则查询时间编码参数表,获取对应的编码参数,通知编码模块以获取的编码参数进行编码,其中该时间编码参数表记录剩余时间与编码参数的对应关系;如果剩余时间大于t,计算当前的运动量,如果当前运动量值小于预设运动量值m,则查询运动编码参数表,获取对应的编码参数,通知编码模块以获取的编码参数进行编码,该运动编码参数表记录运动量与编码参数之间的对应关系;如果当前运动量大于预设运动量值m,并且多余码流Sredu值大于预设的多余码流值s,则查询多余码流编码参数表,获取对应的编码参数,通知编码模块以获取的编码参数进行编码,该多余码流编码参数表记录多余码流与编码参数的对应关系。编码模块,用于以获取的编码参数进行编码。
[0011] 更优地,运动编码参数中的编码参数具体为编码的帧率。
[0012] 更优地,码流控制模块,用于在当前运动量大于预设运动量值m,判断当前是否已经进行降帧率处理,如果是,恢复正常帧率;如果否,继续执行在多余码流Sredu值大于预设的多余码流值s,查询多余码流编码参数表,获取对应的编码参数,通知编码模块以获取的编码参数进行编码的处理,该多余码流编码参数表记录多余码流与编码参数的对应关系;
[0013] 更优地,所述时间编码参数表和多余码流编码参数表中的编码参数为画面组GOP和/或量化参数QP。
[0014] 更优地,码流控制模块,用于如果多余码流小于s,判断当前是否已经进行GOP值和/或QP值的修正,如果是,恢复正常的GOP值和/或QP值。
[0015] 应用本发明的技术后,既可以根据图像效果采用可变码率技术得到最佳的视频编码码流,又可以结合存储业务的实际需要精确计算出需要的存储空间。

附图说明

[0016] 图1是一种视频监控系统示意图。
[0017] 图2是本发明一种实施例流程图。

具体实施方式

[0018] 如图1所示的视频监控系统,监控服务器制定存储策略,编码设备和存储设备按照该存储策略将采集并编码的视频码流存储在存储设备上。系统工作前,可以根据经验,配置一路监控视频流的平均码率为A,再根据该路监控视频流存储的时间确定存储空间的大小。该存储空间就作为分配给该路监控视频流的存储空间。
[0019] 参考图2,编码设备进行码流控制的流程示意图。编码设备开始工作,启动编码和码流控制。该编码设备的码流控制装置从逻辑功能上可以划分为:码流大小检测模块、码流控制模块和编码模块。以下进行本发明实施例的详细描述。
[0020] 步骤1、判断是否到达检测周期,如果到达,统计当前总的实际码流的大小Scur,计算当前总的预设码流大小Sdst。该步骤由码流大小检测模块执行。
[0021] 编码设备预先设定检测周期T,比如说检测周期设定为1分钟,即每隔1分钟启动一次检测。检测周期的大小可以根据实际情况结合管理员的实际业务经验来进行设定。可以预先设定一个平均码率A,当前时间点距离设备启动编码的时间点的时间长度为B,则当前总的预设码流大小为:A*B,预设的平均码流相当于管理员对于存储空间的一种期望,比如说管理员规划一个存储总时间(比如存储30天的视频流)。其规划的平均码流速率×30天就是可以这一路码流可以占用的总的存储空间,因此存储总时间是从根据预设的平均码率来看的。当前实际码流的大小是从编码启动到当前时间点实际编码产生的码流大小,实际码流大小如何检测和统计属于成熟技术,不再详述。
[0022] 步骤2、判断多余码流Sredu=Scur-Sdst是否大于0,如果否,返回步骤1;如果是,执行步骤3。该步骤由码流大小检测模块执行。
[0023] 如果当前统计得到的总的实际码流Scur大于预设的总的码流Sdst,说明在当前这个时间点存储设备已经消耗的空间超越了管理员的期望,为了避免剩余空间不足以应付剩余时间的码流存储需求,可以提前进行降码流处理,相当于将超越管理员的期望的消耗平衡回来,如果不大于,则说明符合管理员的气象期望,此时可以返回步骤1,继续等待下一个检测周期的到来。
[0024] 步骤3、计算存储剩余时间,如果剩余时间小于预警时间阈值t,则查询时间编码参数表,获取编码参数,以获取的编码参数进行编码,返回步骤1,该时间编码参数表记录剩余时间与编码参数的对应关系;如果剩余时间大于t,执行步骤4。该步骤中的“以获取的编码参数进行编码”由编码模块执行。除此之外的动作均由码流控制模块执行。
[0025] 这里时间编码参数表中记录的编码参数可以是GOP,或QP,或GOP和QP。下面以GOP和QP进行说明。
[0026] 在进行降码流处理的时候,计算存储剩余时间,存储剩余时间=存储总时间减去当前已经执行存储时间;如前所述,编码设备以预设的平均码率开始存储码流到总的存储空间被存满花费的时间即为存储总时间,即该时间为总的存储空间除以平均码率。比如当前编码设备存满总的存储空间要花费30天,当前已经存储了20天10小时,那存储剩余时间就是9天14小时。如果剩余时间小于预警时间阈值t,就查询时间编码参数表。预设的预警时间阈值t作为是否查询时间编码参数表的时间分界点,如果当前的剩余时间已经小于预设预警时间阈值t,表明即将到达一个存储周期结束的时间,这个时候需要立即进行较大程度的降码率处理,而时间编码参数表则记录了降码率的时候需要调整的编码参数,比如需要增加的GOP值和增加的QP值,剩余时间越少,GOP值需要增加的越多,QP值也需要增大的越多。表中记载的GOP值和QP值可以是绝对值也可以是相对值。如果是相对值,则在之前编码的GOP值和QP值上增加查询到的该相对值。步骤3中查询时间编码参数表,以获取的编码参数进行编码包括上述以查询到的绝对值和相对值进行计算后得到的新的编码参数进行编码两种情况。另,剩余时间可以等同当前已经存的时间,因为剩余时间与当前已经存的时间之和是固定值,所以以剩余时间或者当前已经存的时间对应需要调整的编码参数都是可以的。表1给出了剩余时间和GOP值以及QP值的对应关系的例子。在查询时间编码参数表时,以计算得到的存储剩余时间为索引去匹配时间编码参数表。如果剩余时间小于预设的预警时间阈值t,则当前还没有到达需要按照时间编码参数表进行降码流处理的程度。往往时间编码参数表进行降码流处理对于音视频流实际效果的影响可能会比较大,是一种不得已而为止的处理方式。一般地,如果检测周期比较小的话,不太会用到这种方式进行降码率处理。因为本发明的处理流程在设计的时候,其它降码率的处理方式对音视频流实际效果的影响有限。
[0027]
[0028] 表1
[0029] 步骤4、计算当前的运动量,如果当前运动量值小于预设运动量值m,则查询运动编码参数表,获取编码参数,以获取的编码参数进行编码,返回步骤1,该运动编码参数表记录运动量与编码参数之间的对应关系;如果当前运动量大于预设运动量值m,则执行步骤5。该步骤中的“以获取的编码参数进行编码”由编码模块执行。除此之外的动作均由码流控制模块执行。
[0030] 这里的运动编码参数表中记录的编码参数可以是帧率。以下以编码参数为帧率进行说明。
[0031] 当画面无运动或者运动量较少时,可通过降低帧率的方式减少一个检测周期的平均码率,这种方式对于图像的质量影响很小。预设的运动量值m是根据画面运动与否进行降帧率的一个临界值,该值根据实际的场景以及经验进行设定。如果计算得到的当前运动量值小于m,说明当前运动量很小,可以降低编码的帧率,根据运动编码参数表中记录的运动量与帧率对应关系进行降帧率处理。以计算得到的当前运动量为索引进行运动编码参数表的匹配,以获取该运动量下的帧率值。该帧率值可以是绝对值也可以是相对值。如果是绝对值。直接根据该值进行编码,如果是相对值,在之前编码的帧率值基础上减少查询到的帧率值得到新的帧率值,以该新的帧率值进行编码。步骤4中的查询运动编码参数表,以获取的编码参数进行编码包括以查询到绝对值和相对值进行计算后得到的新的编码参数进行编码两种情况。运动量的计算方式属于现有技术,不再赘述。表2给出了运动量和帧率值对应关系的例子。一般地,运动量越小,进行编码的帧率值也可以越小。从表2也可以看出这种关系。如果计算得到的运动量值大于预设的运动量值m,说明画面运动较大,当前不适合进行降帧率的处理,执行步骤5。
[0032]
[0033] 表2
[0034] 步骤5、判断当前是否已经进行降帧率处理,如果是,恢复正常帧率,返回步骤1;如果否,执行步骤6。该步骤由码流控制模块执行。
[0035] 如果当前已经进行降帧率处理了,说明前一个周期在检测的时候,启动了降帧率的处理。而当前在进行了运动量计算后,确定当前运动量比较大,不能以较小的帧率进行编码,所以要对之前降低的帧率进行修正,恢复正常的帧率编码(正常的帧率是指未执行本发明方法而使用的编码帧率)。帧率恢复后,返回步骤1重新等待检测周期的到来进行码流控制的处理。如果当前没有进行降帧率处理,执行步骤5。当然,如果不过多的考虑图像的质量,可以不执行步骤5,在步骤4当前运动量大于预设运动量值m的情况下直接执行步骤6。
[0036] 步骤6、如果步骤2中计算的多余码流Sredu值大于预设的多余码流值s,则查询多余码流编码参数表,获取编码参数,以获取到的编码参数进行编码,返回步骤1;该多余码流编码参数表记录多余码流与编码参数的对应关系;如果多余码流小于s,执行步骤7。该步骤中的“以获取的编码参数进行编码”由编码模块执行。除此之外的动作均由码流控制模块执行。
[0037] 多余码流编码参数表记录的编码参数可以是GOP或者QP,或者GOP和QP。下面以编码参数为GOP和QP进行说明。
[0038] 如果当前实际的码流比预设的码流大比较多,则启动强制降码率。预设的多余码流值s是启动强制降码率与否的分界值,如果大于该值,不启动强制降码率的话给后续视频流存储将带来较大的压力,所以需要启动强制降码率处理。多余码流编码参数表记录了多余码流与GOP值和QP值的对应关系。如果多余的码流越多,进行编码的GOP值需要越大,QP值需要越大。以计算得到的Sredu为索引匹配多余码流编码参数表,获得当前编码的GOP值和QP值,以获得的GOP和QP值进行编码。所述获得的GOP值和QP值可以是绝对值,也可以是相对值。如果是绝对值,则当前直接利用该查询到的GOP值和QP值进行编码处理;如果是相对值,则在之前编码的GOP值和QP值上增加查询到的该相对值。步骤6中的查询多余码流编码参数表,以获取到的编码参数进行编码包括上述以查询到绝对值和相对值进行计算后得到的新的编码参数进行编码两种情况。表3给出了多余码流值和GOP值以及QP值的对应关系。从该表中可以看出:多余的码流越多,进行编码的GOP值越大,QP值越大。如果多余的码流小于s,则当前不进行降码率处理的影响将不会很大,执行步骤7。
[0039]
[0040] 表3
[0041] 步骤7、判断是否已经进行编码参数的修正,如果是,恢复正常的编码参数,返回步骤1;如果否,返回步骤1。该步骤中由码流控制模块执行。
[0042] 这里的编码参数同步骤6中的编码参数。如果步骤6中的编码参数为GOP,那步骤7中的编码参数也为GOP;如果步骤6中的编码参数为QP,那步骤7中的编码参数也为QP;
如果步骤6中的编码参数为GOP和QP,那步骤7中的编码参数也为GOP和QP。以下以编码参数包括GOP和QP进行说明。
[0043] 如果已经进行了GOP值和QP值的修正,则说明前一个检测周期检测的多余码流过大,进行了强制降码率的处理,当前周期在检测的时候,多余码流没有出现过大(Sredu值小于预设的多余码流值s),需要恢复正常的GOP值和QP值(正常的GOP值和QP值是指未执行本发明方法而使用的GOP值和QP值)。如果当前判断没有进行过GOP值和QP值的修正,则返回步骤1等待下一个检测周期进行码流检测以及控制。步骤7也是从图像质量角度考虑,只要当前检测到的总的码流不是过大,就恢复GOP值和QP值。所以本步骤不是必须的,可以在步骤6如果多余码流小于s时不执行步骤7而直接执行步骤1。
[0044] 以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。