什么是固定码率因子crf?(Constant Rate Factor)

固定码率因子(CRF)是 x264 和 x265 编码器的默认质量(和码率控制)设置。取值范围是 0 到 51,这其中越低的值,结果质量越好,同时输出文件越大,越高的值意味着越高的压缩比,但你可能会在值大到某个点的时候注意到明显的质量损失。

对 x264,一般取值在 18 到 28 之间。默认值是 23,你可以先用它开始尝试。

在 ffmpeg 中,可以这样使用:

ffmpeg -i input.mp4 -c:v libx264 -crf 23 output.mp4

对 x265,默认CRF值是 28:

ffmpeg -i input.mp4 -c:v libx265 -crf 28 output.mp4

如果你不确定设置CRF为多少,可以从默认值开始,根据你对输出文件的主观感觉进行调整。输出质量是否足够好了?不是?那就把CRF调低一点。输出文件太大了?那就选一个更高的CRF。尽管你的具体结果可能会有变化,大体来说CRF数值 +6 会使文件大小减半,-6 会使大小增一倍。

为了达到最优编码效果,你应该主要在离线文件存储中使用CRF编码。

命令行参数-crf

在优先保证画面质量(也不太在乎转码时间)的情况下,使用-crf参数来控制转码是比较适宜的。这个参数的取值范围为0~51,其中0为无损模式,数值越大,画质越差,生成的文件却越小。从主观上讲,18~28是一个合理的范围。18被认为是视觉无损的(从技术角度上看当然还是有损的),它的输出视频质量和输入视频相当。

我们的压缩策略是,在保证可接受视频画质的前提下,选择一个最大的crf值——如果输出视频质量很好,那就尝试一个更大的值;如果看起来很糟,那就尝试一个小一点的值。

让我们先新建以下bat文件:

ffmpeg -y -i %1 -c:v libx264 -preset veryslow -crf 18 -c:a copy out.mp4

意思是:拖动视频文件至以上bat文件上,以“非常慢”的速度重新编码成H.264格式,保存为out.mp4。

其中:

-preset指定的编码速度越慢,获得的压缩效率就越高。

-c:a copy又是什么意思呢?因为音频的码率一般都比较小,我们就不折腾它了,况且解码后重新编码也会损害音质,于是,就将音频数据从源文件中以原有编码格式直接拷入目标文件吧。

-c:v 后面的参数值怎么填吗?或者说FFmpeg到底支持哪些音视频编码格式?执行ffmpeg –encoders看一下吧。另外

-preset取值范围:ultrafast,superfast,veryfast,faster,fast,medium,slow,slower,veryslow,placebo -tune取值范围:film,animation,grain,stillimage,psnr,ssim,fastdecode,zerolantency

有个小疑问:既然不在乎等待时间,为什么不给-preset指定一个最慢的placebo呢?那是因为:与 veryslow相比,placebo以极高的编码时间为代价,只换取了大概1%的视频质量提升。这是一种收益递减准则:slow 与 medium相比提升了5%~10%;slower 与 slow相比提升了5%;veryslow 与 slower相比提升了3%。

另外,针对特定类型的源内容(比如电影、动画等),还可以使用-tune参数进行特别的优化。但如果你不确定该用哪个选项,还是忽略这个参数吧。对比效果:

执行完一条转码命令之后,调整-crf参数值,分别设为19、20、28、51,重新转码输出为不同的MP4文件。记录数据对比如下:

尝试播放这些文件。发现crf取值为18~28的情况下生成的文件,其画质没有明显的差异,而以-crf 51生成的视频画质已经惨不忍睹了!在实际应用中,多试几个crf值,在画质和压缩比之间找到一个你能接受的平衡点即可。

ffmpeg -y -i %1 -c:v libx264 -preset veryslow -crf 20 -c:a copy out-crf.mp4

上述命令执行截图:

