视频编码的码率控制方法及视频数据的发射设备的制作方法

文档序号:7645474阅读:127来源:国知局
专利名称:视频编码的码率控制方法及视频数据的发射设备的制作方法
技术领域
本发明涉及视频编码技术,尤其是一种视频编码的码率控制的方法。

背景技术
视频编码标准通常采用去除时空域相关性的帧内帧间预测、离散余弦变换量化和熵编码技术,以达到较高的编码效率。对视频通信而言,由于通信信道带宽有限,需对视频编码码率进行控制,以保证编码码流的顺利传输和信道带宽的充分利用。针对不同的应用场合,目前有多种码率控制(RateControl)策略。其中,实时编码码率控制方法主要有两种用先前宏块编码产生的比特数来预测当前宏块编码产生比特数,或者通过视频编码率失真函数来预测当前宏块编码产生的比特数。
但是,上述两种实时编码码率控制方法均未能充分考虑网络带宽状况,只是简单地通过先前的编码率来产生当前的编码率,从而造成预测编码不能很好的适合当前网络状况的传输。


发明内容
本发明提供一种视频编码的码率控制的方法,能够充分考虑网络状况,提高对码流的控制效果,改善视频传输的图像质量。
本发明提供一种视频编码的码率控制方法,发送方通过实时传输控制反馈链路定期发送控制包,当接收到反馈控制包时,根据所述反馈控制包中的丢包率获得输出码率,将视频数据按照所获得的码率通过实时传输链路进行发送。
本发明同时提供一种视频数据的发射设备,包括 数据采集模块,用于采集视频数据; 编码器,用于将所述视频数据按照目标码率进行编码; 实时传输链路接口,用于通过发送所述视频数据;以及 实时传输控制反馈链路接口,通过定期发送控制包,接收反馈控制包; 以及第一控制模块,用于根据所述反馈控制包中的丢包率获得目标码率。
本发明还提供另一种视频数据的发射设备,包括 数据采集模块,用于采集视频数据; 编码器,用于将所述视频数据按照目标码率获得输出码率,并根据输出码率进行编码; 实时传输链路接口,用于通过发送所述视频数据;以及 实时传输控制反馈链路接口,通过定期发送控制包,接收反馈控制包; 以及量化参数调节器,用于根据所述丢包率获得I帧的量化参数。
由于丢包率将影响视频数据的传输质量,本发明提供的视频编码的码率控制方法及发射设备通过考虑丢包率的因素对输出码率进行控制,使编码出来的数据能更好地适应当前网络状况的传输,从而达到更好的视频显示效果。



图1为本发明的视频编码的码率控制方法的流程图; 图2为本发明的处理视频数据的系统框图。

