一种视频编码的方法和视频编码器与流程

文档序号:14039659阅读:206来源:国知局
一种视频编码的方法和视频编码器与流程
本申请涉及视频处理
技术领域
,特别是涉及一种视频编码的方法和一种视频编码器。
背景技术
:视频转码是一切互联网视频服务的基础,视频转码是指将已经压缩编码的视频码流转换成另一种格式的视频码流,以适应不同的网络带宽、不同的终端处理能力和不同的用户需求。视频转码本质上是一个先解码、再编码的过程。视频编码是指通过特定的压缩技术,将某种视频格式的文件转换成另一种视频格式文件的方式。为了保证转码后的视频流畅、清晰,在视频编码的过程中,通常需要对视频质量、码率等进行控制。已有技术在对视频进行编码时,可以针对不同的视频,预先设定相应的编码质量参数值,并根据设定的质量参数值对视频进行编码。通常在输入视频的码率较高,画质较好的情况下,按照上述方法编码能够节省码率或提升画质,满足用户的需求。但是,当输入视频的码率较低时,同样按照上述方法转码输出的码率则可能大于输入视频的码率。例如,输入视频原本是采用crf=40编码的,码率为150kbps,而在转码过程中采用crf=26进行转码,输出码率则可能为300kbps,显然输出码率大于了输入码率。由于输出视频不可能比输入视频的画质更好,但是输出码率却比输入码率更高,也就是说,在视频画质没有得到提升的情况下,增大了输出码率,这无疑会耗费更多的网络带宽,造成流量和网络带宽的浪费,甚至导致网络传输速率的下降。技术实现要素:鉴于上述问题,提出了本申请实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种视频编码方法和相应的一种视频编码器。为了解决上述问题,本申请公开了一种视频编码的方法,包括:获取当前视频帧的输入质量参数值;判断所述输入质量参数值是否大于当前输出质量参数值;若是,则将所述当前输出质量参数值调整为目标质量参数值;采用所述目标质量参数值对所述当前视频帧进行编码。可选地,所述将所述当前输出质量参数值调整为目标质量参数值的步骤包括:将所述当前输出质量参数值调整为与所述输入质量参数值相等,以所述输入质量参数值作为目标质量参数值。可选地,所述将所述当前输出质量参数值调整为目标质量参数值的步骤包括:获取第一时间段内输入的多个视频帧,所述多个视频帧分别具有对应的输入质量参数值;对所述多个视频帧的输入质量参数值进行平滑处理,获得平滑质量参数值;若所述平滑质量参数值大于所述当前输出质量参数值,则以所述平滑质量参数值作为目标质量参数值。可选地,对所述多个视频帧的输入质量参数值进行平滑处理,获得平滑质量参数值的步骤包括:计算所述多个视频帧的输入质量参数值的平均值,以所述平均值作为所述平滑质量参数值。可选地,在将所述当前输出质量参数值调整为目标质量参数值的步骤后,还包括:获取第二时间段内的多个视频帧的平均码率,所述平均码率包括输入平均码率和输出平均码率;根据所述输入平均码率和输出平均码率,调整所述目标质量参数值。可选地,所述根据所述输入平均码率和输出平均码率,调整所述目标质量参数值的步骤包括:当所述输入平均码率小于所述输出平均码率时,将所述目标质量参数值上调第一预设调整值;当所述输入平均码率大于所述输出平均码率时,判断所述目标质量参数值是否被上调过;若是,则将所述目标质量参数值下调第二预设调整值,所述第二预设调整值小于等于所述第一预设调整值。可选地,还包括:将所述当前视频帧转码为第二格式的目标码流视频帧。可选地,所述将所述当前视频帧转码为第二格式的目标码流视频帧的步骤包括:获取所述当前视频帧与所述目标码流视频帧之间的质量参数映射表;从所述质量参数映射表中查找出所述当前视频帧与所述目标码流视频帧的质量参数值对应关系;采用所述质量参数值对应关系,调整所述目标质量参数值。可选地,所述当前视频帧为h.264码流视频帧,h.265码流视频帧,或,mpeg2码流视频帧,所述目标码流视频帧为h.264码流视频帧,或,h.265码流视频帧。为了解决上述问题,本申请还公开了一种视频编码器,包括:获取模块,用于获取当前视频帧的输入质量参数值;判断模块,用于判断所述输入质量参数值是否大于当前输出质量参数值;调整模块,用于在所述输入质量参数值大于当前输出质量参数值时,将所述当前输出质量参数值调整为目标质量参数值;第一编码模块,用于采用所述目标质量参数值对所述当前视频帧进行编码。可选地,所述调整模块包括:第一调整子模块,用于将所述当前输出质量参数值调整为与所述输入质量参数值相等,以所述输入质量参数值作为目标质量参数值。可选地,所述调整模块包括:视频帧获取子模块,用于获取第一时间段内输入的多个视频帧,所述多个视频帧分别具有对应的输入质量参数值;平滑处理子模块,用于对所述多个视频帧的输入质量参数值进行平滑处理,获得平滑质量参数值;第二调整子模块,用于在所述平滑质量参数值大于所述当前输出质量参数值时,以所述平滑质量参数值作为目标质量参数值。可选地,所述平滑处理子模块包括:平滑质量参数值计算单元,用于计算所述多个视频帧的输入质量参数值的平均值,以所述平均值作为所述平滑质量参数值。可选地,所述调整模块还包括:平均码率获取子模块,用于获取第二时间段内的多个视频帧的平均码率,所述平均码率包括输入平均码率和输出平均码率;第三调整子模块,用于根据所述输入平均码率和输出平均码率,调整所述目标质量参数值。可选地,所述第三调整子模块包括:上调单元,用于在所述输入平均码率小于所述输出平均码率时,将所述目标质量参数值上调第一预设调整值;判断单元,用于在所述输入平均码率大于所述输出平均码率时,判断所述目标质量参数值是否被上调过;下调单元,用于在所述输入平均码率大于所述输出平均码率,且所述目标质量参数值被上调过时,将所述目标质量参数值下调第二预设调整值,所述第二预设调整值小于等于所述第一预设调整值。可选地,还包括:第二编码模块,用于将所述当前视频帧转码为第二格式的目标码流视频帧。可选地,所述第二编码模块包括:质量参数映射表获取子模块,用于获取所述当前视频帧与所述目标码流视频帧之间的质量参数映射表;质量参数值对应关系查找子模块,用于从所述质量参数映射表中查找出所述当前视频帧与所述目标码流视频帧的质量参数值对应关系;第四调整子模块,用于采用所述质量参数值对应关系,调整所述目标质量参数值。可选地,所述当前视频帧为h.264码流视频帧,h.265码流视频帧,或,mpeg2码流视频帧,所述目标码流视频帧为h.264码流视频帧,或,h.265码流视频帧。与
背景技术
相比,本申请实施例包括以下优点:本申请实施例中,视频编码器在接收到视频帧时,可以获取当前视频帧的输入质量参数值,通过判断所述输入质量参数值是否大于当前输出质量参数值,若是,则将所述当前输出质量参数值调整为目标质量参数值,然后采用所述目标质量参数值对所述当前视频帧进行编码,解决了在对视频进行编码时,输出视频的码率大于输入视频的码率的问题,从而节省了带宽和网络流量,提高了视频的网络传输速率。附图说明图1是本申请的一种视频编码的方法实施例一的步骤流程图;图2是本申请的一种视频编码的方法的原理图;图3是已有技术中输入视频帧和输出视频帧的质量参数值示意图;图4是本申请的一种视频编码的方法实施例一中输入视频帧和输出视频帧的质量参数值示意图;图5是本申请的一种视频编码的方法实施例二的步骤流程图;图6是本申请的一种视频编码的方法实施例三的步骤流程图;图7是本申请的一种视频编码方法的具体实现过程示意图;图8a-8c是本申请的一种视频编码器实施例的结构框图。具体实施方式为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。通常,视频服务商会将高清片源压缩成“流畅”、“标清”、“高清”、“超清”等不同清晰度的视频流,以满足互联网传输的要求。目前,已有的转码技术可以分为两种形式。一种是将各个清晰度的转码参数预先设定好,然后按照对应清晰度的分辨率选择相应的码率进行编码,如表一所示。表一:互联网视频行业的常规转码配置分辨率码率流畅576x320300k标清848x480700k高清1280x7202000k超清1920x10803000k另一种则是同样先将各个清晰度的分辨率预先设置好,但并不确定对应的码率,而是通过基于对视频内容的探测,自适应地决定,如表二和表三所示,分别是按照此类方式对内容简单和内容复杂的视频进行转码的结果示例。表二:内容简单的视频转码结果示例表三:内容复杂的视频转码结果示例由表二和表三的对比可知,在视频内容简单的情况下,按照此类方式进行编码能够大幅节省码率,而在视频内容复杂的情况下,转码后输出的码率可能略大于常规码率,但由于码率是按需给定的,因此略高的码率必然能够带来画质的提升。上述两种转码方式都是通过固定质量,限制峰值码率来实现的,即:对一个确定分辨率的转码任务,固定crf(constantratefactor),限制瞬时码率上限vbv-maxrate(videobitrateverifier)。该方法能够使得转码后的视频画质好,而且比固定码率节省流量。但是,对于不同画质的视频,按照上述固定质量,限制峰值码率的方式进行转码获得的转码输出的码率却差异较大。如表四所示,假设转码系统针对720p统一采用crf=25,vbv-maxrate=3500k来做转码,由于输入视频1、输入视频2的画质都较好,经过转码后输出视频保持了输入视频的高画质,同时码率减小也适合在互联网上进行传输;但是对于画质已经很差的输入视频3(假定输入视频3已经经过了crf=40的高度压缩,码率为500k),如果转码系统依然采用crf=25来做转码,则输出视频的码率可能达到1000k,超过了输入码率,但画质不会更好。表四:不同画质片源转码效果示例由于码率与转码时所采用的质量参数成反比,质量参数越大,码率越小,质量参数越小,码率越大,因此,提出了本申请实施例的核心构思之一在于,通过控制转码时所采用的质量参数的大小,确保转码后输出的视频的码率小于输入的视频的码率。参照图1,示出了本申请的一种视频编码的方法实施例一的步骤流程图,具体可以包括如下步骤:步骤101,获取当前视频帧的输入质量参数值;在本申请实施例中,所述当前视频帧可以是h.264码流视频帧,h.265码流视频帧,mpeg2码流视频帧,或者其他格式的视频帧,本申请对视频帧的具体类型不作限定。h.264是国际标准化组织(iso)和国际电信联盟(itu)共同提出的新一代数字视频压缩格式,是视频编解码技术标准之一。h.265是在现有的h.264的基础上,保留原来的某些技术,同时对一些相关的技术加以改进所制定的新的视频编码标准。h.264与h.265具有相同的质量参数体系,其质量参数值支持52个量化步长(0-51)。而mpeg-2则是由mpeg(活动图像编码专家组)组织制定的视频和音频有损压缩标准之一,可以提供一个较广范围的改变压缩比,以适应不同画面质量、存储容量,以及带宽的要求。mpeg-2与h.264或h.265具有不同的质量参数体系,其质量参数值支持32个量化步长(0-31)。通常,mpeg-2的质量参数值与h.264或h.265的质量参数值可以通过查找相互之间的质量参数映射表进行对应替换。质量参数(qualityparameter,qp)又称量化参数,是进行视频编码时的主要参数之一。当qp取最小值0时,表示视频的量化最精细,相反,qp取最大值时,表示视频的量化是最粗糙的。同时,qp与码率成反比,qp越大,码率越小,qp越小,码率越大。如图2所示,是本申请的一种视频编码的方法的原理图,本申请实施例在接收到输入的当前视频帧后,可以提取视频帧信息,通过更新当前视频帧的参数,实现对当前视频帧的编码,从而能够输出满足相应要求的视频流。在具体实现中,当视频编码器接收到一帧视频帧后,可以从该视频帧所携带的信息中获取到输入质量参数值。通常,在对视频进行转码,以满足互联网的传输要求时,该视频一般都已经经过一次压缩,所以,本申请实施例获取的输入质量参数值即是该视频在前次压缩时所使用的质量参数值。步骤102,判断所述输入质量参数值是否大于当前输出质量参数值;通常,视频编码器在对视频进行编码时,会首先确定出编码所使用的质量参数值,即输出质量参数值,例如,视频编码器可以采用固定qp=29对接收到的视频帧进行编码。因此,在本申请实施例中,当获取到当前视频帧的输入质量参数值后,可以将所述输入质量参数值与视频编码器当前所采用的输出质量参数值进行比较。步骤103,若是,则将所述当前输出质量参数值调整为目标质量参数值;由于qp与码率成反比,qp越大,码率越小,qp越小,码率越大,因此,当接收到的视频帧的输入质量参数值大于输出质量参数值时,采用所述输出质量参数值对当前视频帧进行编码获得的编码后的视频帧的码率必然会大于该视频帧的输入码率,因此,可以对所述当前输出质量参数值,也就是视频编码器当前正在使用的质量参数值,进行调整,获得目标质量参数值,所述目标质量参数值可以大于等于当前视频帧的输入质量参数值,本申请对目标质量参数值的具体数值不作限定。例如,若当前视频帧的输入质量参数值为33,而视频编码器正在使用的质量参数值为qp=29,即输入质量参数值大于了当前输出质量参数值,按照qp=29对输入视频进行编码,所获得的编码后的视频的码率会大于输入视频的码率。此时,可以将视频编码器正在使用的质量参数值调整为大于或等于输入质量参数值。在本申请的一种优选实施例中,所述将所述当前输出质量参数值调整为目标质量参数值的步骤具体可以包括如下子步骤:子步骤1031,将所述当前输出质量参数值调整为与所述输入质量参数值相等,以所述输入质量参数值作为目标质量参数值。在具体实现中,若当前输出质量参数值小于视频帧的输入质量参数值,可以将当前输出质量参数值调整为与所述输入质量参数值相等,例如,若当前视频帧的输入质量参数值inqp=29,而视频编码器当前所采用的质量参数值outqp=26,则可以将所述视频编码器的质量参数值调整为与输入质量参数值相同,以qp=29作为目标质量参数值。步骤104,采用所述目标质量参数值对所述当前视频帧进行编码。在本申请实施例中,由于目标质量参数值大于等于当前视频帧的输入质量参数值,因此,采用所述目标质量参数值对视频帧进行编码,所获得的编码后的视频帧的码率不会超过该视频帧的输入码率,保证了输出视频的码率能够小于输入视频的码率。如图3和图4所示,分别是已有技术中输入视频帧和输出视频帧的质量参数值示意图,以及本申请实施例中输入视频帧和输出视频帧的质量参数值示意图。在图3中,输入视频的质量参数(输入帧qp)在20-40之间波动,由于图3中默认采用固定质量参数qp=29编码,因此输出视频的输出质量参数为29(输出帧qp)。按照图3所示的质量参数进行编码,画质通常有所保障,但是当输出视频帧的质量参数(也即编码器使用的输出质量参数)小于输入视频帧的输入质量参数时,输出视频的码率就很可能大于输入视频码率。而在图4中,输入视频与图3中的输入视频相同,但是通过调整视频编码器的输出质量参数,使得输出帧的质量参数值与输入帧的质量参数值相等,能够使得输出视频的码率不大于输入视频的码率。在本申请实施例中,视频编码器在接收到视频帧时,可以获取当前视频帧的输入质量参数值,通过判断所述输入质量参数值是否大于当前输出质量参数值,若是,则将所述当前输出质量参数值调整为目标质量参数值,然后采用所述目标质量参数值对所述当前视频帧进行编码,解决了在对视频进行编码时,输出视频的码率大于输入视频的码率的问题,从而节省了带宽和网络流量,提高了视频的网络传输速率。参照图5,示出了本申请的一种视频编码的方法实施例二的步骤流程图,具体可以包括如下步骤:步骤501,获取当前视频帧的输入质量参数值;在本申请实施例中,所述当前视频帧可以是h.264码流视频帧,h.265码流视频帧,mpeg2码流视频帧,或者其他格式的视频帧,本申请对视频帧的具体类型不作限定。通常,为了实现不同格式的视频能够在互联网上进行传输和播放,往往需要对原始的视频进行转码操作,以使转码后的视频能够适应互联网的带宽、传输速率等要求,例如,对原始视频的编码可以是为了获得更小的码率的输出视频,从而实现在一定带宽下的快速传输。在本申请实施例中,当视频编码器接收到一帧视频帧后,可以从该视频帧所携带的信息中获取到输入质量参数值,所述输入质量参数值可以认为是该视频帧在前次压缩时所采用的质量参数值。步骤502,判断所述输入质量参数值是否大于当前输出质量参数值;通常,视频编码器在对视频进行编码时,会首先确定出编码所使用的质量参数值,即输出质量参数值,因此,在本申请实施例中,当获取到当前视频帧的输入质量参数值后,可以将所述输入质量参数值与视频编码器当前所采用的输出质量参数值进行比较。由于视频的质量参数与码率成反比,采用较小的质量参数值进行编码获得的视频的码率往往较大,因此,当所述输入质量参数值大于当前输出质量参数值时,采用当前输出质量参数值进行编码所获得的编码后的视频的码率必然也会大于输入视频的码率,不利于该视频在互联网上的传输和播放,此时,可以对所述当前输出质量参数值进行调整。步骤503,若是,则获取第一时间段内输入的多个视频帧,所述多个视频帧分别具有对应的输入质量参数值;在本申请实施例中,所述第一时间段可以是在进行视频转码时的一定时间窗内,例如,可以是当前视频帧的之前若干帧视频帧(比如10帧)所对应的时间窗,还可以是当前视频帧对应的时间点之前的一定时间范围(比如30秒),本申请对第一时间段的大小范围不作限定。步骤504,对所述多个视频帧的输入质量参数值进行平滑处理,获得平滑质量参数值;通常,视频编码器接收到的视频帧的输入质量参数值并不稳定,因此,为了避免转码后视频突然出现的跳变,可以对多个视频帧的输入质量参数值进行平滑处理。在本申请的一种优选实施例中,对所述多个视频帧的输入质量参数值进行平滑处理,获得平滑质量参数值的步骤具体可以包括如下子步骤:子步骤5041,计算所述多个视频帧的输入质量参数值的平均值,以所述平均值作为所述平滑质量参数值。在本申请实施例中,可以在获得第一时间段内的多个视频帧后,累加所述多个视频帧的质量参数值,然后获得所述多个视频帧的质量参数值的平均值,以所述平均值作为平滑质量参数值。例如,当第一时间段为当前视频帧的前10帧范围时,可以通过提取这10帧的输入质量参数值求和,然后计算其平均值作为平滑质量参数值。步骤505,若所述平滑质量参数值大于所述当前输出质量参数值,则以所述平滑质量参数值作为目标质量参数值;在具体实现中,计算获得平滑质量参数值后,如果所述平滑质量参数值大于视频编码器当前采用的输出质量参数值,那么按照当前的输出质量参数值进行编码,编码后的视频的码率必然会大于编码前的视频的码率,因此可以将所述当前输出质量参数值调整为与所述平滑质量参数值相等,以所述平滑质量参数值作为目标质量参数值。步骤506,采用所述目标质量参数值对所述当前视频帧进行编码。在本申请实施例中,通过获取一定时间窗内的多个视频帧的输入质量参数值,并对其进行平滑处理,若平滑质量参数值大于视频编码器当前所采用的输出质量参数值,则可以以所述平滑质量参数值作为目标质量参数值,进而对视频帧进行编码,能够有效避免由于质量参数值的跳变而对转码后的视频的显示画质造成的影响。参照图6,示出了本申请的一种视频编码的方法实施例三的步骤流程图,具体可以包括如下步骤:步骤601,获取当前视频帧的输入质量参数值;步骤602,判断所述输入质量参数值是否大于当前输出质量参数值;步骤603,若是,则将所述当前输出质量参数值调整为目标质量参数值;由于步骤601-步骤603与实施例一中步骤101-步骤103类似,可以互相参照,本实施例对此不再赘述。步骤604,获取第二时间段内的多个视频帧的平均码率,所述平均码率包括输入平均码率和输出平均码率;在本申请实施例中,在将当前输出质量参数值调整为目标质量参数值后,还可以通过统计视频帧的输入平均码率和输出平均码率,来对目标质量参数值进行验证,以保证视频编码器所采用的目标质量参数值的合理和有效。在具体实现中,可以通过统计第二时间段内输入或输出的视频的大小,获得多个视频帧的平均码率。本申请对第二时间段的具体大小范围不作限定。例如,当统计在10秒钟的时间内,输入的多个视频帧的数据大小为100bit,则可以通过计算所述数据大小与所述时间的比值,获得该时间段内的输入平均码率。步骤605,根据所述输入平均码率和输出平均码率,调整所述目标质量参数值;在本申请实施例中,当分别获得输入平均码率和输出平均码率后,可以通过比较所述输入平均码率和所述输出平均码率的大小,来对目标质量参数值是否合理和有效进行验证,如果经验证发现目标质量参数没有能够满足编码的要求,如编码后的输出平均码率大于仍然大于编码前的输入平均码率,从而可以继续对目标质量参数值进行调整。在本申请的一种优选实施例中,所述根据所述输入平均码率和输出平均码率,调整所述目标质量参数值的步骤具体可以包括如下子步骤:子步骤6051,当所述输入平均码率小于所述输出平均码率时,将所述目标质量参数值上调第一预设调整值;子步骤6052,当所述输入平均码率大于所述输出平均码率时,判断所述目标质量参数值是否被上调过;子步骤6053,若是,则将所述目标质量参数值下调第二预设调整值,所述第二预设调整值小于等于所述第一预设调整值。在具体实现中,当输入平均码率小于输出平均码率时,可以将目标质量参数值上调第一预设调整值,所述第一预设调整值可以是1、2或其他数值,本领域技术人员可以根据实际需要确定所述第一预设调整值的具体大小,本申请对此不作具体限定。当输入平均码率大于输出平均码率时,进一步地,可以是输入平均码率大于输出平均码率的一定倍数时,所述倍数为大于1倍,例如输入平均码率大于输出平均码率的1.3倍时,可以继续判断所述目标质量参数值在先是否已经被上调过,若是,则可以对所述目标质量参数值在先被上调的部分进行下调,即将所述目标质量参数值下调第二预设调整值。需要说明的是,所述第二预设调整值应该小于等于所述第一预设调整值。例如,当目标质量参数在先被上调的第一预设调整值为3时,此时被下调的第二预设调整值可以是小于等于3的一个值,例如1、2或3,以恢复到正常水平。在本申请的另一种优选实施例中,所述方法还可以包括:将所述当前视频帧转码为第二格式的目标码流视频帧,即采用本实施例的方法可以实现将一种格式的视频帧转码为另一种格式的视频帧。具体地,所述将所述当前视频帧转码为第二格式的目标码流视频帧的步骤可以进一步包括:s11,获取所述当前视频帧与所述目标码流视频帧之间的质量参数映射表;s12,从所述质量参数映射表中查找出所述当前视频帧与所述目标码流视频帧的质量参数值对应关系;s13,采用所述质量参数值对应关系,调整所述目标质量参数值。在本申请实施例中,所述当前视频帧可以为h.264码流视频帧,h.265码流视频帧,或,mpeg2码流视频帧,所述目标码流视频帧可以为h.264码流视频帧,或,h.265码流视频帧。即在进行视频转码时,输入视频帧可以是h.264码流视频帧,h.265码流视频帧,或,mpeg2码流视频帧,而转码输出的视频帧也可以是h.264码流视频帧,h.265码流视频帧,或,mpeg2码流视频帧中的任一一种。例如,可以是输入h.264码流视频帧,转码输出h.265码流视频帧,也可以是输入h.265码流视频帧,转码输出h.264码流视频帧,还可以是输入mpeg2码流视频帧,转码输出h.264码流视频帧或h.265码流视频帧。在具体实现中,当转码输出的目标码流视频帧与当前视频帧的格式不同时,例如,由第一格式的当前视频帧转码为第二格式的目标码流视频帧时,可以首先获取到当前视频帧与目标码流视频帧之间的质量参数映射表,所述质量参数映射表中记录有第一格式的视频帧与第二格式的视频帧的不同的质量参数值之间的对应关系。然后可以进一步从所述映射表中查找出当前视频帧的质量参数值对应与第二格式的视频帧的质量参数值,即当第一格式的视频帧的质量参数值为a时,查找获得对应的第二格式的视频帧的质量参数值为b,然后采用获得的质量参数值b,对目标质量参数值进行调整。需要说明的是,由于h.264与h.265具有相同的质量参数体系,因此,可以通过直接比较输入质量参数值和输出质量参数值的大小,来对目标质量参数值进行调整,而当由mpeg2码流视频帧转码为h.264码流视频帧或h.265码流视频帧时,由于mpeg-2与h.264或h.265具有不同的质量参数体系,因此,可以通过查找mpeg2码流视频帧与目标码流视频帧之间的质量参数映射表,获得mpeg2码流视频帧与目标码流视频帧的质量参数值对应关系,采用所述质量参数值对应关系,调整所述目标质量参数值。步骤606,采用所述目标质量参数值对所述当前视频帧进行编码。在本申请实施例中,通过比较输入质量参数值与视频编码器当前所采用的输出质量参数值的大小,调整获得目标质量参数值后,还可以通过统计一定时间内的输入平均码率和输出平均码率的大小,来对目标质量参数值进行验证和调整,以使所述目标质量参数值更合理和有效。为了便于理解,下面以一个具体的示例对本申请的视频编码方法作一介绍。参照图7,是本申请的一种视频编码方法的具体实现过程示意图。本申请的视频编码方法具体工作流程可以包括:a.视频网站等视频内容提供商为了将某个视频,例如一部电影或者用户自行上传的自拍视频,在互联网上进行传输或播放,需要对原始的视频数据进行编码或转码,以满足互联网的带宽或传输速率的要求。通常,对视频进行转码或编码的其中一个目的可以是将原始视频转码为码率更小的视频。由于一个视频是由多个图像数据组合构成的,因此,在对视频进行转码或编码时,可以分别对每一帧的视频数据进行转码或编码操作。如图7所示,视频编码器在接收到一帧图像数据fn后,可以首先通过提取该fn的视频信息,从而确定出fn之前被压缩时使用的量化参数inqpn。对于一个视频编码器,无论是采用固定crf、固定qp还是1pass/2pass等不同类型的编码方式,此时视频编码器都已经确定了当前正在使用的量化参数outqpn。b.通常,视频编码器接收到的视频帧的量化参数inqpn并不稳定,因此,为了避免转码后视频突然出现的跳变,可以通过对一定时间窗内(例如前面10帧)的视频帧的量化参数inqpn进行低通滤波,具体地,对多个视频帧进行低通滤波可以按照如下公式进行:inqp’n=σi=0-9inqpn-i/10即,以前面10帧视频帧的平均量化参数inqp’n作为输入视频的量化参数,以减少由于量化参数值波动过大对于转码后的视频的画质的影响。c.在步骤b确定出输入视频的量化参数inqp’n后,可以将该量化参数inqp’n与视频编码器当前正在使用的量化参数outqpn进行比较,从而确定是否需要调整视频编码器当前的参数值。具体地,如果inqp’n>outqpn,即输入视频的量化参数大于了视频编码器当前正在使用的量化参数,那么,由于视频的量化参数与码率成反比,量化参数越小,码率越大,此时的视频编码器在对输入视频编码后,所获得的输出视频的码率必然也会大于输入视频的码率,无法满足视频转码的要求,因此,需要对视频编码器当前正在使用的量化参数进行调整,如取outqpn=inqp’n,即,将视频编码器使用的量化参数调整为与输入视频的量化参数相等。d.在按照调整后的量化参数对输入视频进行编码后,为了验证该次调整后的量化参数是否合理和有效,可以对该调整后的量化参数进行验证。具体地,可以实时检验半分钟内的时间窗,统计过去30秒内,输入视频的平均码率inbrn,和,转码输出的平均码率outbrn,判断转码输出的平均码率是否小于输入视频的平均码率。e.如果inbrn<outbrn,即转码输出的平均码率仍然大于输入视频的平均码率,此时,可以进一步对视频编码器的量化参数进行调整,例如取outqpn=outqpn+1,即对outqpn上浮一定数值,并采用上浮后的对输入视频进行转码,然后继续通过统计输入视频的平均码率inbrn,和,转码输出的平均码率outbrn,来判断本次调整的量化参数值是否合理。f.如果inbrn>1.3*outbrn&&outqpn,即输入视频的平均码率大于转码输出的平均码率outbrn的一定倍数(大于1倍)时,表示视频编码器此时正在采用的量化参数在先已经被上调过,此时,可以取outqpn=outqpn-1。即把上浮过的outqp再恢复回正常水平,需要说明的是,对量化参数的下调的具体数值并非必须与上浮的数值完全一致,而是可以小于上浮的数值,从而能够平滑地实现对量化参数的调整,避免由于量化参数的调整幅度过大,而造成对转码后视频的画质的影响。g.使用此时的outqpn对fn进行编码,完成后继续对下一帧视频帧重复上述操作,从而能够实现根据输入视频的量化参数和输入平均码率,动态地对视频编码器所采用的量化参数进行调整,避免了对不同内容或复杂度的视频由于采用统一的量化参数而造成的画质的影响,使得视频转码过程能够与视频内容相适应,转码后的视频也更能满足互联网的传输和播放要求,提高了用户的观看体验。需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请实施例并不受所描述的动作顺序的限制,因为依据本申请实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本申请实施例所必须的。参照图8a,示出了本申请的一种视频编码器实施例的结构框图之一,所述视频编码器具体可以包括如下模块:获取模块801,用于获取当前视频帧的输入质量参数值;判断模块802,用于判断所述输入质量参数值是否大于当前输出质量参数值;调整模块803,用于在所述输入质量参数值大于当前输出质量参数值时,将所述当前输出质量参数值调整为目标质量参数值;第一编码模块804,用于采用所述目标质量参数值对所述当前视频帧进行编码。可选地,在图8a的基础上,参照图8b,是本申请的一种视频编码器实施例的结构框图之二,所述调整模块803具体可以包括如下子模块:第一调整子模块8031,用于将所述当前输出质量参数值调整为与所述输入质量参数值相等,以所述输入质量参数值作为目标质量参数值。在本申请实施例中,所述调整模块803还可以包括如下子模块:视频帧获取子模块8032,用于获取第一时间段内输入的多个视频帧,所述多个视频帧分别具有对应的输入质量参数值;平滑处理子模块8033,用于对所述多个视频帧的输入质量参数值进行平滑处理,获得平滑质量参数值;第二调整子模块8034,用于在所述平滑质量参数值大于所述当前输出质量参数值时,以所述平滑质量参数值作为目标质量参数值。在本申请实施例中,所述平滑处理子模块8033具体可以包括如下单元:平滑质量参数值计算单元,用于计算所述多个视频帧的输入质量参数值的平均值,以所述平均值作为所述平滑质量参数值。在本申请实施例中,所述调整模块803还可以包括如下子模块:平均码率获取子模块8035,用于获取第二时间段内的多个视频帧的平均码率,所述平均码率可以包括输入平均码率和输出平均码率;第三调整子模块8036,用于根据所述输入平均码率和输出平均码率,调整所述目标质量参数值。在本申请实施例中,所述第三调整子模块8036具体可以包括如下单元:上调单元,用于在所述输入平均码率小于所述输出平均码率时,将所述目标质量参数值上调第一预设调整值;判断单元,用于在所述输入平均码率大于所述输出平均码率时,判断所述目标质量参数值是否被上调过;下调单元,用于在所述输入平均码率大于所述输出平均码率,且所述目标质量参数值被上调过时,将所述目标质量参数值下调第二预设调整值,所述第二预设调整值小于等于所述第一预设调整值。在本申请实施例中,所述装置还可以包括如下模块:第二编码模块805,用于将所述当前视频帧转码为第二格式的目标码流视频帧。可选地,在图8a的基础上,参照图8c,是本申请的一种视频编码器实施例的结构框图之三,所述第二编码模块805具体可以包括如下子模块:质量参数映射表获取子模块8051,用于获取所述当前视频帧与所述目标码流视频帧之间的质量参数映射表;质量参数值对应关系查找子模块8052,用于从所述质量参数映射表中查找出所述当前视频帧与所述目标码流视频帧的质量参数值对应关系;第四调整子模块8053,用于采用所述质量参数值对应关系,调整所述目标质量参数值。在本申请实施例中,所述当前视频帧可以为h.264码流视频帧,h.265码流视频帧,或,mpeg2码流视频帧,所述目标码流视频帧可以为h.264码流视频帧,或,h.265码流视频帧。对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。本领域内的技术人员应明白,本申请实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。在一个典型的配置中,所述计算机设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非持续性的电脑可读媒体(transitorymedia),如调制的数据信号和载波。本申请实施例是参照根据本申请实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。以上对本申请所提供的一种视频编码的方法和一种视频编码器,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1