码率控制模式

13 篇文章 8 订阅
订阅专栏

1、参数控制

视频编码(有损)的目标是尽可能多的节省比特(码率)的同时尽量保持视频质量。码率控制是平衡码率和质量的重要工具。

选择哪种码率控制模式往往取决于你的应用场景。通常有以下几种常见场景:

  • 本地存储:压缩一个文件存到硬盘或网盘上,这时希望文件编码后质量尽可能好,所以压缩率可以低一点,此时不关心压缩后文件的具体大小;
  • 流媒体:想要通过网络传输一个文件,这是你要确保文件码率不超过网络带宽,或者你需要在不同带宽下提供不同码率的文件(例如,在网上看视频网络不好时将视频从高清切换到低清,分辨率也同时降低)。
  • 直播流(和2类似),但是你需要尽快编码(实时),并且直播时你无法提前预知视频内容。
  • 面向设备的编码:例如你想向DVD或蓝光碟上存放文件,你想使文件编码后达到特定大小(正好占满碟片空间),更关心文件大小;

了解使用场景可以帮助你选择码率控制模式。

下面介绍不同的码率控制模式,这些模式基于ffmpeg中的x264、x265、libvpx编码器。

CQP(恒定质量参数)

固定质量参数,每一帧图像在压缩的时候,采用相同的QP值(QP值决定了量化编码时从像素宏块的原始信息中丢弃多少信息)。

但在遇到运动比较激烈的图像时,单位时间内要表现得内容该多的还是多。

比如游戏直播,几乎每一秒画面都在运动,码率很难降低下来。

av_opt_set(pOutVideoCodecCtx->priv_data, "qp", "23", AV_OPT_SEARCH_CHILDREN);

测试表现:

CRF(恒定码率因子)

限制码率因子,CRF是264和265进行码率控制的设置,这个值可以在0~1之间,值越低越好,质量越好,文件越大。

量化的比例范围是 0~51,0为无损,23为缺省值,51质量最差。一边设置为18~28,18视觉上无损,码率比23时文件大小几乎翻倍,编码速度慢很多。

  • 若CRF+6,输出码率大概率减少一半;
  • 若CRF-6,输出的码率大概率增加一倍;

CQP在编码时候,会保持每一帧的QP不变,例如恒定QP=18,那么整个序列的每一帧QP都是18。但CRF会通过动态调整每一帧的QP值,保持质量恒定。

// CRF 
av_opt_set(pOutVideoCodecCtx->priv_data, "crf", "23", AV_OPT_SEARCH_CHILDREN); 
// ffmpeg命令范例 
ffmpeg -i input.mp4 -c:v libx264 -crf 22 -c:a copy output.mp4

测试表现:

下图是QP和CRF等于17和23时,每帧比特数的变化。

2、码率控制

CBR(固定比特率)

是以恒定比特率方式进行编码,有Motion发生时,由于码率恒定,只能通过增大QP(量化参数)来减少码字大小,图像质量变差,当场景静止时,图像质量又变好,因此图像质量不稳定。

量化参数(Quantization Parameter,QP)控制着压缩大小。QP越大压缩率越高同时质量越低,QP越小压缩率越低同时质量越高。在H.264和H.265中,QP的范围是0-51间的整数。你可以很容易的在x264和x265中设置固定QP来编码,注意:libvpx没有固定QP模式。

这种算法优先考虑码率(带宽)。

应用场景:1)文档存储;2)高效使用带宽的场景;

ffmpeg -i <input> -c:v libx264 -x264-params "nal-hrd=cbr:force-cfr=1" -b:v 1M -minrate 1M -maxrate 1M -bufsize 2M <output>

(1)优点:压缩快,能被大多数软件和设备支持。
(2)缺点:占用空间大,效果不是十分理想。现已逐渐被VBR方式取代。

// CBR 
int bitRate = 800000; 
pOutVideoCodecCtx->bit_rate = bitRate; 
pOutVideoCodecCtx->rc_min_rate = bitRate; 
pOutVideoCodecCtx->rc_max_rate = bitRate; 
pOutVideoCodecCtx->bit_rate_tolerance = bitRate; 
pOutVideoCodecCtx->rc_buffer_size = bitRate; 
pOutVideoCodecCtx->rc_initial_buffer_occupancy = pOutVideoCodecCtx>rc_buffer_size * 3 / 4; 
pOutVideoCodecCtx->rc_buffer_aggressivity = (float)1.0; 
pOutVideoCodecCtx->rc_initial_cplx = 0.5;

测试表现:

VBR(动态比特率)

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

包括3个参数:

  • 目标码率
  • 最小码率
  • 最大码率

这种算法优先考虑图像质量。

(1)优点:可以让整首歌都能大致达到我们的音质要求。
(2)缺点:编码时无法估计压缩出来的文件体积大小

