什么是码率控制? 在视频编码中码率控制的概念

 bbin     |      2019-07-07 05:05

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  展开全部码率控制实际上是一种编码的优化算法,它用于实现对视频流码流大小的控制。那么它控制的目的是什么呢?

  我们可以试想一下,同样的视频编码格式,码流大,它包含的信息也就越多,那么对应的图像也就越清晰,反之亦然。目前常用的两种码流控制方式是VBR和CBR,VBR是动态比特率,CBR是固定比特率。那么他们是怎么来实现的呢?

  我们首先看视频编码的目的,它是为了在有限的带宽中传输尽可能清晰的视频,我们以每秒25/帧的图像举例,25帧图像中定义了GOP组,目前主要是有I,B,P帧三种帧格式,I帧是关键帧,你可以想象它就是一幅JPEG压缩图像,而B,P帧是依靠I帧存在的,如果丢失了I帧,B,P帧是看不到图像的,B,P帧描述的不是实际的图像像素内容,而是每个相关像素的变化量,他们相对于I帧信息量会很小。GOP组是指一个关键帧I帧所在的组的长度,每个GOP组只有1个I帧。

  我们再来看,一组画面的码流大小跟什么有关?当视频编码的压缩方式都一样,清晰度要求都一样的时候,GOP组的长度格式决定了码流的大小,bbin例如:每秒25帧画面,GOP组长度为5,那么帧格式为IBPBP,那么1秒钟有5个I帧,10个B帧,10个P帧,如果GOP组长度为15,帧格式就是IBBPBBPBBPBBPBB,那么1秒钟内会有2个I帧和16个B帧和7个P帧,那么5个I帧比2个I帧占用的数据信息量大,所以GOP组的长度格式也决定了码流的大小。

  最后,我们再来看VBR和CBR,对于VBR来说,它可以通过特殊的算法来控制一个GOP组的长度,也就是I帧的数量,当图像中运动图像多时,我可以把I帧数量加大,那么图像会很清晰,如果图像内元素基本静止时,它甚至可以把GOP组调到25的长度。那么根据前面的描述,可以想象这是一种为了确保图像质量的控制手段,它非常灵活,不死板,但是要求控制算法非常的精确,不精确会导致很多问题,例如码流突增后不降低,即使带宽足够,会导致图像出现问题。

  CBR相反,它的带宽不变,码流不改变,一直都是一样的大小(会有少许的变化),图像运动量超过码流承受能力时,图像会出现边缘模糊的现象,它的目的是为了稳定带宽,它的实现方式就相对简单,码流不变就需要均衡IBP之间的关系,动态视频大时I帧小,BP大,运动视频小时I帧大,BP小。总之都是通过编解格式的算法来实现的。

  总结一下,VBR码流控制方式可以降低图像动态画面少时候的带宽占用,CBR控制方式码流稳定,图像状态较稳定。他们为了解决的是不同需求下的不同应用。

  还想问一下,码率控制,应该是你说的VBR,有没有一个通用的框架或流程,是怎么调节参数来实现的?

  视频编码标准只规定解码码流需符合什么标准,至于如何编码如何实现,标准是不规定的,例如码率控制方法标准中就不做规定。码率控制的目的是给编码器动态地选择一套最佳的编码参数,使编码器在一个目标比特率下编码出符合一定带宽要求的码流。

  码率控制好比在一个画面的像素点多与少.不过分辨率高了.但是码率没有跟上去.看起来就想一个小图片放得很大的效果.都是方块块(像素点),另外动态画面的像素点更新特别快,需要更多的像素点.所以码率要高,看起来才清晰.不然看起来不是卡就拖影,看不清.最明显的例子就是电视剧了.特别是以前看的李亚鹏演的那个笑傲江湖里面一到武打场面,整个画面就晃得得跟什么似的.一般如果要清晰些.就要1M以上的码率.而且视频的码率有很多的格式.xivd divx h264 微软的mpeg rmvb 等等.现在通过什么实现的,当然是软件啦.推荐暴风转码(我在用,参数设置不太复杂,适合新手).和格式工厂 ,好有个开源的免费软件.名字忘了.