有实时码率控制的媒体流编码方法及其系统的制作方法

文档序号:7855847阅读:119来源:国知局
专利名称:有实时码率控制的媒体流编码方法及其系统的制作方法
技术领域
本发明涉及数字图像处理领域,特别涉及一种数字图像的码率控制技术。
背景技术
视频压缩中的码率控制,一般是通过帧级或宏块级的码率控制算法调整量化参数(quantization parameter,简称“QP”)进而控制编码码率的大小,实现编码比特数和分配的编码比特数相一致。在一些对编码器输出码率严格要求恒定的应用中,如果输入图像的场景变化剧烈或图像输入噪声突然变大,单独调整量化参数是不能及时、有效地对编码输出码率进行控制的,会造成码流缓冲区溢出或者有效数据被覆盖。一般的处理方法是编码器自适应的跳 帧,通过降低帧率来降低编码码率。但在同时进行音视频编码的产品和应用中,跳帧会造成音视频解码播放不同步的问题。专利申请号为200680013747. 4的中国专利所公布的为用于速率受控视频编码的自适应跳帧技术中,根据图像的量化参数和运动矢量信息来选择哪些编码帧可以直接跳过。目前,跳过一帧的做法就是不对这一帧编码,或者即使已进行了编码也会丢弃这一帧。本发明的发明人发现,这种以丢弃的方式进行跳帧的做法会导致视频和音频不同步。因为视频中少了一巾贞,但这一巾贞对应的音频信号还在。除了上述问题,200680013747. 4进一步的问题是,这个技术需要计算每巾贞图像全部宏块的运动矢量信息,并在多个预选帧内进行排序,选择出跳过编码的帧。这导致运算资源消耗量大,无法用于实时性要求高的设备和应用中。专利申请号为200910050424.8的中国专利所公布的一种适用于实时应用的
H.264码率控制方法中,根据缓冲区的饱和度来判断当前编码帧是否进行跳帧操作。这个技术最大的问题是出于低延时和成本的考虑,编码器的码流缓冲区的大小是有严格限制的。一旦在缓冲区的饱和度较低的情况下,发生场景切换或者图像运动剧烈情况,而编码的量化参数没有及时加大,编码比特数会增加很多,把缓冲区的饱和度急剧抬升,在接下来的编码过程中,为了降低缓冲区的饱和度,会发生连续跳帧的问题。这会造成图像解码播放卡顿的问题。

发明内容
本发明的目的在于提供一种有实时码率控制的媒体流编码方法及其系统,可以避免编码跳帧造成的视音频数据解码播放不同步的问题。为解决上述技术问题,本发明的实施方式公开了一种有实时码率控制的媒体流编码方法,包括以下步骤对媒体流进行编码时,如果判定当前编码帧需要进行跳帧处理,则生成一个特殊帧(本发明中又称为S帧)作为该当前编码帧的编码结果插入到媒体流中,其中,该特殊帧中的所有宏块都按照跳过的宏块模式进行编码。本发明的实施方式还公开了一种有实时码率控制的媒体流编码系统,包括判断单元,用于对媒体流进行编码时判定当前编码帧是否需要进行跳帧处理;编码单元,用于判断单元判定当前编码帧需要进行跳帧处理时,生成一个特殊帧作为该当前编码帧的编码结果插入到媒体流中,其中,该特殊帧中的所有宏块都按照跳过的宏块模式进行编码。本发明实施方式与现有技术相比,主要区别及其效果在于跳帧处理时生成一个特殊帧作为该当前编码帧的编码结果插入到媒体流中进行编码,无需用户动态的调整编码帧率设置,没有减少实际编码帧数,可以避免编码跳帧造成 的视音频数据解码播放不同步的问题。特殊帧只需要熵编码环节进行简单操作即可,不需要其它宏块编码操作,因此计算资源消耗很少,即使编码后进行特殊帧编码操作,对设备的性能影响也很小。进一步地,控制连续特殊帧操作的数目,在不同的量化参数空间,采用不同的最大连续特殊帧数目阈值,有效解决图像解码播放的卡顿现象。进一步地,控制帧编码比特数最大使用阈值,在不同的量化参数空间,选取不同的经验系数。尽可能的在小量化参数空间不进行编码后特殊帧操作,尽可能的保留图像序列的有效信息。进一步地,若当前编码P帧采用特殊帧模式进行编码,在对实时码率控制所使用的算法的虚拟缓冲区进行更新时,不使用实际特殊帧的编码比特数,利用目标编码比特数target_frame_size进行更新,可以避免缓冲区饱和度突然降低,从而减小下一编码巾贞的量
化参数。进一步地,如果当前P帧采用的是编码后特殊帧操作,则在下一编码P帧量化参数的计算在正常处理的基础上加上一个经验系数(对于札264是加5),可以解决场景切换或图像剧烈运动等情况下,量化参数选择调整不够迅速的问题。


