攻克视频技术
李江
声网 Agora 视频专家
7494 人已学习
新⼈⾸单¥59
登录后,你可以任选3讲全文学习
课程目录
已完结/共 19 讲
攻克视频技术
15
15
1.0x
00:00/00:00
登录|注册

11|码控算法:如何控制视频的编码码率?

你好,我是李江。
上一节课我们讲了带宽预测算法,学习了如何去预测无时无刻不在变化着的网络带宽。准确的预测带宽是实时视频通话技术里面的一个非常重要的环节。
如果不能够很好地预测出实际带宽,那有可能引起数据超发,导致发送数据量大于实际网络的承受能力,继而引起视频画面的延时和卡顿;也有可能预测的带宽太低,导致发送的数据量远低于实际网络的承受能力,不能很好地利用网络带宽,最终导致视频画面模糊和很明显的马赛克现象。因此,一个好的带宽预测算法是至关重要的。
当然,好的带宽预测算法还只是开始,如何在预测出带宽之后能够控制数据的发送码率,使其尽量符合当前的网络带宽也是非常重要的。如果你没有做好发送码率的控制,想发送多少数据就发送多少数据的话,那跟没有网络带宽预测是一样的效果。要不就画面卡顿,要不就很模糊。
因此,这节课我们就接着来讲讲与网络带宽预估算法一样重要的另外一个算法——视频码率控制算法。我们会先简单看一下码控算法的原理和类型,然后再重点讲解其中最难也是在 RTC 场景中最重要的 CBR 码控算法。我们会非常详细地剖析 CBR 算法的原理,讲解它是如何一步步尽量做到恒定码率的。
通过下面的图你可以清楚地了解码控算法在整个发送端流程中的位置和重要性。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

视频编码码率控制算法在实时视频通话技术中扮演着关键角色。本文深入介绍了码率控制算法的原理和类型,重点讲解了在RTC场景中最重要的CBR码率控制算法。CBR算法通过多级调整,包括帧组级、帧级、宏块组级,以及计算当前帧的复杂度,实现恒定码率。文章详细解释了复杂度求解、帧组级、帧级和GOM级的码率控制过程,使读者能够深入了解视频编码码率控制算法的原理和操作。通过本文,读者可以全面了解码率控制算法的基本类型和CBR算法的调整过程,为进一步学习提供了重要参考价值。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《攻克视频技术》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(9)

  • 最新
  • 精选
  • Geek_00444b
    根据目标码率来设置初始帧的qp?

    作者回复: 在openh264里面是使用经验值通过分辨率和目标码率得到一个初始qp的,之后就可以使用码控算法来调节了。

    2022-01-04
    1
  • Geek_6b760c
    想问一下老师,码率的单位是bps,但是码控会设置一个大小,那这个时间该怎么算呢,比如怎么确定当前这个帧组的时间长短呢

    作者回复: 这个就是需要跟你需要在多长的时间内的“平均”码率达到你的目标码率要求了。比如你希望1秒钟内的平均码率是你的目标码率的话。你可以设置为1秒钟。

    2022-08-18归属地:浙江
  • Geek_6b760c
    想问一下老师,为什么在求帧复杂度时要用sad和方差来计算,而不是直接在帧内或帧间预测之后通过残差来计算呢,本身量化编码不是就在预测完成之后吗,而且这样计算会更加准确吧。真心求教老师!

    作者回复: 但是帧内和帧间预测模式选择的时候需要知道qp,这样才能得到率失真使用的lambda。所以在模式选择之前得得到qp才行。

    2022-08-18归属地:浙江
    2
  • jcy
    这个地方我解释一下,帧的实际剩余大小加上 GOM 的实际编码大小,就是去掉前一个 GOM 的目标大小,再减去前一个 GOM 的目标大小,就是当前的帧目标剩余大小了 这里 再减去前一个 GOM 的目标大小 应该是 再减去前一个 GOM 的实际编码大小 吧
    2022-07-27
    1
    1
  • Wales
    思考题, 第一个I帧/P帧的QP值确定: 消除不确定性需要引入信息,可用的信息: 上个帧组中I帧/P帧的QP值、帧复杂度、实际编码大小,目标编码大小。 利用这些信息,用文中类似的方式进行计算即可。
    2022-07-01
  • mandy
    什么是Qp值呢?
    2022-05-28
    1
  • 晓龙
    第一个 I 帧和第一个 P 帧的 QP 值怎么确定呢?因为在它们前面没有已经编码好了的 I 帧和 P 帧。 取帧内内的平均数,frame_init_qp = total_size / 帧组内帧数
    2022-02-14
  • Chris Zou
    CRF表示恒定码率因子,我看其他博客也叫恒定质量。
    2022-01-23
  • 晓龙
    iOS videotool box里只有一种码率设置:ABR:AverageBitRate,这种码控方式是围绕设置的码率上下浮动。从长时间尺度上来看,码率平均值是接近设定的码率的
    2021-12-15
收起评论
显示
设置
留言
9
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部