FFmpeg学习(11)——视频转码之-crf参数详解相关推荐

  1. 已知坐标求方位角_【干货】RTK视频实操 | 求转换参数详解和七点注意事项!

    RTK视频教学,『求转换参数』,技术员结合测量一线实操经验,运用工程之星5.0软件为大家讲解如何求转换参数,以及求转换参数需要注意哪些事项. 求转换参数操作 通常情况下,科力达工程之星直接输出的坐标为 ...

  2. ADC学习系列(二):ADC参数详解

    本章节主要讲解ADC的主要参数,部分类似于某些电压电流参数就不提及了,从ADC的基本参数,静态参数,动态参数三大分类来进行讲解.用ADI的高速ADC LTC2380的datasheet部分参数来进行举 ...

  3. Windows 11最新版:任务管理器性能参数详解,什么是分页缓冲池和句柄

    首先,可以确定的一点是,大部分电脑都至少有一个CPU.内存.硬盘.网卡.显卡 Win11的任务管理器和Win10的任务管理器除了UI不同外,参数显示上是几乎一样的 所以Win10的用户也可以参考一下~ ...

  4. [OpenAirInterface实战-11] :OAI nr-softmodem命令行参数详解

    作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客 本文网址:https://blog.csdn.net/HiWangWenBing/article/detai ...

  5. 用FFMPEG SDK进行视频转码压缩时解决音视频不同步问题的方法(转) PTS DTS

    用FFMPEG SDK进行视频转码压缩的时候,转码成功后去看视频的内容,发现音视频是不同步的.这个的确是一个恼火的事情.我在用FFMPEG SDK做h264格式的FLV文件编码Filter的时候就碰到 ...

  6. mencoder和ffmpeg参数详解 (Java处理视频)

    本系列文章导航 Windows下FFmpeg快速入门 ffmpeg参数解释 mencoder和ffmpeg参数详解(Java处理视频) Java 生成视频缩略图(ffmpeg) 使用ffmpeg进行视 ...

  7. Gavin老师Transformer直播课感悟 - NLP信息提取中的CRF Modeling详解

    一.概述 CRF的能力在于信息的依赖性和状态转移处理,它可以表达任意的状态转移和依赖关系.而信息表达能力不足则可以依靠Transformer来处理.在论文中的这幅图展示了各种模型之间是如何进行转换的, ...

  8. 视频文件格式扩展名/专用名词详解_拔剑-浆糊的传说_新浪博客

    视频文件格式扩展名/专用名词详解 收藏 http://blog.csdn.net/fancyaphy/archive/2006/08/08/1037131.aspx AAC AAC全称高级音频编码(A ...

  9. Ext.Net学习笔记22:Ext.Net Tree 用法详解

    上面的图片是一个简单的树,使用Ext.Net来创建这样的树结构非常简单,代码如下: <ext:TreePanel runat="server"><Root> ...

  10. 系列 《使用sklearn进行集成学习——理论》 《使用sklearn进行集成学习——实践》 目录 1 Random Forest和Gradient Tree Boosting参数详解 2 如何调参?

    系列 <使用sklearn进行集成学习--理论> <使用sklearn进行集成学习--实践> 目录 1 Random Forest和Gradient Tree Boosting ...

最新文章

  1. Codeforces Round #694 (Div. 1 + Div2)(A ~ H,8题全,超高质量题解)【每日亿题】2021/2/1、2/2
  2. Oracle TNS 不能启动
  3. Linux里find和grep命令
  4. pytorch 多GPU训练
  5. 传统企业建模原理及建模体系介绍
  6. poj 2255 Tree Recovery 解题报告
  7. 【Quartz】Spring3.2.9 + Quqrtz2.2.1 实现定时实例
  8. 基于JAVA+Swing+MYSQL的在线考试系统
  9. img src SVG使用CSS更改样式
  10. Javascript访问Cookie的四个常用方法
  11. PAIP.FLEX与JAVA数据对应关系.txt
  12. springboot ---微信ocr身份证识别
  13. python flask 路由_Python之Flask 路由与模板语法
  14. Linux搭建小型服务器——文件共享以及邮件服务器
  15. dva学习-入门安装和目录介绍
  16. Photoshop cs8 颜色 查看调出 hsb模式滑块
  17. 【Unity】预计算刚体运动轨迹
  18. Android OTA升级原理和流程分析(五)---update.zip包从上层进入Recovery服务
  19. 【QQ群讨论精华】关于Move,Copy与Referrence
  20. spice仿真1.1

热门文章

  1. Linux系统常见的压缩与打包命令
  2. windows下的vimrc
  3. 【linux】【git】git报错fatal: HTTP request failed
  4. js引用类型和基本类型、隐式类型转换以及强制类型转换面试题
  5. 内存可见性,指令重排序,JIT。。。。。。从一个知乎问题谈起
  6. linux下GPIO的用户层操作(sysfs)
  7. lucene 多字段查询-MultiFieldQueryParser
  8. Compress、tar、gzip、zcat、bzip2、bzcat、打包解压命令行
  9. ios7学习之路七(隐藏虚拟键盘,解决键盘挡住UITextField问题)
  10. jquery几种常用框架比较