FFmpeg中使用libx264的码率控制

两种码率控制模式:crf模式和ABR模式

一、crf模式

Constant Rate Factor(crf)优点是提供了最大的压缩效率,每一帧可以按照要求的视频质量去决定它需要的比特数。缺点是,不能计算规定时间的视频文件大小,或者准确控制输出码率。

1. 选择一个crf值

crf值是视频质量的量化值,取值范围0~51,其中0为无损模式,23为默认值,51代表最差质量。crf值加6,输出码率大概减少一半;

2. 选择一个预设(preset)

preset似的编码器能够在编码速度和压缩率之间做出权衡。也就是说,选择越慢的编码速度,压缩率就会越高。如果要求编码速度更快,一般选择ultrafast。

开发者还可以基于输入内容的独特性通过使用--tune来改变参数设置。如果没有特殊要求,一般选择zerolantency。

av_opt_set(pCodecCtx->priv_data, "preset", "ultrafast", 0);
av_opt_set(pCodecCtx->priv_data, "crf", "20", AV_OPT_SEARCH_CHILDREN);

二、ABR模式

Average Bit Rate(ABR)模式更注重码率控制,适合在一段时间内生成固定大小的视频,而不太注重视频质量的场景。

原文地址:https://www.cnblogs.com/jiayayao/p/9734691.html

时间: 2024-08-01 07:54:42

FFmpeg中使用libx264的码率控制的相关文章

ffmpeg码率控制

一.VBR与CBR的含义和区别 VBR是动态码率.CBR是静态码率. VBR(Variable Bitrate)动态比特率.也就是没有固定的比特率,压缩软件在压缩时根据音频数据即时确定使用什么比特率,这是以质量为前提兼顾文件大小的方式. VBR也称为动态比特率编码,使用这个方式时,你可以选择从最差音质/最大压缩比到最好音质/最低压缩比之间的种种过渡级数,在MP3文件编码之时,程序 会尝试保持所选定的整个文件的品质,将选择适合音乐文件的不同部分的比特率来编码.主要优点是可以让整首歌都能大致达到我们

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 中添加264支持

转自:http://blog.sina.com.cn/s/blog_513f4e8401011yuq.html ffmpeg 中带有264的解码,没有编码,需要添加x264: 参考百度上的“windows_ffmpeg编译 ” 文档 下载ffmpeg 代码合x264代码, ffmpeg 代码:http://ffmpeg.org/ x264代码:http://www.videolan.org/developers/x264.html 相关资源获取的地方: http://ffmpeg.zeranoe

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

(转) 从ffmpeg中提取出YUV数据

有时需要从ffmpeg中提取出YUV数据用作预览,另存什么的. ffmpeg是先解码成YUV, 再以这个YUV作为输入进行编码,所以YUV数据有两种:  解码后的YUV数据, 以及  编码重建的YUV数据.下面分别讲两个YUV数据从哪儿?以及如何取? 1. 解码后的YUV数据在ffmpeg/libavcodec/utils_codec.c的avcodec_decode_video2() 函数中: avcodec_decode_video2(...){  ...   ret = avctx->co

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)//估计