原文地址:https://blog.csdn.net/qq_28258885/article/details/118891810


什么是码率?

码率就是数据传输时单位时间传送的数据位数。 一般我们用的单位是kbps即千位每秒。

通俗一点理解就是取样率,单位时间内取样率越大,精度就越高,处理出来的文件就越接近原始文件。
但是文件体积与取样率是成正比的,所以几乎所有的编码格式重视的都是如何用最低的码率达到最少的失真。
就是占用空间小,图像质量也高

码率控制器实现对编码码率进行控制。

为什么要控制码率?

从信息学的角度分析,图像的压缩比越低,压缩图像的质量越高;图像压缩比例越高,压缩图像的质量越低。对于场景变化的真实场景,图像质量稳定,编码码率会波动;编码码率稳定,图像质量会波动。

通俗点就是,每个图像的质量,压缩程度不一样。如果使用固定的码率进行传输,那么图像的质量就会出现波动(有的图像占用带宽大有的图像占用小)。为了保证图像质量稳定,就需要进行码率控制。

以 H.264 编码为例,通常图像 Qp(量化参数,反应压缩效果) 越低,图像的质量越好,码率越高;图像 Qp 越高,图像质量越差,码率越低。码率控制是针对连续的编码码流而言,所以, JPEG 协议编码通道不包括码率控制功能。

码率控制器分别提供了对 H.264\H.265\MJPEG 协议编码通道 CBR、 VBR、 FIXQP 等三种码率控制模式,对图像质量和码率进行调节。

码率控制模式

CBR

CBR( Constant Bit Rate)固定比特率。
即在码率统计时间内保证编码码率平稳。

有Motion发生时,由于码率恒定,只能通过增大QP来减少码字大小,图像质量变差,当场景静止时,图像质量又变好,因此图像质量不稳定
优点是压缩速度快,缺点是每秒流量都相同容易导致空间浪费。
多用于网络流媒体视频编码,持续的码率可以保证视频在播放时,不会有卡顿缓冲等现象

码率稳定主要由两个量来评估(码率统计时间,Qp),这两个量都可以由用户在创建编码通道时指定。

  • 码率统计时间 u32StatTime
    单位为秒(s),码率统计时间越长,每帧图像的码率波动对于码率调节的影响越弱,码率的调节会更缓慢,图像质量的波动会更轻微;码率统计时间越短,每帧图像的码率波动对于码率调节的影响越强,图像码率的调节会更灵敏,图像质量的波动会更剧烈。
  • 行级码率控制调节幅度 u32RowQpDelta
    行级码率控制调节幅度是一帧内行级调节的最大范围,其中行级以宏块行为单位。调节幅度越大,允许行级调整的 QP范围越大,码率越平稳。对于图像复杂度分布不均匀的场景,行级码率控制调节幅度设置过大会带来图像质量不均匀。

VBR

VBR( Variable Bit Rate)动态比特率
即允许在码率统计时间内编码码率波动,从而保证编码图像质量平稳。

码率可以随着图像的复杂程度的不同而变化,因此其编码效率比较高,Motion发生时,马赛克很少。
码率控制算法根据图像内容确定使用的比特率,图像内容比较简单则分配较少的码率(似乎码字更合适),图像内容复杂则分配较多的码字,这样既保证了质量,又兼顾带宽限制。这种算法在画质相同的前提下,可以缩小文件体积

以 H.264 编码为例, VENC 模块提供用户可设置 MaxQp,MinQp, MaxBitrate 和 ChangePos。

  • MaxQp, MinQp 用于控制图像的质量范围
  • MaxBitrate 用于钳位码率统计时间内的最大编码码率
  • ChangePos 用于控制开始调整Qp 的码率基准线

当编码码率大于 MaxBitrateChangePos 时,图像 qp 会逐步向MaxQp 调整,如果图像 QP 达到 MaxQp, QP 会被钳位到最大值, MaxBitrate 的钳位效果失效,编码码率有可能会超出 MaxBitrate。当编码码率小于 MaxBitrateChangePos时,图像 QP 会逐步向 MinQp 调整,如果图像 QP 达到 MinQp,此时编码的码率已经达到最大值,而且图像质量最好。

这种用法也被称为CVBR

CVBR

(Constrained Variable Bit Rate)
VBR的一种改进,兼顾了CBR和VBR的优点:在图像内容静止时,节省带宽,有Motion发生时,利用前期节省的带宽来尽可能的提高图像质量,达到同时兼顾带宽和图像质量的目的。

这种方法通常会让用户输入最大码率和最小码率,静止时,码率稳定在最小码率,运动时,码率大于最小码率,但是又不超过最大码率。比较理想的模型如下

FIXQP

Fix Qp 固定 Qp 值。在码率统计时间内,编码图像所有宏块 Qp 值相同,采用用户设定的图像 Qp 值, I 帧和 P 帧的 QP 值可以分别设置。


以上三种是海思支持的编码模式

还有另外的编码模式

ABR

(Average BitRate)平均比特率 是VBR的一种插值参数

ABR在指定的文件大小内,以每50帧 (30帧约1秒)为一段,低频和不敏感频率使用相对低的流量,高频和大动态表现时使用高流量,可以做为VBR和CBR的一种折中选择。

编码时的码率控制模式选择

  1. 当你在视频网站上传视频时,视频网站会对视频进行二次编码,为了保证网站上播放的视频有高质量画质,应尽量使用高码率的视频。
  2. 当编码视频时,应考带宽等因素,比如在你自己的网站发布视频时,如果码率很高,那么你就需要高带宽支持,如果没有很高的带宽,应酌情降低码率。
  3. 当你的视频用于移动设备的播放时,最好将码率设置的低一点,移动设备的性能及文件读取速度不是很高,所以在移动设备播放高码率视频会有卡顿现象。