具体实施例方式 丢包率是指网络传输数据的丢失情况,在视频编码产生的数据包相对较大时,在网络状况较好的情况下,数据包传输比较好,丢包率也就比较小,甚至不丢包,但是当网络状况不佳时丢包率可能就会较严重,从而导致接收方收到的视频图像不流畅,甚至出现马赛克,由此可知,丢包率将影响视频数据的传输质量,本发明提供的视频编码的码率控制方法通过考虑丢包率的因素对输出码率进行控制,使编码出来的数据能更好地适应当前网络状况的传输,从而达到更好的视频显示效果。
本发明中承载视频数据的数据包的发送是基于RTP(实时传输协议,Runtime Transfer Protocol)协议传输的,RTP主要用于传输实时数据流(如视频流等),另外,本发明利用RTCP(实时传输控制协议,Runtime TransferControl Protocol)反馈链路发送控制包和反馈控制包,通过反馈控制包获取丢包率。RTCP协议是RTP协议的补充与控制,RTP协议传输的丢包率可以通过RTCP协议的反馈控制链路获得,可以通过RTCP链路定期发送控制包,例如可以每发送Ns个视频数据包就发送一个前向的RTCP控制包,RTCP控制包的作用在于分析比对发送方发送的数据与接收方接收到的数据的差异,从而推算出网络传输的丢包率。控制包描述了本次发送的数据包的信息,如数据包序列、个数、长度等信息,当接收方收到该数据包之后与接收到的控制包进行分析比较,检测本次接收的数据包与发送方发送的数据包是否一致,随后发送反馈控制包给发送方,发送方可以根据接收方的反馈控制包获知本次数据传输的丢包率。
以下阐述本发明的实现过程。
本发明提供的视频编码的码率控制方法,发送方从硬件摄像头等视频采集设备采集视频数据,通过RTP链路发送视频数据(步骤101),并通过实时传输控制反馈链路定期发送控制包(步骤102),当接收到反馈控制包时,根据所述反馈控制包中的丢包率获得输出码率(步骤103),将视频数据按照所获得的码率通过实时传输链路进行发送(步骤104)。
对于步骤103中根据丢包率获得输出码率的过程,本发明提供多种实现方式,例如一、根据丢包率对目标帧率进行控制,根据目标帧率对视频采集设备所采集的视频数据进行控制,从而达到控制输出码率的目的;二、根据丢包率对目标速率进行控制,根据目标速率与P帧的量化参数之间的对应关系获得P帧的量化参数,通过P帧的量化参数对输出码率进行控制;三、根据丢包率对I帧的量化参数进行控制,通过I帧的量化参数对输出码率进行控制。值得指出的是,上述所列举的三种实现方式可以仅采用其中一种方式实现对输出码率的控制,也可以将其中的任意两种进行组合后对输出码率进行控制,还可以同时使用三种方式实现对输出码率的控制。以下分别阐述上述三种方式的实现过程,对于具体的组合方式不再赘述,本领域技术人员可以通过常规技术手段实现。
以下介绍通过目标帧率控制输出码率的过程。
帧率是用来描述采集的视频数据快慢的物理量,帧率越大,单位时间内采集的数据也就越大,从而单位时间内输出的视频数据越大,即输出码率越大,因此可以通过控制目标帧率达到控制输出码率的目的。
作为本发明的一个实施例,在此提供一种通过丢包率获得目标帧率的自适应调整公式, if(Pth1<Ploss<Pth2) 公式(1) F=max{(Fi-Δf*Ploss),Fmin} 其中,Fi为初始帧率,Fmin为最小帧率,Δf为递增帧率乘数,Pth为丢包率门限。
在X.264编码中包括两种类型的帧关键帧和补充帧,在编码的过程中通过设置关键帧的频率可得出关键帧与补充帧的比例,在本发明中,将关键帧定义为I帧,将补充帧定义为P帧,其中关键帧I帧是图像的关键部分,后续的P帧是图像的运动补充。P帧或者I帧的量化参数的变化都将引起编码的视频数据量的变化,从而引起输出码率发生变化,因此本发明还提供通过丢包率调整量化参数的方法,从而实现对输出码率的控制。
以下介绍通过目标速率获得P帧的量化参数的过程。
X.264编码标准中宏块是最小的单位,帧由宏块组成,而帧又组成图像组GOP,一个宏块数据的大小将决定一帧数据的大小,一帧数据的大小也就决定了GOP层数据的大小,最终影响输出码率。在宏块层,影响数据大小的关键参数是量化系数QPP,因此,本发明通过控制QPP,控制编码数据的大小,从而影响帧的数据量,进而影响GOP层的数据量,最终确定了输出码率R。
本发明通过丢包率获得目标速率,通过目标速率能够自适应调整的P帧量化参数QPP。
作为本发明的一个实施例,在此提供一种通过丢包率获得目标码率的自适应调整公式 if(Pth1<Ploss<Pth2)公式(2) R=max{(Ri-Δr*Ploss),Rdown} 式中,Ri为初始速率,在一个实施例中取值100kb/s,down为最小速率,表示正常传输的最小带宽要求,在一个实施例中取值50kb/s,Rup为峰值速率,在一个实施例中取值200kb/s,Δr为递增速率乘数,在一个实施例中取值200,Pth是丢包率门限,可以取值在0~50%。这些取值可以根据实际情况而定,例如帧率,图像分辨率等。
发送方收到反馈的RTCP包(其中携带了接收方检测到的本次的丢包率Ploss),通过上述公式可以看出,当丢包率Ploss很大,即网络状况不佳时,始终调整目标速率不低于Rdown,从而保证视频数据正常传输的最小带宽要求,根据该目标速率调整P帧的量化参数QPP,获得实际的输出速率。
以下是通过目标速率获得P帧的量化参数的过程。
首先,在GOP层根据上述公式(2)获得网络的有效带宽u,根据以下公式获得第k个GOP的第n个帧编码之前的虚拟缓冲占有量Bc(k,n) Bc(k,n)=min(max(0,Bc(k,n-1)+R(k,n-1)-u(k,n-1)/F),Bs) 式中,Bs为整个缓冲区的大小,Bc(1,1)=Bs/8,相应Bc(k,n-1)表示第K个GOP中第n-1个帧编码之前的虚拟缓冲占有量,R(k,n-1)表示第n-1帧编码后的比特大小,u(k,n-1)表示此时的有效带宽。
其次,在帧层,通过复杂度比较技术,并结合GOP层获得的虚拟缓冲占有量得出当前帧编码可使用的数据量。
编码完(n-1)帧数据后,GOP还剩下的分配量为Tr(k,n) 初始值为 根据上层确定比特使用量Tr(k,n)来决定本帧(也就是第n帧)应该使用多少数据量Tf(k,n) 公式(5) 式中Tr(k,n)为比特使用量,MADfn-1表示前一帧的复杂度,表示已经编码的帧的平均复杂度。
最后,在宏块层中由于在帧层已经确定了可使用的数据量,则每一个宏块可使用的数据量也可确定,当宏块可以使用的数据量一定时,需要通过调整量化参数以适应帧层提供的可使用数据量,至此,P帧的量化参数QPP也就实现了自适应调整,可以采用二阶率失真模型来确定当前的量化步长Q(m),公式如下。
式中,Tmb(k,n,m)表示第m个宏块(mb)的比特分配大小,MADnpred(m)表示当前帧的复杂度预测,从上述公式得到量化参数QPP(m)。
Q(m)=0.67*2QPp(m)/6 另外,为了图像平滑,可以做些量化参数的限定工作。
通过以上过程可以看出,当丢包率增大时,目标速率降低,有效带宽减少,从而P帧的量化参数变小,以致输出码率降低,从而实现更好地适应网络传输,达到更小的丢包率的效果。
以下介绍通过I帧的量化参数控制输出码率的过程。
因为I帧的编码数据占视频图像的较大比重,所以在此对I帧的量化参数根据丢包率采用自适应措施。作为一个实施例,本发明提供以下公式获得I帧的量化参数 公式(3) 其中,

