码率,帧率,分辨率和清晰度的关系

参考:

http://wittywwp.blog.163.com/blog/static/1000710820081202058578/

http://bbs.dianbo.org/viewthread.php?tid=7206&page=1

 

 

晓 2010-01-09 整理总结

 

 

  为了了解视频的码率、帧率、分辨率。我们先来看看视频编码的基本原理:视频图像数据有极强的相关性,也就是说有大量的冗余信息。其中冗余信息可分为空域冗余信息和时域冗余信息。压缩技术就是将数据中的冗余信息去掉(去除数据之间的相关性),压缩技术包含帧内图像数据压缩技术、帧间图像数据压缩技术和熵编码压缩技术。视频文件一般涉及到三个参数:帧率、分辨率和码率。

  帧率:每秒显示的图片数。影响画面流畅度,与画面流畅度成正比:帧率越大,画面越流畅;帧率越小,画面越有跳动感。由于人类眼睛的特殊生理结构,如果所看画面之帧率高于16的时候,就会认为是连贯的,此现象称之为视觉暂留。并且当帧速达到一定数值后,再增长的话,人眼也不容易察觉到有明显的流畅度提升了。

  分辨率:(矩形)图片的长度和宽度,即图片的尺寸
  码率:把每秒显示的图片进行压缩后的数据量。影响体积,与体积成正比:码率越大,体积越大;码率越小,体积越小。 (体积=码率×时间)

  帧率X分辨率=压缩前的每秒数据量(单位应该是若干个字节)
  压缩比=压缩前的每秒数据量/码率  (对于同一个视频源并采用同一种视频编码算法,则:压缩比越高,画面质量越差。)

 

  所谓“清晰”,是指画面十分细腻,没有马赛克。并不是分辨率越高图像就越清晰。
  简单说:
在码率一定的情况下,分辨率与清晰度成反比关系:分辨率越高,图像越不清晰,分辨率越低,图像越清晰。
在分辨率一定的情况下,码率与清晰度成正比关系,码率越高,图像越清晰;码率越低,图像越不清晰。
  但是,事实情况却不是这么简单。可以这么说:

在码率一定的情况下,分辨率在一定范围内取值都将是清晰的;同样地,在分辨率一定的情况下,码率在一定范围内取值都将是清晰的。

 

  在视频压缩的过程中, I帧是帧内图像数据压缩,是独立帧。而P帧则是参考I帧进行帧间图像数据压缩,不是独立帧。在压缩后的视频中绝大多数都是P帧,故视频质量主要由P帧表现出来。由于P帧不是独立帧,而只是保存了与邻近的I帧的差值,故实际上并不存在分辨率的概念,应该看成一个二进制差值序列。而该二进制序列在使用熵编码压缩技术时会使用量化参数进行有损压缩,视频的质量直接由量化参数决定,而量化参数会直接影响到压缩比和码率。

  视频质量可以通过主观和客观方式来表现,主观方式就是通常人们提到的视频清晰度,而客观参数则是量化参数或者压缩比或者码率。在视频源一样,压缩算法也一样的前提下比较,量化参数,压缩比和码率之间是有直接的比例关系的。

  分辨率的变化又称为重新采样。由高分辨率变成低分辨率称为下采样,由于采样前数据充足,只需要尽量保留更多的信息量,一般可以获得相对较好的结果。而由低分辨率变成高分辨率称为上采样,由于需要插值等方法来补充(猜测)缺少的像素点,故必然会带有失真,这就是一种视频质量(清晰度)的损失。

  

### 视频编码参数间的关系 #### 码率帧率分辨率关系 视频的清晰度不仅取决于分辨率,还受到码率帧率的影响。高分辨率意味着更多的细节能够被捕捉到每一帧中,但这同时也增加了数据量的需求。为了维持高质量的画面,在提高分辨率的同时也需要相应增加码率来保证足够的信息密度[^1]。 帧率决定了单位时间内展示给观众的静态图片数量,较高的帧率可以使运动场景看起来更加平滑自然。然而,随着帧率上升,每秒钟产生的图像增多,这同样会促使所需传输的数据总量增大,因此需要更高的码率支持[^2]。 #### 位深的作用 除了上述三个因素外,位深也是决定视频质量的关键要素之一。它表示每个颜色通道所能表达的颜色范围宽度,通常以比特为单位计算。更大的位深度允许更细腻的颜色过渡平滑渐变效果呈现出来,从而提升整体视觉体验的质量。不过值得注意的是,增加位深也会显著加大文件大小以及所需的带宽资源消耗[^3]。 ```python def calculate_bitrate(resolution, frame_rate, bit_depth): """ 计算理论上的最小码率需求 参数: resolution (tuple): 分辨率,形如(宽度, 高度) frame_rate (int): 帧速率(FPS) bit_depth (int): 色彩精度(Bits Per Channel) 返回: float: 所需最低平均码率(kbps) """ width, height = resolution pixel_count_per_frame = width * height bits_per_pixel = bit_depth * 3 # RGB模式下共有红绿蓝三种原色 total_bits_per_second = pixel_count_per_frame * bits_per_pixel * frame_rate / 8000 return round(total_bits_per_second, 2) print(f"Theoretical minimum bitrate required is {calculate_bitrate((1920, 1080), 30, 8)} kbps.") ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李小白杂货铺

打赏是一种友谊,让我们更亲密。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值