基于mpeg-4的流媒体服务器端配置缓冲区的方法及系统的制作方法

文档序号:7943343阅读:453来源:国知局
专利名称:基于mpeg-4的流媒体服务器端配置缓冲区的方法及系统的制作方法
技术领域
本发明涉及通信技术领域,尤其涉及一种基于MPEG-4的流媒体服务器端配置缓冲区的方法及系统。
背景技术
服务器端缓冲技术是一种应用级视频质量控制技术,其想是在服务器端划分一块内存作为缓冲区,通过缓冲一定数据量来平滑网络抖动。如图1所示,filling_rate(t)表示t刻已经编码的视频流填入缓冲区的速度,如果要求编码视流无损失地填入缓冲区,这时,filling_rate(t)实际上等于当视频编码码率。Outing_rate (t)表示t时刻视频流流出缓冲的速度,因为视频流流出后随即将通过网络发送出去,所以0uting_rate(t)实际上等于当前网络发送速率。BuffeHt)表示t时刻缓冲区已经缓存视频流的总大小。由于当前IP网络的尽最大能力的设计思想和底层硬件的局限性还不能够提供充分可靠的服务质量保证(QoQ,因此在C/S模式传输时要引入服务器端缓冲技术来弥补当前网络传输的缺陷。MPEG-4的视频编码流码率波动极大,它比一般的C/S模式传输更需要引入缓冲区来吸收这种码率波动。服务器端缓冲区对于基于MPEG-4的流媒体系统是非常重要的。近年来,人们对于流媒体服务器端缓冲区管理方法提出了一些方法和设想,它们采用了不同的思路和技术方案。归纳总结,图2所示是一种典型的MPEG-4视频流网络传输架构。在发送端,由自适应的MPEG-4编码器对原始视频流进行编码、打包后传递给RTP/ UDP/IP模块,通过网络传输到接收端。这些成功接收的包以发送端相反的顺序通过RTP/ UDP/IP模块,由MPEG-4解码器进行解码。同时接收端根据数据包到达的情况计算出网络传输状况。通过实时传输控制协议(RTCP)反馈给发送端。发送端根据这些反馈信息调整编码参数。在图2所示的典型的视频流传输框架中,现有的服务器缓冲算法主要有两种途径。1、编码前调整编码帧率。2、编码后丢帧控制。当缓冲区占有率超过50%时,就假定它已经开始出现溢出的苗头,从而开始隔帧编码。这种假定在带宽资源很窄的网络中或在无线视频传输中尤为合理的,在这些情形下, 缓冲区的数据还不一定马上就会被调度出去,而编码后的MPEG-4视频数据却要不断地进入缓冲区,如果此时不控制进入缓冲区的MPEG-4速率,缓冲区就会有溢出的危险。一旦缓冲区剩余容量达到一顶的警戒时,现有的算法都是采用抛弃一些非重要的桢来减缓缓冲区的压力。现有技术解决了缓冲区溢出的危险,但是却影响了流媒体的质量,使得解码出来的图像视频存在一定的失真。

发明内容
本文提出的服务器端缓冲区动态配置算法充分考虑了 MPEG-4视频编码流的特点,在尽量保证不丢帧的前提下,通过动态配置缓冲区的容量和调整帧的编码率来很好地预防缓冲区溢出和提高有效解码率,进一步提高了视频质量。本算法非常适合系统资源足够、带宽窄或强实时性的视频流式传输。为了解决上述问题,本发明提出了一种基于MPEG-4的流媒体服务器端配置缓冲区的方法,所述方法包括计算当前缓冲区中已经缓存视频流的缓存占有率;判断所述缓存占有率是大于预设的第一阈值占有率且小于第二阈值占有率,所述第二阈值占有率大于第一阈值占有率;如果所述缓存占有率小于第一阈值,则调整现有缓冲区的大小;如果所述缓存占有率超过第一阈值且小于第二阈值占有率,则通过控制帧率来调整MPEG-4视频编码码率;如果所述缓存占有率超过第二阈值占有率,则通过动态丢帧算法释放帧。所述调整现有缓冲区的大小计算式为缓冲区占有率*缓冲区大小*(1+(1_缓冲区占有率)*0. 1)。所述通过控制帧率来调整MPEG-4视频编码码率包括当缓存占有率大于第一阈值占有率且小于第三阈值占有率时,对MPEG-4视频编码进行隔帧编码;当缓存占有率大于第三阈值占有率且小于第二阈值占有率时,对MPEG-4视频编码进行隔三帧编码。所述通过动态丢帧算法释放帧包括判断缓冲区的空闲区是否大于帧长,如果缓冲区的空闲区小于帧长,则先将缓冲区重要性低的帧释放。所述通过动态丢帧算法释放帧还包括如果缓冲区中释放帧后满足不了缓冲区的空闲区大于帧长,则将即将要进入的帧丢弃。所述第一阈值占有率在百分之五十以上。相应的,本发明实施例还公开了一种基于MPEG-4的流媒体服务器端配置缓冲区的系统,包括计算模块,用于计算当前缓冲区已经缓存视频流的缓存占有率;判断模块,用于判断缓存占有率与预设的第一阈值占有率和第二阈值占有率间的关系,并将判断结果返回到处理模块中处理;处理模块,用于根据判断模块反馈的判断结果进行处理,所述处理模块包括第一处理单元,用于在所述缓存占有率小于第一阈值占有率时,调整现有缓冲区的大小;第二处理单元,用于在所述缓存占有率超过第一阈值占有率且小于第二阈值占有率时,通过控制帧率来调整MPEG-4视频编码码率;第三处理单元,用于在所述缓存占有率超过第二阈值占有率时,通过动态丢帧算法释放帧。在本发明实施例中,算法的前一部分能够有效地防止缓冲区的溢出,这是因为在网络带宽一定的情况下传输占有带宽巨大的视频数据,动态配置缓冲区充分利用了资源且保证了质量。算法的后两部分在充分考虑到系统资源紧缺的前提下,考虑到了考虑了 MPEG-4的编解码原理,能够有效地提高视频质量。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。图1是现有技术中服务器端缓冲区描述结构示例图;图2是现有技术中视频流传输架构图;图3是本发明实施例中的基于MPEG-4的流媒体服务器端配置缓冲区的方法流程图;图4是本发明实施例中的基于MPEG-4的流媒体服务器端配置缓冲区的系统示意图。
具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。本发明实施中的基于MPEG-4的流媒体服务器端配置缓冲区的方法,主要包括计算当前缓冲区中已经缓存视频流的缓存占有率;判断所述缓存占有率是大于预设的第一阈值占有率且小于第二阈值占有率,所述第二阈值占有率大于第一阈值占有率;如果所述缓存占有率小于第一阈值,则调整现有缓冲区的大小;如果所述缓存占有率超过第一阈值且小于第二阈值占有率,则通过控制帧率来调整MPEG-4视频编码码率;如果所述缓存占有率超过第二阈值占有率,则通过动态丢帧算法释放帧。根据图2所示是一种典型的MPEG-4视频流网络传输架构,实质上是依据接收端计算出来的Outing_rate(t)来调节filling_rate (t)。然而这种调节方式需要反馈控制协议的参与而且编码参数调整复杂,会增加系统资源开销和网络带宽的浪费。如果改成根据 Buffer (t)来调节filling_rate (t),就无须反馈控制协议的参与,直接就用UDP协议传输也可达到服务器缓冲区动态调整的目的。由前面描述可以知道,理想情况下,t时刻缓冲区已经缓存视频流的总大小BuffeHt)等于0 t时间段内缓冲区填入的数据总和减去0 t时间段内缓冲区流出的数据总和,可用式(2)表示。Buffer{t) = ( Filling _ rate{t) - ( Outing _ rate{t)(2)
Jo—Jo—由式⑵变形成式(3)
t fitFilling _ rate =Buffer(t) + Outing _ rate(t)(3) Jo — Jo —由式(3)可以清楚地看出,filling_rate(t)调节的依据有两种(1)根据Outing_rate(t)的变化来调节;
(2)是根据Buffer_filied⑴的值来调节。缓冲区管理控制算法分前后三部分前一部分调整buffer的大小来调节buffer, 当达到系统资源上限的时候就采用最后一部门代码;第二部分调整MPEG-4视频编码器编码参数来实现对filling_rate(t)的调节;后一部分根据各类帧重要性来淘汰重要性低的视频帧占据缓冲区,保证当前缓存的视频帧都是最重要的。图3示出了本发明实施例中的基于MPEG-4的流媒体服务器端配置缓冲区的方法流程图,其主要包括如下步骤S301 计算当前缓冲区已经缓存视频流的缓存占有率;S302:判断缓存占有率是否大于第一预先设置的第一阈值占有率,如果该缓存占有率小于预先设置的第一阈值占有率,则进行S303,如果该缓存占有率大于预先设置的第一阈值占有率,则进行S304 ;S303 调整现有的缓冲区的大小;服务器端缓冲区的起始大小是一个固定的值,比如说这里当BuffeHt)达到50% 或者60%时的缓冲区的大小的时候,缓冲区采用一定的算法随之增加。当缓冲区达到资源上限时,缓冲区不变而采用第二部分调整MPEG-4视频编码器编码参数算法。比如系统循环读取MPEG-4视频流,在计算缓冲区占有率后,如果占有率未达到第一阈值70%情况下,调整现有缓冲区的大小为缓冲区占有率*缓冲区大小(1+(1-缓冲区占有率)*1/10)。S304:判断缓存占有率是否大于预先设置的第二阈值占有率,如果缓存占有率大于预先设置的第二阈值占有率,则进入S305,如果缓存占有率小于预先设置的第二阈值占有率,则进入S306 ;S305 则通过帧控制来调整MPEG-4视频编码码率;MPEG-4视频编码器的码率之所以能够调节主要有赖于它编码的可伸缩性。视频的伸缩性包括空间可伸缩性、时间可伸缩性、信噪比可伸缩性3种。空间可伸缩性和信噪比可伸缩性影响视频流的画面质量,时间可伸缩性影响视频流的连续性,选择何种伸缩性实际上取决于画面质量和连续性之间的取舍。本文选取时间可伸缩性(即控制帧率)来调整 MPEG-4视频编码码率。衡量视频传输技术的好坏,不能单纯以如何提高网络利用率为标准。一方面,网络传输的视频流越多并不代表在解码时解出的有效视频帧越多。因为MPEG-4视频编码采用了帧间预测机制,如果参考帧丢了,在接收端由于错误传播将造成相当一段视频无法使用, 所以在回放时会出现停顿现象。另一方面,网络传输的视频流越多并不代表它不连续性丢帧,有时情愿接收的帧数少一些,只要视频帧丢失得较为均勻就行。算法前一部分选取时间可伸缩性(即控制帧率)来调整MPEG-4视频编码码率除了起预防缓冲区溢出的作用外,实际上还起到了预防连续性丢帧的作用。具体通过帧控制来调整MPEG-4视频编码码率还可以实现细化过程,比如当缓存占有率大于第一阈值占有率且小于第三阈值占有率时,对MPEG-4视频编码进行隔帧编码;当缓存占有率大于第三阈值占有率且小于第二阈值占有率时,对MPEG-4视频编码进行隔三帧编码。这里的第一阈值占有率小于第三阈值占有率,第三阈值占有率小于第二阈值占有率。S306 则通过动态丢帧算法释放帧。至于如何提高传输视频帧的有效解码,可先从考察MPEG-4的3类帧入手。MPEG-4 视频帧分为3类I-V0P,P-V0P和B-V0P。为了方便表述不妨简称为I帧、P帧和B帧。3类编码帧的重要性依次为I帧、P帧和B帧。同样是P帧,前面的比后面的更重要(因为后面的P帧要参考前面的P帧才能解码)。在缓冲区不得不丢帧的情况下,先将缓冲区中重要性低的帧释放,直至有足够空间为止,如果缓冲区中该释放的帧都释放了还是没有足够空间, 这时才把即将要进入的帧丢弃。具体流程如下首先需要判断缓冲区的空闲区是否大于帧长,大于则编码后直接进入缓冲区,如果不是的话,需要从后往前找到一帧重要性低的VOP释放。需要说明的是,本实施例中的第一阈值占有率一般设置在50%以上,比如为 50%,或者60%,或者100%,这里的第一阈值占有率、第二阈值占有率、第三阈值占有率都小于100%,基于上述实现过程中,这里的第一阈值占有率可以取值为70%、第二阈值占有率可以取值为90 %、第三阈值占有率可以取值为80%,当然这里的取值可以针对具体应用和实施情况来取值。相应的,本发明实施例还提供了一种基于MPEG-4的流媒体服务器端配置缓冲区的系统,包括计算模块41,用于计算当前缓冲区已经缓存视频流的缓存占有率;判断模块42,用于判断缓存占有率与预设的第一阈值占有率和第二阈值占有率间的关系,并将判断结果返回到处理模块中处理;这里的判断模块可以直接判断缓存占有率与第一阈值占有率、第二阈值占有率甚至是第三阈值占有率之间的关系,并可以根据判断关系将结果返回到处理单元中的各个处理单元中执行相应的任务。处理模块43,用于根据判断模块反馈的判断结果进行处理,所述处理模块包括第一处理单元431,用于在所述缓存占有率小于第一阈值时,调整现有缓冲区的大小;这里的调整现有缓冲区的大小计算式可以是缓冲区占有率*缓冲区大小*(1+(1-缓冲区占有率)*0. 1)。第二处理单元432,用于在所述缓存占有率超过第一阈值且小于第二阈值占有率时,通过控制帧率来调整MPEG-4视频编码码率;具体的情况可以是,当缓存占有率大于第一阈值占有率且小于第三阈值占有率时,对MPEG-4视频编码进行隔帧编码;当缓存占有率大于第三阈值占有率且小于第二阈值占有率时,对MPEG-4视频编码进行隔三帧编码。第三处理单元433,用于在所述缓存占有率超过第二阈值占有率时,通过动态丢帧算法释放帧。具体的,当判断缓冲区的空闲区是否大于帧长,如果缓冲区的空闲区小于帧长,则先将缓冲区重要性低的帧释放。如果缓冲区中释放帧后满足不了缓冲区的空闲区大于帧长,则将即将要进入的帧丢弃。需要说明的是,本实施例中的第一阈值占有率一般设置在50%以上,比如为 50%,或者60%,或者100%,这里的第一阈值占有率、第二阈值占有率、第三阈值占有率都小于100%,基于上述实现过程中,这里的第一阈值占有率可以取值为70%、第二阈值占有率可以取值为90%、第三阈值占有率可以取值为80%,当然这里的取值可以针对具体应用和实施情况来取值。本文提出的服务器端缓冲区动态配置算法充分考虑了 MPEG-4视频编码流的特点,在尽量保证不丢帧的前提下,通过动态配置缓冲区的容量和调整帧的编码率来很好地预防缓冲区溢出和提高有效解码率,进一步提高了视频质量。本算法非常适合系统资源足够、带宽窄或强实时性的视频流式传输。本发明实施例中的算法的前一部分能够有效地防止缓冲区的溢出,这是因为在网络带宽一定的情况下传输占有带宽巨大的视频数据,动态配置缓冲区充分利用了资源且保证了质量。算法的后两部分在充分考虑到系统资源紧缺的前提下,考虑到了考虑了 MPEG-4的编解码原理,能够有效地提高视频质量。
以上对本发明实施例所提供的,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式
及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
权利要求
1.一种基于MPEG-4的流媒体服务器端配置缓冲区的方法,其特征在于,包括 计算当前缓冲区中已经缓存视频流的缓存占有率;判断所述缓存占有率是大于预设的第一阈值占有率且小于第二阈值占有率,所述第二阈值占有率大于第一阈值占有率;如果所述缓存占有率小于第一阈值,则调整现有缓冲区的大小; 如果所述缓存占有率超过第一阈值且小于第二阈值占有率,则通过控制帧率来调整 MPEG-4视频编码码率;如果所述缓存占有率超过第二阈值占有率,则通过动态丢帧算法释放帧。
2.如权利要求1所述的方法,其特征在于,所述调整现有缓冲区的大小计算式为缓冲区占有率*缓冲区大小* (1+(1"缓冲区占有率)*0. 1)。
3.如权利要求1所述的方法,其特征在于,所述通过控制帧率来调整MPEG-4视频编码码率包括当缓存占有率大于第一阈值占有率且小于第三阈值占有率时,对MPEG-4视频编码进行隔帧编码;当缓存占有率大于第三阈值占有率且小于第二阈值占有率时,对MPEG-4视频编码进行隔三帧编码。
4.如权利要求1所述的方法,其特征在于,所述通过动态丢帧算法释放帧包括判断缓冲区的空闲区是否大于帧长,如果缓冲区的空闲区小于帧长,则先将缓冲区重要性低的帧释放。
5.如权利要求4所述的方法,其特征在于,所述通过动态丢帧算法释放帧还包括 如果缓冲区中释放帧后满足不了缓冲区的空闲区大于帧长,则将即将要进入的帧丢弃。
6.如权利要求1至5任一项所述的方法,其特征在于,所述第一阈值占有率在百分之五十以上。
7.一种基于MPEG-4的流媒体服务器端配置缓冲区的系统,其特征在于,包括 计算模块,用于计算当前缓冲区已经缓存视频流的缓存占有率;判断模块,用于判断缓存占有率与预设的第一阈值占有率和第二阈值占有率间的关系,并将判断结果返回到处理模块中处理;处理模块,用于根据判断模块反馈的判断结果进行处理,所述处理模块包括 第一处理单元,用于在所述缓存占有率小于第一阈值占有率时,调整现有缓冲区的大第二处理单元,用于在所述缓存占有率超过第一阈值占有率且小于第二阈值占有率时,通过控制帧率来调整MPEG-4视频编码码率;第三处理单元,用于在所述缓存占有率超过第二阈值占有率时,通过动态丢帧算法释放帧。
全文摘要
本发明实施例公开了基于MPEG-4的流媒体服务器端配置缓冲区的方法及系统,其中该方法包括计算当前缓冲区中已经缓存视频流的缓存占有率;判断所述缓存占有率是大于预设的第一阈值占有率且小于第二阈值占有率,所述第二阈值占有率大于第一阈值占有率;如果所述缓存占有率小于第一阈值,则调整现有缓冲区的大小;如果所述缓存占有率超过第一阈值且小于第二阈值占有率,则通过控制帧率来调整MPEG-4视频编码码率;如果所述缓存占有率超过第二阈值占有率,则通过动态丢帧算法释放帧。本发明实施例在尽量保证不丢帧的前提下,通过动态配置缓冲区的容量和调整帧的编码率来很好地预防缓冲区溢出和提高有效解码率,进一步提高了视频质量。
文档编号H04N21/6437GK102378065SQ20111031837
公开日2012年3月14日 申请日期2011年10月19日 优先权日2011年10月19日
发明者罗春耕, 罗晴明 申请人:江西省南城县网信电子有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1