zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    进程和线程的简单实例
    OpenGL3D演示程序
    c++中dll和lib
    OS锁机制,各种critical section、mutex、实现基础
    dll导出def出错
    负载均衡策略:
    lua读写文件
    C++ Singleton
    Lua模式匹配
    linux 下查找不符合条件的文件并cp
  • 原文地址:https://www.cnblogs.com/liujx2019/p/13162878.html
Copyright © 2011-2022 走看看