// VBR 
pOutVideoCodecCtx->flags |= CODEC_FLAG_QSCALE; 
pOutVideoCodecCtx->rc_min_rate = bitRate - 400000; 
pOutVideoCodecCtx->rc_max_rate = bitRate + 400000; 
pOutVideoCodecCtx->bit_rate = bitRate;

测试结果:

3、H.264画质级别

H.264 baseline profile、extended profile和main profile都是针对8位样本数据、4:2:0格式(YUV)的视 频序列。在相同配置情况下,high profile(HP)可以比main profile(MP)降低10%的码率。

根据应用领域的不同,Baseline profile多应用于实时通信领域,Main profile多应用于流媒体领域, High profile则多应用于广电和存储领域。

// profile
av_dict_set(&param, "profile", "main", 0);

面试的时候也会被问到,如何降低码率的情况下保证画面质量,是可以从main->high选择profile,但 high profile在编码的过程会占用更多的cpu资源。

4、preset

编码加快,意味着信息丢失越严重,输出图像质量越差。

他们之间的区别这取决于源材料,目标比特率和您的硬件配置。 通常,比特率越高,编码所需的时间越 多。

这是一个示例,显示了1080p视频的两次通过编码的(标准化)编码时间:

从中到慢,所需时间增加了约40%。相反,变慢会导致所需时间增加大约100%(将花费两倍的时间)。 与中等速度相比,veryslow需要原始编码时间的280%,而质量较慢的速度只有很少的改进。使用快速可节省大约10%的编码时间,快则可节省25%。 超快将节省55%的成本,但质量要低得多。

// preset
av_dict_set(&param, "preset", "veryfast", 0);

如果未配置该选项,或者采取较慢的速度,会导致CPU消耗过大的问题。

5、tune

主要配合视频类型和视觉优化的参数况。如果视频的内容符合其中一个可用的调整值又或者有其中需要,则可以使用此选项,否则建议不使用(如tune grain是为高比特率的编码而设计的)。

代码实现:

// tune
av_dict_set(&param, "tune", "zerolatency", 0);

6、码率自适应算法

当我们的网络波动的时候,我们可以做什么?
1、上层降低码率。如:丢帧。
2、码率动态切换。例如:当我网络状况不佳的时候,我就降低码率。当网速充足的时候,就升高码率。