图I是本发明第一实施方式中一种有实时码率控制的媒体流编码方法的流程示意图;图2是本发明第二实施方式中一种有实时码率控制的媒体流编码方法的流程示意图;图3是本发明第四实施方式中一种有实时码率控制的媒体流编码系统的结构示意图。
具体实施例方式在以下的叙述中,为了使读者更好地理解本申请而提出了许多技术细节。但是,本领域的普通技术人员可以理解,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请各权利要求所要求保护的技术方案。为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明的实施方式作进一步地详细描述。
本发明第一实施方式涉及一种有实时码率控制的媒体流编码方法。图I是该有实时码率控制的媒体流编码方法的流程示意图。在步骤101中,判断当前编码帧是否需要进行跳帧处理,若是,则进入步骤102 ;否则进入步骤103。在现有技术中,跳帧处理是指跳过指定的帧,直接放弃这一帧,在输出的媒体流中这一帧空缺。现有技术中已经有不少判断是否需要进行跳帧处理的判断方法,例如根据图像的量化参数和运动矢量信息来选择哪些编码帧可以直接跳过,或者根据缓冲区的饱和度来判断当前编码帧是否进行跳帧操作等等。在步骤102中,生成一个特殊帧(本申请中简称为“S帧”)作为该当前编码帧的编码结果插入到媒体流中,其中,该特殊帧中的所有宏块都按照跳过的宏块模式进行编码。此后回到步骤101,对下一帧进行判断。
跳过的宏块(skipped macroblock)是除“跳过”指示外,无其它编码数据的宏块,是一种特殊的宏块帧间编码模式,宏块的纹理信息和运动矢量信息都不进行编码操作,解码器会根据参考帧和其它周围的宏块解码信息完成跳过宏块的解码操作。在需要跳帧时,不是对当前帧不进行编码操作,而是对当前帧宏块编码类型全部按照跳过的宏块模式进行编码,这样在媒体流中没有帧的缺失,跳帧处理不会减少实际编码帧数,解码端不需要为视频帧率调整做额外的工作以解决视音频数据解码播放不同步的问题。因为全部按照跳过的宏块模式进行编码的帧结构简单,只需要很小的运算资源即可完成,完全可以满足实时码率控制的要求,特别适合运算能力不强的移动终端。在步骤103中,对当前编码帧进行正常编码,将编码结果插入到媒体流中。此后回到步骤101,对下一帧进行判断。跳帧处理时生成一个特殊帧作为该当前编码帧的编码结果插入到媒体流中进行编码,无需用户动态的调整编码帧率设置,没有减少实际编码帧数,可以避免编码跳帧造成的视音频数据解码播放不同步的问题。1080p分辨率的高清图像,H264编码一般码率最低设置为4Mbps (—秒钟编码器编码数据的比特数),25帧/秒,I帧间隔设置为25,平均一个帧的编码字节数目大概是20,00字节的样子。采用S帧模式编码,只需要32个字节即可。所以可以有效地降低编码比特数。本发明第二实施方式涉及一种有实时码率控制的媒体流编码方法。图2是该有实时码率控制的媒体流编码方法的流程示意图。第二实施方式在第一实施方式的基础上进行了改进,主要改进之处在于在编码前先进行是否要跳帧处理的判断,如果不需要跳帧,则在正常编码后再进行是否要跳帧处理的判断。通过编码前的判断,可以有效地减少不必要的编码运算量,通过编码后的判断,可以有效防止缓冲区溢出等问题,两重跳帧判断的设置,可以保证在占用较少资源的前提下避免图像的卡顿。具体地说在步骤201中,判断当前编码帧及其最近连续帧的参数是否满足第一条件,如果是则判定为当前编码帧需要进行跳帧处理,进入步骤205,否则进入步骤202。在本发明的一个优选例中,第一条件是以下条件的组合当前编码帧为P帧;
当前编码巾贞所使用的量化系数(QP_current)大于量化系数的门限(QP_th); 当前编码帧的最近连续帧所使用的量化系数均值(QP_avg)大于预定门限(指定门限优选值是QP_th - 2);平均的巾贞编码比特数(avg_frame_size)大于目标编码比特数(target_frame_size);目标编码比特数是现有技术中的一个概念,是每一帧编码后比特数的目标值,换句话说是要求编码系统将每一帧编码后应当达到的比特数。已连续跳过的巾贞数(Skip_cnt)小于连续跳过的巾贞数阈值(Skip_frame_max)。当然,可以理解,在本发明的其它实例中,这些特定条件的组合并不是必须的,例如,最后一个条件“当前连续跳过的帧数小于连续跳过的帧数阈值”可以没有。第一条件只是在编码前判断是否要跳帧处理的条件,对于不同的场景可以有不同的具体条件,并不限于上述例子。·在步骤202中,对当前编码帧正常编码。此后进入步骤203,判断当前正常编码帧及其最近连续帧的参数是否满足第二条件,如果是则进入步骤204,否则进入步骤206。在本发明的一个优选例中,第二条件是以下条件的组合当前正常编码帧的实际编码比特数(p_frame_SiZe)大于帧编码比特数阈值(max_frame_s i z e);当前正常编码帧为P帧;已连续跳过的巾贞数(Skip_cnt)小于连续跳过的巾贞数阈值(Skip_frame_max)。第二条件只是在编码后判断是否要跳帧处理的条件,对于不同的场景可以有不同的具体条件,并不限于上述例子。在步骤204中,对当前正常编码帧,丢弃已编码的数据,并判定当前编码帧需要进行跳帧处理。此后进入步骤205,生成一个特殊帧作为该当前编码帧的编码结果插入到媒体流中。此后进入步骤206,判断当前帧是否为最后一帧,如果是则结束本流程,否则回到步骤201,对下一帧进行判断。在本发明的一个优选例中,对上述第一和第二条件中max_frame_size进行了进一步的优化。具体地说,max_frame_size=weight xtarget_frame_size ;weight 是力口权经验系数,不同的量化系数区间对应不同的取值。在H264编码实现中,优选的weight取值如下QP_current<=26, weight=7 ;26〈 QP_Current〈=30, weight=5 ;30〈 QP_Current〈=34, weight=4 ;34< QP_Current〈=38, weight=3 ;QP_Current >38,weight=2。上述优选的weight取值是发明人经反复试验所得,在使用以上取值可以有效解决图像解码播放的卡顿现象。控制连续特殊帧操作的数目,在不同的量化参数空间,采用不同的最大连续特殊帧数目阈值,有效解决图像解码播放的卡顿现象。控制帧编码比特数最大使用阈值,在不同的量化参数空间,选取不同的经验系数。尽可能的在小量化参数空间不进行编码后特殊帧操作,尽可能的保留图像序列的有效信
肩、O如果当前P帧采用的是编码后特殊帧操作,则在下一编码P帧量化参数的计算在正常处理的基础上加上一个经验系数(对于H. 264优选经验系数是5),可以解决场景切换或图像剧烈运动等情况下,量化参数选择调整不够迅速的问题。本发明第三实施方式涉及一种有实时码率控制的媒体流编码方法。第三实施方式在第一或第二实施方式的基础上进行了改进,主要改进之处在于若当前编码P帧采用特殊帧模式进行编码,在对实时码率控制所使用的算法的虚拟缓冲区进行更新时,不使用实际特殊帧的编码比特数,利用目标编码比特数target_frame_Size进行更新,可以避免缓冲区饱和度突然降低,从而减小下一编码帧的量化参数。具体地说生成一个特殊帧作为该当前编码帧的编码结果插入到媒体流中的步骤(如步骤102或步骤205)之后,还包括以下步骤利用目标编码比特数,对实时码率控制所使用的算法的虚拟缓冲区进行更新。本发明的各方法实施方式均可以以软件、硬件、固件等方式实现。不管本发明是以软件、硬件、还是固件方式实现,指令代码都可以存储在任何类型的计算机可访问的存储器中(例如永久的或者可修改的,易失性的或者非易失性的,固态的或者非固态的,固定的或者可更换的介质等等)。同样,存储器可以例如是可编程阵列逻辑(Programmable ArrayLogic,简称“PAL”)、随机存取存储器(Random Access Memory,简称“RAM”)、可编程只读存储器(Programmable Read Only Memory,简称“PR0M”)、只读存储器(Read-Only Memory,简称“ROM”)、电可擦除可编程只读存储器(Electrically Erasable Programmable ROM,简称“EEPR0M”)、磁盘、光盘、数字通用光盘(Digital Versatile Disc,简称“DVD”)等等。本发明第四实施方式涉及一种有实时码率控制的媒体流编码系统。图3是该有实时码率控制的媒体流编码系统的结构示意图。该有实时码率控制的媒体流编码系统包括判断单元,用于对媒体流进行编码时判定当前编码帧是否需要进行跳帧处理。编码单元,用于判断单元判定当前编码帧需要进行跳帧处理时,生成一个特殊帧作为该当前编码帧的编码结果插入到媒体流中,其中,该特殊帧中的所有宏块都按照跳过的宏块模式进行编码。第一实施方式是与本实施方式相对应的方法实施方式,本实施方式可与第一实施方式互相配合实施。第一实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第一实施方式中。本发明第五实施方式涉及一种有实时码率控制的媒体流编码系统。第五实施方式在第四实施方式的基础上进行了改进,主要改进之处在于具体地说:判断单元包括以下子模块第一判断子模块,用于判断当前编码帧及其最近连续帧的参数是否满足第一条件,如果是则判定为需要进行跳帧处理,否则指示编码单元正常编码。
第二判断子模块,用于判断编码单元输出的当前正常编码帧及其最近连续帧的参数是否满足第二条件,如果是则丢弃当前正常编码帧并判定为需要进行跳帧处理。第一条件包括当前编码帧为P帧,和当前编码帧所使用的量化系数大于量化系数的门限,和当前编码帧的最近连续帧所使用的量化系数均值大于量化系数的门限,和平均的帧编码比特数大于目标编码比特数,和已连续跳过的帧数小于连续跳过的帧数阈值。 第二条件包括当前正常编码帧的实际编码比特数大于帧编码比特数阈值。和当前正常编码帧为P帧。和已连续跳过的帧数小于连续跳过的帧数阈值。第二实施方式是与本实施方式相对应的方法实施方式,本实施方式可与第二实施方式互相配合实施。第二实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第二实施方式中。本发明第六实施方式涉及一种有实时码率控制的媒体流编码系统。第六实施方式在第四或第五实施方式的基础上进行了改进,主要改进之处在于若当前编码P帧采用S帧模式进行编码,在对实时码率控制所使用的算法的虚拟缓冲区进行更新时,不使用实际S帧的编码比特数,利用目标编码比特数target_frame_Size进行更新,可以避免缓冲区饱和度突然降低,从而减小下一编码帧的量化参数。具体地说还包括虚拟缓冲区和更新单元。更新单元用于在判断单元判定当前编码帧需要进行跳帧处理时,用于利用目标编码比特数,对实时码率控制所使用的算法的虚拟缓冲区进行更新。可以理解,虚拟缓冲区是一个现有技术,这里不进行详述了,本发明的一个要点在于需要进行跳帧处理时使用目标编码比特数而非实际比特数进行虚拟缓冲区的更新,这个改进与虚拟缓冲区的具体实现方式并没有太大的关系。第三实施方式是与本实施方式相对应的方法实施方式,本实施方式可与第三实施方式互相配合实施。第三实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第三实施方式中。需要说明的是,本发明各设备实施方式中提到的各单元都是逻辑单元或模块,在物理上,一个逻辑单元或模块可以是一个物理单元或模块,也可以是一个物理单元或模块的一部分,还可以以多个物理单元或模块的组合实现,这些逻辑单元或模块本身的物理实现方式并不是最重要的,这些逻辑单元或模块所实现的功能的组合才是解决本发明所提出的技术问题的关键。此外,为了突出本发明的创新部分,本发明上述各设备实施方式并没有将与解决本发明所提出的技术问题关系不太密切的单元或模块引入,这并不表明上述设备实施方式并不存在其它的单元或模块。需要说明的是,在本专利的权利要求和说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
虽然通过参照本发明的某些优选实施方式,已经对本发明进行了图示和描述,但本领域的普通技术人员应该明白,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。
权利要求
1.一种有实时码率控制的媒体流编码方法,其特征在于,包括以下步骤 对媒体流进行编码时,如果判定当前编码帧需要进行跳帧处理,则生成一个特殊帧作为该当前编码帧的编码结果插入到媒体流中,其中,该特殊帧中的所有宏块都按照跳过的宏块模式进行编码。
2.根据权利要求I所述的有实时码率控制的媒体流编码方法,其特征在于,在所述如果判定当前编码帧需要进行跳帧处理,则生成一个特殊帧作为该当前编码帧的编码结果插入到媒体流中的步骤之前,包括以下步骤 判断当前编码帧及其最近连续帧的参数是否满足第一条件; 若满足第一条件,则判定为当前编码帧需要进行跳帧处理; 若不满足第一条件,则对当前编码帧正常编码,并判断当前正常编码帧及其最近连续帧的参数是否满足第二条件,若满足第二条件,则对当前正常编码帧,丢弃已编码的数据,并判定当前编码帧需要进行跳帧处理。
3.根据权利要求2所述的有实时码率控制的媒体流编码方法,其特征在于,所述第一条件包括 当前编码帧为P帧;和 当前编码帧所使用的量化系数大于量化系数的门限;和 当前编码帧的最近连续帧所使用的量化系数均值大于量化系数的门限;和 平均的帧编码比特数大于目标编码比特数。
4.根据权利要求3所述的有实时码率控制的媒体流编码方法,其特征在于,所述第一条件还包括 已连续跳过的帧数小于连续跳过的帧数阈值。
5.根据权利要求2所述的有实时码率控制的媒体流编码方法,其特征在于,所述第二条件包括 当前正常编码帧的实际编码比特数大于帧编码比特数阈值;和 当前正常编码帧为P帧;和 已连续跳过的帧数小于连续跳过的帧数阈值。
6.根据权利要求I至5中任意一条所述的有实时码率控制的媒体流编码方法,其特征在于,所述生成一个特殊帧作为该当前编码帧的编码结果插入到媒体流中的步骤之后,还包括以下步骤 利用目标编码比特数对所述实时码率控制所使用的算法的虚拟缓冲区进行更新。
7.一种有实时码率控制的媒体流编码系统,其特征在于,包括 判断单元,用于对媒体流进行编码时判定当前编码帧是否需要进行跳帧处理; 编码单元,用于所述判断单元判定当前编码帧需要进行跳帧处理时,生成一个特殊帧作为该当前编码帧的编码结果插入到媒体流中,其中,该特殊帧中的所有宏块都按照跳过的宏块模式进行编码。
8.根据权利要求7所述的有实时码率控制的媒体流编码系统,其特征在于,所述判断单元包括以下子模块 第一判断子模块,用于判断当前编码帧及其最近连续帧的参数是否满足第一条件,如果是则判定为需要进行跳帧处理,否则指示所述编码单元正常编码;第二判断子模块,用于判断所述编码单元输出的当前正常编码帧及其最近连续帧的参数是否满足第二条件,如果是则丢弃当前正常编码帧并判定为需要进行跳帧处理。
9.根据权利要求8所述的有实时码率控制的媒体流编码系统,其特征在于,所述第一条件包括 当前编码帧为P帧;和 当前编码帧所使用的量化系数大于量化系数的门限;和 当前编码帧的最近连续帧所使用的量化系数均值大于量化系数的门限;和 平均的帧编码比特数大于目标编码比特数;和 已连续跳过的帧数小于连续跳过的帧数阈值; 所述第二条件包括 当前正常编码帧的实际编码比特数大于帧编码比特数阈值;和 当前正常编码帧为P帧;和 已连续跳过的帧数小于连续跳过的帧数阈值。
10.根据权利要求7至9中任一项所述的有实时码率控制的媒体流编码系统,其特征在于,还包括虚拟缓冲区和更新单元; 所述更新单元用于在所述判断单元判定当前编码帧需要进行跳帧处理时,用于利用目标编码比特数对所述实时码率控制所使用的算法的虚拟缓冲区进行更新。
全文摘要
本发明涉及数字图像处理领域,公开了一种有实时码率控制的媒体流编码方法及其系统。可以避免编码跳帧造成的视音频数据解码播放不同步的问题。本发明中,包括以下步骤对媒体流进行编码时,如果判定当前编码帧需要进行跳帧处理,则生成一个特殊帧作为该当前编码帧的编码结果插入到媒体流中,其中,该特殊帧中的所有宏块都按照跳过的宏块模式进行编码。
文档编号H04N7/50GK102724513SQ20121024151
公开日2012年10月10日 申请日期2012年7月12日 优先权日2012年7月12日
发明者俞海, 梁铁, 贾永华 申请人:杭州海康威视数字技术股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1