MPEG视频编码器速率控制研究.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
MPEG视频编码器速率控制研究

MPEG视频编码器速率控制研究   速率控制的由编码器实现,其任务是在保证解码器缓冲区不发生溢出(上溢和下溢)的前提下,尽可能地提高码流的画质。速率控制根据设定的缓冲区大小和码速率来监测解码器的缓冲区占用情况。   速率控制可以分为定速率和变速率控制,还可以分为one-pass和multi-pass。   定速率和变速率控制适合不同的传输信道。   定速率:适合有速率恒定要求的传输,但画质通常差于变速率控制。   变速率:适合变速率传输和带宽较高的传输,画质通常优于定速率控制(在平均速率相等的基础上进行对比)。   速率控制中速率的波动与画质的波动是一对矛盾,定速率意味着画质的波动,定画质则意味着速率波动。同时,绝对的定速率与绝对的画质恒定都是难以达到的,好的速率控制算法应当在二者之间取得平衡。   One-pass算法结构简单,易于实现,无延时或延时很小,适合实时编码器,但是一般画质不及multl-pass。   Multi-pass算法复杂,延时大,画质高,适合不要求实时但要求较高画质的应用场合。 选择合适的速率控制算法需要仔细考察所需要达到的性能要求和应用场合。就使用比例来说,one-pass的定速率控制应该是最重要的,但是同时也是最难获得高画质的。本文重点讨论one-pass的定速率控制。      One-pass定速率控制面对的主要问题及其解决方法      相对于其他速率控制方法,one―pass的定速率控制更易于出现解码器缓冲溢出和更难于提高画质。因为one-pass的实时性提高了溢出风险,而定速率则加大了提高画质的难度。避免溢出是速率控制的主要任务,而提高画质也非一个孤立的工作,应当与避免溢出放在一起考虑。      溢出的形成原因      速率控制处于编码器内,但是溢出问题出现在解码器的缓冲区。首先,编码器将确定解码器缓冲区大小。然后,当编码工作正式开始后,码流以编码器编码的速度流入解码器缓冲区,又以解码器解码速度流出缓冲区。码流按照编码速率通过解码器缓冲区的时间是其在解码器的生存时间。其中编码速度可以认为是由速率控制来确定的,而编码器的解码速率则可以认为由回放速度决定。编码器通过比较码流的生存时间和回放时间来判断是否发生了溢出。当这两者的速率没有很好的匹配起来时,就可能会发生解码器缓冲区溢出。定性地来看,解码器的缓冲区大小必须与注入码流的速率相适应。如果码率过高或者缓冲区过小,就会发生上溢;如果码率过低无法满足解码器的吞吐要求,或者当设定的解码器缓冲过大时,都会使码流的生存时间过长(超过回放帧速率所允许的时间),就会导致解码缓冲区下溢。      解决解码器的缓冲区溢出的方法      要解决缓冲区的溢出问题,需要根据其成因找出有针对性的方法。具体来说,首先是要根据画幅,帧速率以及画质方面的要求来设定的合适的码速率和缓冲区大小。其次,要及时的检测编码产生的码流速率,并根据缓冲区占用情况作调整。对于上溢,要设定一个缓冲区溢出预警区域,当码速率进入预警区域就要为防止溢出进行调整。由于调整码速率主要依靠调整编码器的量化系数,调整的效果具有滞后性;同时,量化系数的调整对于最终码速率也难以精确预测,所以设立预警区域和提前调整是必要的。另一方面,对于下溢则需要进行填充。填充的数量以将码速率恢复到正常码速率为限。由缓冲区设定过大而导致的下溢还是以???设定缓冲区时设置合理值效果最好,否则只能经常性地进行填充。   当然,对于下溢也可以设定预警区域以便提前调整。但是一来设置预警未必能完全避免下溢,二来它也不如填充那样能及时生效,因而没有必要为下溢设置预警区。   图1是一个假设的解码器缓冲区随时间推移的占用情况。该图显示:      在t1时刻,解码器缓冲区占用率达到约70%时,解码器才开始解码的;在t2时刻,当缓冲区占用率超过80%后,被认为进入上溢风险预警区,量化系数开始加大,从而使得码速率逐渐下降,避免发生上溢。   在t3时刻,当缓冲区占用一路下降,最后发生了下溢,此时编码器通过填入填充来避免解码器的缓冲区下溢   需要指出的是,不管是设立码速率溢出预警区还是进行填充,其实都是为码速率控制保留了一定带宽进行缓冲,是用带宽来换取缓冲区的安全。然而带宽的利用率是影响画质的重要原因。直观来看,不管哪种速率控制方式,带宽利用率越高就意味着有越多的比特可以用于码流的编码,从而提升画质。但是在实际应用中,由于真实码率除了受速率控制影响以外,还受画面内容影响,同时由于速率控制主要靠调整量化系数来调整码率,而量化系数的调整与最终码流的产生之间缺乏可精确预测的确定关系,从而导致了某些码率上的波动。这些码率的波动又会通过速率控制的反馈引起画质的波动。为了尽量保持画质的稳定,减少

文档评论(0)

fangsheke66 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档