【from Spark!】音视频中的码率控制(CBR、VBR、CVBR、FIXQP)相关推荐

  1. 音视频 SDP 添加码率

    音视频 SDP 添加码率 最终目标 音频设置码率 a=rtcp-muxa=rtpmap:111 opus/48000/2a=rtcp-fb:111 transport-cc - a=fmtp:111 ...

  2. 技术分享 | 漫谈音视频中的拥塞控制

    网络拥塞造成的丢包.延时和抖动,会导致实时音视频的质量降低.卡顿和时延增加,影响用户体验.本篇文章将介绍什么是网络拥塞,以及网络拥塞对音视频质量的影响,重点讲解在构建RTC系统时拥塞控制的一些策略. ...

  3. 「Python|场景案例」如何获取音视频中声音片段的起止时间?

    本文主要介绍如何使用python的第三方库moviepy找出音视频中声音开始出现的位置以及声音结束的位置. 文章目录 场景描述 准备工作 解决方案 源代码 场景描述 假设我们有一段音频,音频开始有一段 ...

  4. 聊聊实时音视频中的技术难点:回声消除+噪声消除

    文 | 菊风媒体引擎资深研究团队 在各个实时音视频互动场景中,回声和噪声对于影响用户体验而言都是很大的问题.音视频正在发展成为互联网线上沟通的必然趋势,在自然的交流环境中,回声和噪声是非常影响沟通体验 ...

  5. 聊聊语音聊天室app源码实时音视频中的技术难点:回声消除+噪声消除

    聊聊语音聊天室app源码实时音视频中的技术难点:回声消除+噪声消除 在聊聊语音聊天室app源码各个实时音视频互动场景中,回声和噪声对于影响用户体验而言都是很大的问题.音视频正在发展成为互联网线上沟通的 ...

  6. 怎么将抖音视频中的水印消除

    在社交网络上看到的不管是图片还是视频,一般都会有水印的存在,比如最常用的抖音短视频,保存下来的视频都会有水印,那怎么将抖音视频中的水印消除呢? 1 .今天要说的是一个手机 APP ,在应用商店找到&q ...

  7. 将音视频中的花屏、绿屏、黑屏问题一网打尽

    今天继续给大家分享一下知识星球里面的干货. 创建知识星球快两个月了,目前已经积累了不少干货,主要得益于星球里大佬们的分享以及小伙伴的提问. 星球里面邀请的大佬都是在头条.快手等知名 IT 企业从事过音 ...

  8. 视频编码中的RC(rate control)是什么?码率控制 CBR (Constant Bit Rate)、VBR (Variable Bit Rate)

    再看RXW源码的时候在视频编码结构体里有一个RC结构体,RC(rate control)到底是啥? 码率控制技术 RC (Rate Control) 是实际视频编码器中一个非常重要的技术模块. 根据实 ...

  9. 什么是码率控制? 在视频编码中,码率控制的概念是什么,它是通过什么实现的?

    码率控制实际上是一种编码的优化算法,它用于实现对视频流码流大小的控制.那么它控制的目的是什么呢? 我们可以试想一下,同样的视频编码格式,码流大,它包含的信息也就越多,那么对应的图像也就越清晰,反之亦然 ...

最新文章

  1. BCH(比特币现金)的货币流通速度是BTC的6倍
  2. “OMP: Error #15: Initializing libiomp5.dylib, but found libomp.dylib already initialized“ error
  3. 第五天2017/04/06(下午1:C、C++混合编程 与 #ifdef __cplusplus extern C{ })
  4. MySQL基本操作(表,字段)
  5. zigbee ZIGBEE_FRAGMENTATION
  6. 信息学奥赛一本通(1177:奇数单增序列)——比较排序
  7. jQuery Mobile基础 学习笔记
  8. UIwebView缩放
  9. sublime c语言如何编译,Sublime Text 3 实现C语言代码的编译和运行(示例讲解)
  10. python模拟seo_Python模拟鼠标点击实现方法(将通过实例自动化模拟在360浏览器中自动搜索python)_天津SEO...
  11. 温习php一(apache和php的配置)
  12. 邱锡鹏:为什么相比于CV,NLP领域的发展要缓慢?
  13. adb:设置手机屏幕亮度
  14. ABB机器人紧凑型控制柜内部结构(图)
  15. 苹果8p录像鸿蒙,录屏怎么录苹果8p | 手游网游页游攻略大全
  16. 计算机专业学生如何做项目,计算机专业学生如何申请科研项目?
  17. 程序员转行都去干嘛了?产品经理很正常,这位卖烧饼的也太强了
  18. 统计平均分,最高分及得最高分人数
  19. 达梦数据库使用小记录【关于 无效的列】
  20. 爱普生Epson PictureMate 240 打印机驱动

热门文章

  1. Hook 规则以及自定义Hook
  2. 数据挖掘:提升数据敏感度
  3. 韩国牛奶进口税率及进口牛奶那些流程事项2021-08-19
  4. 全球及中国家用除湿机行业市场需求及未来投资商机研究报告2022-2028年
  5. 医学图像处理(AI) 期刊和会议
  6. 关于Ubuntu18.04 自带网卡驱动不兼容主板r8125等网卡问题的解决办法
  7. linkin大话设计模式--简单工厂
  8. 在 Visual Studio 中禁用 DPI 感知
  9. 社群运营:如何管理好一个社群?
  10. 软件工程概论学习进度表第一周