ffmpeg码率控制

一.VBR与CBR的含义和区别

VBR是动态码率。CBR是静态码率。
VBR(Variable
Bitrate)动态比特率。也就是没有固定的比特率,压缩软件在压缩时根据音频数据即时确定使用什么比特率,这是以质量为前提兼顾文件大小的方式。
VBR也称为动态比特率编码,使用这个方式时,你可以选择从最差音质/最大压缩比到最好音质/最低压缩比之间的种种过渡级数,在MP3文件编码之时,程序
会尝试保持所选定的整个文件的品质,将选择适合音乐文件的不同部分的比特率来编码。主要优点是可以让整首歌都能大致达到我们的品质要求,缺点是编码时无法
估计压缩出来的文件大小。
CBR(Constants Bit Rate)即固定码率,就是静态(恒定)比特率的意思,CBR是一种固定采样率的压缩方式。优点是压缩快,能被大多数软件和设备支持,缺点是占用空间相对大,效果不十分理想,现已逐步被VBR的方式取代。
固定码率是一个用来形容通信服务质量(QoS,Quality of Service)的术语。和该词相对应的词是可变码率或可变比特率(英文variable bit rate,缩写VBR)。
当形容编解码器的时候,CBR编码指的是编码器的输出码率(或者解码器的输
入码率)应该是固定制(常数)。当在一个带宽受限的信道中进行多媒体通讯的时候CBR是非常有用的,因为这时候受限的是最高码率,CBR可以更好的易用这
样的信道。但是CBR不适合进行存储,因为CBR将导致没有足够的码率对复杂的内容部分进行编码(从而导致质量下降),同时在简单的内容部分会浪费一些码
率。

二.ffmpeg设置方法

ffmpeg中CBR(固定码率控制)的设置:

c->bit_rate = br;
c->rc_min_rate =br;
c->rc_max_rate = br;
c->bit_rate_tolerance = br;
c->rc_buffer_size=br;
c->rc_initial_buffer_occupancy = c->rc_buffer_size*3/4;
c->rc_buffer_aggressivity= (float)1.0;
c->rc_initial_cplx= 0.5; 

ffmpeg中VBR(可变率控制)的设置:

c->flags |= CODEC_FLAG_QSCALE;
c->rc_min_rate =min;
c->rc_max_rate = max;
c->bit_rate = br;

三.试用场景

VBR 适合的应用场景是媒体存储,而不是网络传输。

其实实际网络传输中所谓的 CBR 一般都是
ABR(平均比特率),即只要是单位时间内把码率控制在额定码率就可以了,因为编码输出本来就有缓冲可以起到平滑波动的作用。

严格意义上的 CBR 是
每一帧都分配同样的码字,试想一下,如果某一帧所需要的码字本来就很少,而你却一定要给它分配很多码字,那不是浪费么?另一方面,如果某一帧所需要的码字
本来就多,而你却给得很少,那这帧的效果会很差。这样编下来,整体序列质量会忽好忽坏地不停发生跳变,反而对视觉冲击很大;因此
ABR 才是最适合网络传输的方案。

本文出处:http://blog.csdn.net/austinblog/article/details/28426587

时间: 2024-10-14 18:01:18

ffmpeg码率控制的相关文章

FFMpeg的码率控制

mediaxyz是一位研究ffmpeg有三年的高人了,这几天一直在折腾ffmpeg中的x264,就是不知道该如何控制码率,主要是参数太多,也不知道该如何设置,在google上search了一下,这方面的介绍为0,那就找mediaxyz请教请教吧,这些可都是经验,非常宝贵! 以下是与mediaxyz在QQ上聊天的记录,只有一部分,因为QQ把之前的谈话删除了,但基本上精髓都可这里了. mediaxyz 23:40:26 你说的qsable是c->global_quality吧 Leon 23:40:

mediaxyz访谈录:ffmpeg的码率控制

