【转】H264 视频码率
为什么同样的分辨率帧率视频 ,码率还不一样?
编码器压缩的度不一样,所以影响存储空间和网络上传输带宽占用。
码率,也叫做比特率:视频比特率是指要播放该视频,所需要每秒读取的该视频文件的比特(bit)数。单位为bps(Bit Per Second),比特率越高,每秒读取数据就越多,同等条件下画质就越好。
一个原生的视频,不进行编码压缩,要显示播放,每秒需要的bit数:
一个 这样的 视频:
1280 width
720 high
使用色彩空间 YUV 420 ,这个格式每个像素平均占用空间 12bit
帧率 25fps
如果不压缩,每秒原始的数据量 大小为:
1280 x 720 (总像素) x 12bit(每个像素占用12bit) x 25(一秒25帧) = 276480000 bits = 32.96 x 1024 x 1024 x8
即每秒要用到的数据是 32.96MB.
但是有编码器的存在,就是为了减少这些存储传输的数据量,比如h264,进行编码后对应的总的输出数据(这是数据是压缩后数据)每秒占用的 空间,称为码率(也可以说比特率),一般来说,压缩率越高,每一帧数据越小,所以码率越小,压缩后的视频质量就会越低,这些取决于内部的压缩编码方法。 所以,h264的编码,是支持 静态码率,动态码率等几种方式的。即 CBR(Constant Bit Rate)是以恒定比特率方式进行编码》VBR(Variable Bit Rate)动态比特率,其码率可以随着图像的复杂程度的不同而变化,因此其编码效率比较高。 一般来说,码率越低,压缩率越高,每一帧h264越小。图像效果越差。码率越高,不会高过原始码率(上面分析的不压缩时候的视频码率,高出这个,这个编码就毫无意义了) 。 刚才所说,编码器可以支持动态码率编码和静态码率编码。如果采用动态码率编码,那么这个视频文件的码率就是根据实际内容动态变化的,比如某一个画面场景比较复杂,为了保留更多的图像细节,编码器对这些复杂画面帧的编码压缩率相对较小,输出的h264帧数据比较大,码率就大,如果只是几张空白的背景,编码出来的帧就小得多。
有个疑问,码率越低,压缩率越高,是不是意味着编解码器和解码要做的工作越多?编码和解码耗时也就越长,毕竟要复原图像,还是需要原图像的相当的数据量。这么说来,都是牺牲时间来减少空间,所以随着硬件性能的提升,原本耗时更多的 编解码方案得以实际可用,就会催生出新的计算更复杂但是压缩率更大的编解码方案。
————————————————
版权声明:本文为CSDN博主「白皮书CAN」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u012459903/java/article/details/88791897