织梦CMS - 轻松建站从此开始!

罗索

CBR讨论

jackyhwei 发布于 2011-08-24 10:45 点击:次 
一直很困惑,CBR这种在boradcasting 和 streaming的大型工业级的应用上非常重要的东西,h.264是怎么考虑的
TAG:

boradcasting 或者 streaming 的应用,CBR都首要优先满足的条件
现在那些高清电视台为什么要使用占用几十兆的资源的mpeg2 ts流来播放,一个主要原因就是因为h.264没有真正cbr,而mpeg2就有
streaming 应用其实也能处理一定程度的VBR,但是在某些时候,为了处理VBR码流的不稳定带来的开销远远超过它带来的好处,不如用CBR,甚至多花几倍的存储和带宽都无所谓
一直很困惑,CBR这种在boradcasting 和 streaming的大型工业级的应用上非常重要的东西,h.264是怎么考虑的

1、VBR 适合的应用场景是媒体存储,而不是网络传输,因此不要让武状元去当文官;
2、其实实际网络传输中所谓的 CBR 一般都是 ABR(平均比特率),即只要是单位时间内把码率控制在额定码率就可以了,因为编码输出本来就有缓冲可以起到平滑波动的作用;
3、你所谓的严格意义上的 CBR 是每一帧都分配同样的码字,试想一下,如果某一帧所需要的码字本来就很少,而你却一定要给它分配很多码字,那不是浪费么?另一方面,如果某一帧所需要的码字本来就多,而你却给得很少,那这帧的效果会很差。这样编下来,整体序列质量会忽好忽坏地不停发生跳变,反而对视觉冲击很大;因此 ABR 才是最适合网络传输的方案;
4、无论是 CBR、ABR 还是 VBR 都是属于码率控制,而码率控制是视频编码的开放部分,它不会改变码流结构的合法性,因此无论在 MPEG2、MPEG4 还是 H.263、H.264 当中都没有做规定;
5、由于目前的视频编码标准都是基于块编码的混合编码框架,因此一个码率控制算法可以用到任何协议上(当然有时候需要做点小的改动),只不过是控制效果好不好的问题,没有哪个 RC 是专属哪个协议的。

楼主的需求就是一种非常硬性的CBR码率控制解决方案,这种解决方案要做到每一个帧的输出比特几乎相同(或误差相当小,甚至小到可以忽略不计)。上面诸多同仁的讨论中已经指出,通过插入(无效的)比特来填充帧编码的比特是一种合理的解决方案,我也认为这可能是必要的一种解决方法了。

我是这样考虑这个问题的:

其一:如果不计编码次数,我们可以对确定的一帧枚举若干给定QP值的编码结果,然后选取不超过但最接近目标比特率的帧编码QP,再填充无效比特;也可以在选择出QP值的基础上,做宏块级枚举QP,微调QP值,以达到更接近目标比特率。这样的一种解决方案想来没有人会喜欢,因为反复编码次数太多,效率太低。但是这种方法可以近最大可能地保留有效比特。

其二:按照楼主的这个需求和您给出的图示,我发现您的应用在1280X534,甚至是1080p。目标比特率以Mkbps为单位,在24Hz和30Hz,在高清画质上做编码。我的经验是,如果给定的比特率足够高,即将此问题放在中高带宽下的码率控制的讨论中,则楼主的问题才具有现实的意义。因为中高比特率下的码率控制要比中低比特率下的好控制的多。

我对这个问题非常感兴趣,若有空闲希望做进一步的深入。稍早些时候我也考虑过这个问题,但是限于知识面太窄,不清楚具体是否有价值作这个问题。楼主在讨论中给出的应用需求和相关背景非常具有参考意义。

我希望给楼主请教一个问题:我看到你给出的图是用bitrate viewer 这个应用程序作图。以前我没有见过,效果还挺好。我想问,这个应用程序是您自己写的还是哪里可以提供的呢?

今晚太困,话不成句,若有闲暇,后作修订。

(ilovejoy)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/201108/14891.html]
本文出处:hi.baidu.com/ilovejoy 作者:ilovejoy
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容