表示P帧的量化参数平均值,Tr(k-1,Ngop)为第k-1个GOP的比特使用量,Ngop表示一个图像组中的帧的多少,Plossavg表示上个图像组中的平均丢包率,Ploss表示当前丢包率。
通过公式(3)可以看出,当前丢包率越大,I帧的量化参数越小,以致输出码率降低,从而实现更好的适应网络传输,达到更小的丢包率的效果。
值得指出的是,I帧的量化参数获得输出码率的过程可以通过现有技术中揭示的手段获得,在此不再赘述。另外,用户可以根据实际情况设计不同的公式以获得I帧的量化参数。
针对上述对视频数据的码率进行控制的方法,本发明对现有技术中的视频数据的发射设备进行了改进,如图2所示,图2示出了发射设备和接收设备组成的系统示意图,如图所示,该系统包括发送视频数据的摄像头、将视频数据编码后发送的发射设备以及接收设备。
发射设备202,包括数据采集模块、编码器,RTP接口、RTCP接口,另外,为了实现对输出码率的控制,还包括第一控制模块或量化参数调节器(QP调节器)。接收设备包括RTP接口、RTCP接口、以及第二控制模块。
当数据采集模块采集到来自摄像头的视频数据后,通过编码器将视频数据按照目标码率进行编码;然后通过RTP接口将视频数据包发送至接收设备,另外,发射设备通过RTCP接口定期发送控制包至接收设备,接收设备根据控制包的信息将反馈消息反馈给第二控制模块,第二控制模块构造反馈控制包,并通过RTCP接口将反馈控制包发送至发送设备,发送设备接收到反馈控制包后,根据其中的丢包率信息对输出码率进行调节,如上文所述,调节的方式可以通过目标帧率、目标码率以及量化参数进行调节。相应的,第一控制模块可以包括与数据采集模块连接的帧率控制模块、与编码器连接的速率控制模块,以及与编码器连接的量化参数调节器。同样如上文所述,帧率控制模块、速率控制模块、以及量化参数调节器可以单独存在或者以任意组合方式进行组合。图2示出了三者同时存在的示意图。
以上所述的本发明实施方式,并不构成对本发明保护范围的限定。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明的权利要求保护范围之内。
权利要求
1.一种视频编码的码率控制方法,其特征在于,包括步骤
发送方通过实时传输控制反馈链路定期发送控制包,当接收到反馈控制包时,根据所述反馈控制包中的丢包率获得输出码率,将视频数据按照所获得的码率通过实时传输链路进行发送。
2.根据权利要求1所述的方法,其特征在于,获得所述输出码率的步骤包括
根据所述丢包率获得目标速率,根据所述目标速率获得P帧的量化参数,根据所述P帧的量化参数获得所述输出码率。
3.根据权利要求2所述的方法,其特征在于,按照下述公式获得所述目标速率
if(Pth1<Ploss<Pth2)
R=max{(Ri-Δr*Ploss),Rdown}
其中,Ri为初始速率,Rdown为最小速率,Δr为递增速率乘数,Pth为丢包率门限。
4.根据权利要求1或2或3所述的方法,其特征在于,根据所述丢包率获得所述输出码率的步骤包括
根据所述丢包率获得目标帧率,根据所述目标帧率采集视频数据,根据所采集的视频数据获得所述输出码率。
5.根据权利要求4所述的方法,其特征在于,按照下述公式对所述目标帧率进行调整
if(Pth1<Ploss<Pth2)
F=max{(Fi-Δf*Ploss),Fmin}
其中,Fi为初始帧率,Fmin为最小帧率,Δf为递增帧率乘数,Pth为丢包率门限。
6.根据权利要求1或2或3或5所述的方法,其特征在于,获得所述输出码率的步骤包括
按照下述公式获得I帧的所述量化参数,根据所述I帧的量化参数获得所述输出码率
其中,QPI为I帧的量化参数,
表示P帧的量化参数平均值,Tr(k-1,Ngop)为第k-1个图像组的比特使用量,Ngop表示图像组中的帧的数量,Plossavg表示上一个图像组中的平均丢包率,Ploss表示当前丢包率。
7.一种视频数据的发射设备,包括
数据采集模块,用于采集视频数据;
编码器,用于将所述视频数据按照目标码率获得输出码率,并根据输出码率进行编码;
实时传输链路接口,用于通过发送所述视频数据;以及
实时传输控制反馈链路接口,通过定期发送控制包,接收反馈控制包;
其特征在于,还包括
第一控制模块,用于根据所述反馈控制包中的丢包率获得目标码率。
8.根据权利要求7所述的视频数据的发射设备,其特征在于,所述控制模块包括速率控制模块,用于根据所述丢包率获得目标速率;所述目标速率用于获得P帧的量化参数,所述输出码率根据所述P帧的量化参数获得。
9.根据权利要求7或8所述的视频数据的发射设备,其特征在于,所述控制模块包括帧率控制模块,用于根据所述丢包率获得目标帧率,所述数据采集模块根据目标帧率采集视频数据。
10.根据权利要求9所述的视频数据的发射设备,其特征在于,还包括量化参数调节器,用于根据所述丢包率获得I帧的量化参数,所述输出码率根据所述I帧的量化参数获得。
11.一种视频数据的发射设备,包括
数据采集模块,用于采集视频数据;
编码器,用于将所述视频数据按照输出码率进行编码;
实时传输链路接口,用于通过发送所述视频数据;以及
实时传输控制反馈链路接口,通过定期发送控制包,接收反馈控制包;
其特征在于,还包括
量化参数调节器,用于根据所述丢包率获得I帧的量化参数,所述输出码率根据所述I帧的量化参数获得。
12.根据权利要求11所述的视频数据的发射设备,其特征在于,还包括
第一控制模块,用于根据所述反馈控制包中的丢包率获得目标码率。
全文摘要
本发明提供一种视频编码的码率控制方法,发送方通过实时传输控制反馈链路定期发送控制包,当接收到反馈控制包时,根据所述反馈控制包中的丢包率获得输出码率,将视频数据按照所获得的码率通过实时传输链路进行发送。本发明提供的视频编码的码率控制方法及发射设备通过考虑丢包率的因素对输出码率进行控制,使编码出来的数据能更好地适应当前网络状况的传输,从而达到更好的视频显示效果。
文档编号H04N7/24GK101198042SQ20071003275
公开日2008年6月11日 申请日期2007年12月26日 优先权日2007年12月26日
发明者徐蜀中, 郑伟钿 申请人:广东威创视讯科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1