mediaxyz是一位研究ffmpeg有三年的高人了,这几天一直在折腾ffmpeg中的x264,就是不知道该如何控制码率,主要是参数太多,也不知道该如何设置,在 google上search了一下,这方面的介绍为0,那就找mediaxyz请教请教吧,这些可都是经验,非常宝贵! 以下是与mediaxyz在QQ上聊天的记录,只有一部分,因为QQ把之前的谈话删除了,但基本上精髓都可这里了. mediaxyz 23:40:26你说的qsable是c->global_quality吧 Leon 23:40:

FFmpeg中使用libx264的码率控制

两种码率控制模式:crf模式和ABR模式 一.crf模式 Constant Rate Factor(crf)优点是提供了最大的压缩效率,每一帧可以按照要求的视频质量去决定它需要的比特数.缺点是,不能计算规定时间的视频文件大小,或者准确控制输出码率. 1. 选择一个crf值 crf值是视频质量的量化值,取值范围0~51,其中0为无损模式,23为默认值,51代表最差质量.crf值加6,输出码率大概减少一半: 2. 选择一个预设(preset) preset似的编码器能够在编码速度和压缩率之间做出权衡

X264码率控制总结2

X264码率控制方法定性概述 x264/doc/ratecontrol.txt A qualitative overview of x264's ratecontrol methods By Loren Merritt 历史笔记: 本文件是过时的,但相当一部分叙述仍然是准确的,以下是一些重要的码率控制算法更新: 1. 默认情况下,MB-tree代替了qcomp用以计算各帧的复杂度,MB-tree是qcomp在宏块级的有效推广.MB-tree还替代了B帧QP固定偏移. 2. 现在自适应量化(Ada

HEVC码率控制简介(R-lamda)

HEVC码率控制介绍 R-lamda模型提出到优化已有2年,从近几年的文章来看,大体归为类:一是帧内的码率的码率控制算法,一是模型参数更新,一是考虑感知 第一类:K0103码率控制算法主要是在P/B帧上提出的,I帧没有做,体现在I帧中LCU编码时用的还是帧层的QP,而帧层的QP是由配置文件(即*.cfg中QP: 32 # Quantization parameter(0-51)  这里的32我们可以更改一般设置为22.27.32.37),如果码率控制开启,实际上配置文件中#======== Qu

X264码率控制总结1

1.  X264显式支持的一趟码率控制方法有:ABR, CQP, CRF. 缺省方法是CRF.这三种方式的优先级是ABR > CQP > CRF. if ( bitrate ) rc_method = ABR; else if ( qp || qp_constant ) rc_method = CQP; else rc_method = CRF; bitrate和QP都没有缺省值,一旦设置他们就表示要按照相应的码率控制方法进行编码,CRF有缺省值23,没有任何关于编码控制的设置时就按照CRF缺

HEVC码率控制代码追踪(三)

关于图像级别和单元级别的lambda和qp预测计算 这两个级别各两个参数的计算主要考虑的是计算和计算后的平滑参数的设置.都有现成的公式可以参考.同样用到的是HEVC提案JCTVC-K0103(码率控制提案) (一)Double TEncRCPic::estimatePicLambda Double TEncRCPic::estimatePicLambda( list<TEncRCPic*>& listPreviousPictures, SliceType eSliceType)//估计

2016-06-06:X264码率控制

H.264与x264 H264是一个视频压缩编码标准.https://zh.wikipedia.org/wiki/H.264/MPEG-4_AVC X264实现H264视频压缩标准的开源项目.http://www.videolan.org/developers/x264.html 码率控制模式 ABR(Average Bitrate)平均目标码率 CBR(Constant Bitrate)固定码率 X264尽可能使整体码率与给定码率相等,因此编码文件大小确定,适合需要精确控制文件大小场景.另外,

x264码率控制总结3——码率控制参数详解

x264码率控制参数详解 -q, --qp <integer>          Force constant QP (0-51, 0=lossless) 默认:无 说明:三种可选的码率控制方法(bitrate, CQP,CRF)之一.设置x264使用固定QP模式.设定的QP将被作为P帧的量化参数,I帧和B帧的量化参数由–ipratio and –pbratio参数进一步算出.CQP模式使用固定的QP,这意味着最终的文件大小是不可知的.设置为0将产出无损输出.相同视觉质量时,CQP模式编码输出