视频编码码流控制:CBR、VBR和ABR

视频编码码流控制:CBR、VBR和ABR
问题背景:
问题背景:
⽆论是查线上⼀些花屏、卡顿,马赛克问题,还是进⾏码率⾃适应的功能开发,抑或进⾏客户端播放器的JitterBuffer的优化,都需要编码器发送端的配合。我们需要在编码速度、⽹络带宽,视频质量⽅⾯做⼀个权衡,进⽽选择更符合场景的码控调整⽅案,同时⽬前⽐较热门的ROI编码,编码场景的⾃适应学习都跟这部分内容有关系。本⽂介绍下常见视频编码器码率控制⽅案,具体的编码器可能在实现和使⽤上有所差异,具体在调⽤API和阅读源码时需要进⾏进⼀步分析和了解。
背景知识:
视频编码过程中,有⼀个重要步骤:量化,量化属于有损压缩过程。量化基本决定了视频的码率,视频的码率⼜从⼀定程度上决定了视频的质量。量化值QP越⼤则量化的粒度越⾼,压缩率越⼤,码率更⼩,视频质量越低,呈现出来就是马赛克⽐较⼤,画⾯不细腻,画⾯⽐较模糊。反之,压缩率低,码率⼤,质量⾼,画⾯细腻,细节丰富。
所以选择⼀个适合场景的视频码控⽅案很重要,调整视频输出码率其实就是在视频编码速度、⽹络带宽
以及视频质量之间做⼀个平衡。有时⽹络带宽很受限,就要优先考虑码率⼤⼩优先的码控⽅案,有些对视频质量要求很⾼,要⾼清视频,那就要选择质量优先的模型。
五个因素
个因素权衡得出
权衡得出:
可以通过下⾯五
⽅案,可以通过下⾯
整体来说
视频编码码率控制⽅案,
整体来说选择
选择视频编码码率控制
1. 视觉质量稳定性,利于视觉主观质量,⽐如清晰度,流畅度,细节等,这点和⼈眼的视觉原理有关,选择⼈眼主动质量感受最⾼的模型;
2. 即时输出码率,相当于每帧编码输出⽐特数,要考虑⽹络带宽因素,随着移动互联⽹发展,也需要考虑wifi和⽆线⽹这块的影响;
3. 输出视频⽂件⼤⼩可控,利于传输,存储,要看系统的空间⼤⼩;
4. 编码速度,不同的码控模型也影响了编码速度,对于低延时、实时场景要考虑,因为不同的码控⽅案,计算的复杂度不同,带来的编码延时也有影响;
5. 对于移动设备还需要不同编码⽅式耗电量要求,因为不同模型会影响编码和解码复杂度,进⽽在移动设备编码和播放需要的耗电量不同;
码率介绍:
下⾯介绍不同的码率控制模型和适⽤场景:
CQP:固定QP,最简单的码率控制⽅式,每帧图像都按照⼀个特定的QP来编码,每帧编码后的数据量有多⼤是未知的,既不是码率优先模型也CQP:固定QP
不是质量优先模型,不过是实现最简单的模型;
码率都不
视频质量和码率都不
适⽤场景:
适⽤场景:⼀般不建议使⽤这种⽅式,因为这种⽅式不考虑编码内容的复杂性,⽤相同的压缩⽐处理每⼀帧。出来的视频质量
固定。个⼈觉得只有那种⾮常简单的场景,⽐如静⽌不变的场景运动量很⼩的场景可以尝试⽤,⼀遇到复杂场景,码率波动就⾮常⼤。或者在算法研究或者验证可以使⽤。
特点:
·瞬时码率会随场景复杂度波动;
·编码速度快,调控最简单,每帧的QP值相同;
·x264和x265中⽀持CQP模式,libvpx不⽀持;
·H.264中QP范围是[0, 51]。QP值越⼤表⽰越⼤的量化步长,编码视频的质量越低。QP为0表⽰进⾏⽆损编码;
CRF:(Constant Rate Factor)恒定码率系数。把某⼀个”视觉质量”作为输出⽬标。通过降低那些耗费码率但是⼜难以⽤⾁眼察觉的帧CRF:
(⾼速运动或者纹理丰富)的质量提升那些静态帧的码率来达到此⽬的。
特点:帧间QP变化,帧内宏块的QP变化,输出码率未知,各帧输出的视觉质量基本恒定,这种⽅式相当于固定质量模式+限制码率峰值的⽅式。
适⽤场景:
适⽤场景:适⽤于对视频质量有⼀定要求的场合,CRF值可以简单理解为对视频质量期望的⼀个输出固定值,希望⽆论是在运动复杂场景下还是在静⽌简单情况下,都希望有⼀个稳定的主观视频质量可以选择该模式,该模式是视频质量优先模型。视频质量可以简单理解为视频的清晰度,像素的细腻程度和视频的流畅度。
特点:
·
与恒定QP类似,但追求主观感知到的质量恒定,瞬时码率也会随场景复杂度波动,视频帧之间或者内部宏块之间的QP值都不⼀样;
·对于快速运动或细节丰富的场景会适当增⼤量化失真(因为⼈眼不敏感),反之对于静⽌或平坦区域则减少量化失真;
·CRF是x264和x265的默认码率控制⽅式,也可⽤于libvpx;
·CRF值越⼤视频压缩率越⾼,但视频质量越低,各codec的CRF取值范围⼀般[0-51],但是⼀般默认值x264⽤23,x265库默认为28;
·如果你不确定要使⽤什么CRF,从默认值开始,并根据对输出的主观印象进⾏更改。如果质量没有⾜够好则较低的CRF。如果⽂件太⼤了则选择更⾼的CRF。更改±6会导致码率⼤⼩的⼀半/两倍左右的变化,±1会导致码率10%左右的变化。
CBR:(Constant Bit Rate)
CBR:(Constant Bit Rate)恒定码率,⼀定时间范围内⽐特率基本保持的恒定,属于码率优先模型。
适⽤场景:⼀般也不建议使⽤这种⽅式,虽然输出的码率总是处于⼀个稳定值,但是质量不稳定,不能充分有效利⽤⽹络带宽,因为这种模型不适⽤场景:
考虑视频内容的复杂性,把所有视频帧的内容统⼀对待。但是有些编码软件只⽀持固定质量或者固定码率⽅式,有时不得不⽤。⽤的时候在允许的带宽范围内尽可能把带宽设置⼤点,以防⽌复杂运动场景下视频质量很低,如果设置的不合理,在运动场景下直接就糊的看不成了。
特点:
·码率稳定,但是质量不稳定,带宽有效利⽤率不⾼,特别当该值设置不合理,在复杂运动场景下,画⾯⾮常模糊,⾮常影响观看体验;
·但是输出视频码率基本稳定,便于计算视频体积⼤⼩;
VBR:(Variable Bit Rate)可变码率,简单场景分配⽐较⼤的QP,压缩率⼩,质量⾼。复杂场景分配较⼩QP。得到基本稳定的视觉质量,因为VBR:
⼈眼⼈眼本来就对复杂场景不敏感,缺点在于输出码率⼤⼩不可控。
有两种调控模式:质量优先模式和2PASS⼆次编码模式。
质量优先模式:
so.csdn/api/v3/search?p=1&t=all&q=不考虑输出视频⽂件的⼤⼩,完全按照视频的内容复杂程度来分配码率,这样视频的播放效果质量最好。
智能电表芯片⼆次编码⽅式2PASS:
第⼀次编码检测视频内容的简单和复杂部分,同时确定简单和复杂的⽐例。第⼆遍编码会让视频的平均码率不变,复杂的地⽅分配多bit,简单地⽅分配少bit。这种编码虽然很好,但是速度会跟不上。
适⽤场景:VBR适⽤于那些对带宽和编码速度不太限制,但是对质量有很⾼要求的场景。特别是在运动的复杂场景下也可以保持⽐较⾼的清晰度适⽤场景:
且输出质量⽐较稳定,适合对延时不敏感的点播,录播或者存储系统。
特点:
·码率不稳定,质量基本稳定且⾮常⾼;
·编码速度⼀般⽐较慢,点播、下载和存储系统可以优先使⽤,不适合低延时、直播系统;
·这种模型完全不考虑输出的视频带宽,为了质量,需要多少码率就占⽤多少,也不太考虑编码速度;
有限的bit数能够在不同场景下合理分配,这ABR:
ABR:(Average Bit Rate)恒定平均⽬标码率,简单场景分配较低bit,复杂场景分配⾜够bit,使得有限的bit数
⼜接近设置的⽬标码率,这样可以控制输出⽂件的⼤⼩,这⼜类似CBR。可以认为是CBR和VBR的折中类似VBR。同时⼀定时间内,平均码率⼜接近设置的⽬标码率
⽅案,这是⼤多⼈的选择。特别在对质量和视频带宽都有要求的情况下,可以优先选择该模式,⼀般速度是VBR的两倍到三倍,相同体积的视频
⽂件质量却⽐CBR好很多。
适⽤场景:ABR在直播和低延时系统⽤的⽐较多,因为只编码了⼀次,所以速度快,同时兼顾了视频质量和带宽,对于转码速度有要求的情况下也适⽤场景:
可以选择该模式。B站的⼤部分视频就选择了该模式。
特点:
·视频质量整体可控,同时兼顾了视频码率和速度,是⼀个折中⽅案,实际⽤的⽐较多;
·使⽤过程⼀般要让调⽤⽅设置,最低码率、最⾼码率和平均码率,这些值要尽可能设置合理点;
上⾯介绍了⼏种码率调控⽅案,在不同的编码器中有不同的叫法和称呼,细节可能不⼀样。但是基本都是通过影响QP的⼤⼩,然后进⼀步影响量化过程的颗粒程度实现的。具体在使⽤时需要进⼀步参考具体编码器实现。
⼀般优先使⽤ABR,在速度,码率⼤⼩,质量⽅⾯都能取得⽐较满意的平衡。其它VBR、CBR、CRF都有⾃⼰的场景,在使⽤时需要有条件使⽤。
总结思考:
今天介绍的视频码控⽅案,是很多上层技术的基础。其中码率⾃适应技术、根据场景都动态调整编码参数和RIO感兴趣区域编码等技术都建⽴在对编码过程中码控⽅案的选择和细化上,进⽽影响了编码的量化程度和量化颗粒,最终在视频质量、速度和带宽之间取得⽐较满意的平衡点。同时这些模型在不同的编码库如x264或者x265上,参数设置是互斥的,有时会因为参数设置不当造成码率失效,设置的参数不起作⽤,这点也需要特别注意。
其次,这块内容熟悉后,对⼀些线上问题的排查也很有好处。清楚调整帧率、分辨率等参数的调整副作⽤。也欢迎后台留⾔分享你实际项⽬这块的相关内容。
往期⽂章回顾:
往期⽂章回顾
悬式绝缘子
⾳视频常见问题分析和解决:HLS切⽚丢帧引起的视频卡顿问题排查
译:构建⾳视频直播应⽤需要考虑的12件事
HLS+FMP4⽅案对H.265+AAC⽀持要点
流媒体传输协议:RTMP、HLS和RTSP介绍
浆浆在线
基于HLS-TS&RTMP-FLV的⼩程序点直播⽅案
⼀图看懂⾳视频核⼼技术栈(框架、⼯具和场景))
国产开源流媒体SRS4.0对视频监控GB28181的⽀持
从⽅块效应&呼吸效应看编码量化参数对流控的作⽤
家庭消费类摄像头选择攻略和隐私保护⼩建议
⾳视频封装⼩总结(PS TS 和FLV)
SDP在RTSP、国标GB28181、WebRTC中的实践
视频监控摄像头的互联⽹化实践思路
在HTML5上开发⾳视频应⽤的五种思路
周末活动回顾:视频质量主观评价、实时RTC和AV1
⾳视频封装:MP4结构概述和分析⼯具
⾳视频解封装:MP4核⼼Box详解及H264&AAC打包⽅案⾳视频基础知识-时间戳的理解
⾳视频封装格式:AAC⾳频基础和ADTS打包⽅案详解
从⼈类的第⼀次直播聊聊视频监控⾏业
⾳视频压缩:H264码流层次结构和NALU详解铝铁合金
⾳视频传输:RTP协议详解和H.264打包⽅案
⾳视频常见问题分析和解决:延时和抖动
勾花网机

本文发布于:2024-09-22 01:17:16,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/279198.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:视频   质量   码率   编码   场景   量化
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议