ffmpeg4.4项目学习--H264编码之码率控制模式及参数配置
文艺小少年的博客
01-31 1018
目录 一、引言 二、fdk-aac编解码的支持 ------> 2.1、使用fdk-aac编码器 ------> 2.2、libjpeg ------> 2.3、configure添加外部动态库 一、引言 之前简单的完成了H264编码的相关程序,但在应用中我们通常需要根据需求来控制码率或者编码质量,本篇文章就来系统性的整理一下H264中码率控制的几种方式及配置参数 二、H264编码的四种模式 先介绍一下H264编码中码率控制的四种方式 CBR(Constant Bit Rate)是以恒定比
ffmpeg 码率控制
WX_Chen的博客
12-03 5450
-preset 取值范围10个等级,默认medium 选择越快,质量越差,文件越小,速度越快 -crf 取值范围18~28 值越大,质量越差,文件越小,速度不影响 -b:v 取值一般在5M~20M 值越小,质量越差,文件越小,速度不影响 -qp 取值0表示无损压缩 -preset目前所有的预设按照编码速度降序排列为(10个等级): ultrafast, superfast, veryfast, faster...
码率控制
Eyrane的博客
02-26 2887
1.速率控制技术 2.R-Q模型的缺陷 3.HEVC速率控制 1.速率控制技术 1.目标比特分配 通常采用分级的方式来简化目标比特分配问题:GOP级、图像级、CTU级。即为每个GOP确定目标比特数,然后根据每个GOP的目标比特数来确定其中每一幅图像的目标比特数,最后确定其中每个CU的目标比特数。 (1)图像层目标比特分配 (2)CU层目标比特分配 CU层通常忽略CU...
ffmpeg与x264编码指南
暂时为空
05-31 4万+
x264是一个 H.264/MPEG4 AVC 编码器,本指南将指导新手如何创建高质量的H.264视频。     对于普通用户通常有两种码率控制模式:crf(Constant Rate Factor)和Two pass ABR。码率控制是一种决定为每一个视频帧分配多少比特数的方法,它将决定文件的大小和质量的分配。     如果你在编译和安装libx264 方面需要帮助,请查看ffmpeg和x2
x264码率控制
abc_student的专栏
03-27 825
x264码率控制  (2011-09-13 15:36:54) (本文来源http://blog.sina.com.cn/s/blog_4e0869690100xa7l.html,仅参考学习用) 码率控制 qp 默认:无 说明:三种可选的码率控制方法之一。设置x264使用固定量化参数模式。给定的数量将被作为P帧的量化参数,I帧和B帧的量化参数由–ipratio and –p
第五章 编码传输中的码率控制
m0_46303430的博客
07-31 717
视频压缩通信第五章简单学习记录
普通用户常用的CRF和ABR码率控制模式在H264中的应用
qq_34823218的博客
11-04 2575
对于普通用户通常有两种码率控制模式:固定码率因子crf(Constant Rate Factor)和2-Pass Average Bitrate (2-Pass ABR)。码率控制是一种决定为每一个视频帧分配多少比特数的方法,它将决定文件的大小和质量的分配。 一 固定码率因子 crf(Constant Rate Factor): 该方法在输出文件的大小不太重要的时候,可以使整个文件达到特定的视频质量。该编码模式在单遍编码模式下提供了最大的压缩效率,每一帧可以按照要求的视频质...
芯片码率控制使用说明1
08-03
本文档是关于海思芯片在码率控制方面的使用说明,主要涵盖了CBR(Constant Bit Rate)、VBR(Variable Bit Rate)和AVBR(Adaptive Variable Bit Rate)三种码率控制模式的参数说明和使用方法。这三种码率控制方式在...
264码率控制流程分析
10-31
在X264中,码率控制模式可以通过定义常量进行选择,如: - `X264_RC_CQP`:恒定量化参数模式,不考虑码率控制。 - `X264_RC_CRF`:恒定质量模式,编码器会自动调整码率以保持设定的质量水平。 - `X264_RC_ABR`:平均...
多媒体视频通信的码率控制
07-22
多媒体传输的码率控制,在H.264下的网络传输技术的研究
T31码率控制说明-20200115.pdf
05-31
T31提供五种码率控制模式:FIXQP恒定量化参数模式、CBR恒定码率模式、VBR变码率模式、CAPPED_VBR基于目标PSNR值的变码率模式、CAPPED_QUALITY基于CAPPED_VBR增加了用于解决剧烈运动下码率过低的现象的变码率模式。...
音视频中的码率控制(CBR、VBR、CVBR、FIXQP)
路人coder
07-19 1万+
什么是码率码率就是数据传输时单位时间传送的数据位数。一般我们用的单位是kbps即千位每秒。 通俗一点理解就是取样率,单位时间内取样率越大,精度就越高,处理出来的文件就越接近原始文件。 但是文件体积与取样率是成正比的,所以几乎所有的编码格式重视的都是如何用最低的码率达到最少的失真。 码率控制器实现对编码码率进行控制。 为什么要控制码率? 从信息学的角度分析,图像的压缩比越低,压缩图像的质量越高;图像压缩比例越高,压缩图像的质量越低。对于场景变化的真实场景,图像质量稳定,编码码率会波动;编码码率稳定,图
码率控制(一):理解码率控制模式(x264,x264,vpx)
热门推荐
Dillon2015的博客
05-04 5万+
码率控制(一):理解码率控制模式(x264,x264,vpx) 什么是“码率控制”?它是编码器决定为每帧视频分配多少比特的工具。 视频编码(有损)的目标是尽可能多的节省比特(码率)的同时尽量保持视频质量。码率控制是平衡码率和质量的重要工具。 码率控制有多种方式,你将会了解到"1-pass","2-pass","CBR","VBR","VBV Encoding"和"CRF"等。 下面是不...
什么是码率控制? 在视频编码中,码率控制的概念是什么,它是通过什么实现的?
记录程序员的每一天
02-24 2862
码率控制实际上是一种编码的优化算法,它用于实现对视频流码流大小的控制。那么它控制的目的是什么呢? 我们可以试想一下,同样的视频编码格式,码流大,它包含的信息也就越多,那么对应的图像也就越清晰,反之亦然。目前常用的两种码流控制方式是VBR和CBR,VBR是动态比特率,CBR是固定比特率。那么他们是怎么来实现的呢? 我们首先看视频编码的目的,它是为了在有限的带宽中传输尽可能清晰的视频,我们以每秒25/
视频码 率控制
guofeidageda的博客
01-18 574
码控,顾名思义,就是码率控制,它是编码器的一个重要模块,主要的作用就是用算法来控制编码器输出码流的大小。虽然它是编码器的一个非常重要的部分,但是它并不是编码标准的一部分,也就是说,标准并没有给码控设定规则。我们平时用的编码器的码控都是编码器程序自己实现的。那码控的原理是什么呢?其实码控就是为每一帧编码图像选择一个合适的 QP 值的过程。我们知道当一帧图像的画面确定了之后,画面的复杂度和 QP 值几乎决定了它编码之后的大小。
码率控制(三):TMN8
Dillon2015的博客
05-15 5万+
码率控制(三):TMN8 TMN8是为低延迟视频通信设计的码率控制算法。TMN8码率控制分为帧级码率控制和宏块(MB)级码率控制。帧级码率控制会为当前帧选择合适的目标比特数,MB级码率控制会为帧内的每个MB计算QP(或量化步长)。如果缓冲区溢出则跳过当前帧的编码。 帧级码率控制 在帧级码率控制中,帧的目标比特数由缓冲区充盈度、帧率和信道速率决定。在编码当前帧前通过下式计算缓冲区充盈度W: ...
码率控制方式选择
maopig的专栏
09-19 6272
码率下的图像质量或同图像质量下的码率。 AVCodecContext  /**      * the average bitrate      * - encoding: Set by user; unused for constant quantizer encodi
HEVC码率控制代码追踪(一)(HEVC code tracing-Rate control)
yang-彧
05-16 3463
接下来的一段时间将对码率控制代码追踪这一块的学习心得和领悟做个简要的记录,在将来的某一天,这些博文将让我清晰地看到自己的成长。 码率控制的关键两个步骤:(1)码率分配(2)目标码率的实现 所以在看代码的时候也尽量将步骤与代码对应起来,分块阅读,整合思考与优化。 在码率控制的两个步骤中又可以依据操作对象(层次)的不同,分别从GOP,picture,lcu这三个方面去看程序。在对功能函数进行解读
视频编码方式从恒定码率变为vbr会对视频画面产生什么影响
最新发布
06-09
如果将视频编码方式从恒定码率(CBR)变为可变码率(VBR),会对视频画面产生一定的影响。在CBR编码方式下,视频编码器以恒定的码率对视频进行编码,这意味着无论视频场景复杂程度如何,视频的码率都保持不变。而在VBR编码方式下,编码器会根据视频场景复杂程度自动调整码率,这意味着在视频场景简单的时候,编码器会降低码率,而在场景复杂的时候,编码器会提高码率,从而保证视频画面质量的稳定性。 因此,将视频编码方式从CBR变为VBR,可能会导致视频画面的码率波动,但相应的,画面质量会得到更好的保证,特别是视频场景复杂的情况下。此外,由于VBR编码方式可以更好地适应不同的视频场景,因此可以在一定程度上提高视频的视觉效果,并减小视频文件的大小。但是,VBR编码方式也需要更多的计算资源和时间,因此在实际应用中需要根据具体情况进行选择
写文章

热门文章

  • 编解码标准-H.264 4554
  • 流媒体基础-RTP协议 3083
  • Linux下USB设备图像采集 2400
  • ZLMediaKit-手把手编译 1723
  • 流媒体基础-RTP封装PS流 1649

分类专栏

  • 音视频流媒体基础 13篇
  • C++11/14/17 2篇
  • 开发中遇到的各类问题
  • FFmpeg 5篇
  • Linux高性能
  • Linux网络编程 3篇
  • WebRTC 10篇
  • SRS/ZLMediaKit 1篇

最新评论

  • WebRTC-NAT打洞策略

    夏天的风9527: 文不对图!!!!

  • 编解码标准-H.264

    孤寒者: [code=python]讲的很透彻!感谢博主的分享~[/code]

  • 编解码标准-H.264

    孤寒者: 这篇文章写得很好:写的非常详细,内容丰富,具有条理清晰,结构严谨,内容丰富和可借鉴性等特点。 认真看完收获满满,期待下一篇文章的更新。

大家在看

  • 惊了,GPT也会玩《黑神话》?胜率还远超人类?全靠大模型实力!
  • 01-服装行业系统-模块展示 231
  • 文字版格斗游戏
  • 1041-基于51单片机的报警器(模拟量,4路,ADC0832)原理图、流程图、物料清单、仿真图、源代码
  • ROS组合导航笔记1:融合传感器数据 903

最新文章

  • DTLS SRTP
  • DTLS 密钥协商
  • DTLS 握手
2023年33篇
2022年1篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

毕加索解锁

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值

天下网标王龙岩网站seo优化厂家网站站内优化方案咸阳网站网址优化怀化企业网站优化推广任丘网站优化哪家好茌平网站seo优化宁波网站优化快速排名巩义网站优化费用南湾专门做网站优化seo网站优化服务当涂网站优化推广南宁网站的优化武汉市网站关键词优化优势网站seo代码优化浙江推荐网站优化白云优化网站排名可靠的丹阳网站优化江西省网站优化排名浙江省网站优化企业西安推广网站优化静安区官方网站优化定制方案金华浦江县百度网站优化电话网站优化的好还是营销的好韶关环保设备网站seo优化百姓网品牌广告建材网站seo优化seo如何优化网站标题网站优化关键词密度多少合适二手设备转让网站优化方式死链会对网站优化带来哪些影响香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

天下网标王 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化