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尽可能使整体码率与给定码率相等,因此编码文件大小确定,适合需要精确控制文件大小场景。另外,如果使用一次编码,在画质上不如同等大小的CRF,故一般配合pass参数使用。
QP(Constant Quantizer)固定量化值
需要注意的是这里的量化参值为P帧的量化值。I帧(IDR帧)和B帧的量化值又由ipratio和bpratio参数来确定,不过通常这两个参数无需手动设置。
QP模式相对于压缩前的原视频来说,每一个P帧,I帧,B帧都会固定的损失一部分质量,并且损失判定是固定的。但由于I,P,B帧的插入是不确定的,因此最终文件的大小是无法确定的。当设置为qp=0时将产生无损的画面输出。
CRF(Constant Ratefactor )固定码率系数
如果说QP是固定量化器,CBR是固定文件最终大小,那么CRF则是则是”固定肉眼质量”;因此,CRF可以提供跟QP一样的视觉的质量,但是文件更小。
CRF是通过降低那些“不那么重要”的帧的质量做到这一切的,“不那么重要”意思是过于耗费码率又难以用肉眼察觉的帧,省下来的码率会用在其它更有效的帧里。其实CRF就是一个浮动QP模式,其按照特定的标准,根据人眼的需求,给予每帧不同的QP值。另外,CRF模式无法预测最终文件体积。
因为肉眼对于复杂以及运动场景中的信息不敏感,因此,可以使用更低的码率编码复杂或者高速运动场景;使用更高的码率编码简单或者静止场景,从而获得更好的主观质量。关于CRF更详细的描述参见http://slhck.info/articles/crf
源码编译
X264配置 ./configure --enable-shared --enable-debug --prefix=../vs2008_build/
./configure --enable-shared --prefix=../build/
note:
yasm编译出来的后缀因版本问题与makefile中后缀经常不一致,导致无法编译通过问题。例如:链接时,查找文件的后缀为.o,而yasm编译出来的文件后缀为.obj,可以使用手动方式修改为.o,从而使编译通过。
参考资料
[x264-devel] Making sense out of x264 rate control methods
XSplit Quality, VBV-Buffer, VBV-Maxrate and Preset Settings
The relationship between --vbv-bufsize and --vbv-maxrate
X264编码库使用MinGW-w64编译出来的库,依赖libwinpthread-1.dll,并且在执行x264_encoder_encode函数时,存在长时间未返回的情形,具体原因未分析。暂时使用其他版本的MinGW编译
2016-06-06:X264码率控制的更多相关文章
- X264码率控制总结
ABR,CQP,CRF X264显式支持的一趟码率控制方法有:ABR, CQP, CRF. 缺省方法是CRF.这三种方式的优先级是ABR > CQP > CRF. if ( bitrate ...
- X264码率控制总结1——ABR,CQP,CRF
1. X264显式支持的一趟码率控制方法有:ABR, CQP, CRF. 缺省方法是CRF.这三种方式的优先级是ABR > CQP > CRF. if ( bitrate ) rc_me ...
- (原)理解码率控制模式(x264,x265,vpx)
理解码率控制模式(x264,x265,vpx) 原文链接:https://slhck.info/video/2017/03/01/rate-control.html 翻译:lihaiping1603@ ...
- FFMpeg的码率控制
mediaxyz是一位研究ffmpeg有三年的高人了,这几天一直在折腾ffmpeg中的x264,就是不知道该如何控制码率,主要是参数太多,也不知道该如何设置,在google上search了一下,这方面 ...
- [转载] FFMpeg的码率控制
mediaxyz是一位研究ffmpeg有三年的高人了,这几天一直在折腾ffmpeg中的x264,就是不知道该如何控制码率,主要是参数太多,也不知道该如何设置,在google上search了一下,这方面 ...
- mediaxyz访谈录:ffmpeg的码率控制
mediaxyz是一位研究ffmpeg有三年的高人了,这几天一直在折腾ffmpeg中的x264,就是不知道该如何控制码率,主要是参数太多,也不知道该如何设置,在 google上search了一下,这方 ...
- x264码率控制方法介绍
转自:http://www.bubuko.com/infodetail-471698.html 1. X264显式支持的一趟码率控制方法有:ABR, CQP, CRF. 缺省方法是CRF.这三种方式 ...
- [转载]FFmpeg中使用libx264进行码率控制
1. X264显式支持的一趟码率控制方法有:ABR, CQP, CRF. 缺省方法是CRF.这三种方式的优先级是ABR > CQP > CRF. if ( bitrate ) ...
- h.264码率控制
h.264的码流传输是基于目前有限的网络带宽来进行的,以目前的压缩效率来说,运动不算剧烈.细节不多的影像,在720p的情况下,1000kbps压缩损耗较少(psnr较大),能达到比较好的观赏效果,10 ...
随机推荐
- WCF服务开发与调用的完整示例
WCF服务开发与调用的完整示例 开发工具:VS2008 开发语言:C# 开发内容:简单的权限管理系统 第一步.建立WCF服务库 点击确定,将建立一个WCF 服务库示例程序,自动生成一个包括IServi ...
- NAT模式下用secureCRT连接虚拟机
VMWare制作学习系统,或布置模拟网络群组环境,已经比较流行. 注意主机端口要设置成为不同2122,虚拟机端口设置成22 笔者为了给项目组同事,提供一个练习ssh远程连接操作,及方便抓图交流的环境, ...
- iOS 剪贴板基本知识
在iOS 中下面三个控件,自身就有复制-粘贴功能 1.UITextView 2.UITextField 3.UIWebView UIKit framework提供了几个类和协议方便我们在自己的应用程序 ...
- [Java Basics] multi-threading
1, Process&Threads Most implementations of the Java virtual machine run as a single process. Thr ...
- filter_input() 函数
定义和用法 filter_input() 函数从脚本外部获取输入,并进行过滤. 本函数用于对来自非安全来源的变量进行验证,比如用户的输入. 本函数可从各种来源获取输入: INPUT_GET INPUT ...
- java学习第十一天
第十二次课 目标 一维数组(创建访问) 一.概念与特点 1.概念 相同数据类型的有序集合[] 数组名: 容器的名字 元素: 下标变量,数组名[下标] 长度: length 下标: 位置.索引 ...
- 客户端HTTP断点续传的原理
其实断点续传的原理很简单,就是在Http的请求上和一般的下载有所不同而已. 打个比方,浏览器请求服务器上的一个文时,所发出的请求如下:假设服务器域名为wwww.scu.edu.cn,文件名为down. ...
- 计算std:string的字节长度
如果项目本身是使用 Unicode 字符集和utf8编码,std::string的length(),size()甚至是c的strLen取到的都是字节长度了,比如三个汉字,就是9, 以上情况不满足的话, ...
- H5版俄罗斯方块(2)---游戏的基本框架和实现
前言: 上文中谈到了H5版俄罗斯方块的需求和目标, 这次要实现一个可玩的版本. 但饭要一口一口吃, 很多东西并非一蹴而就. 本文将简单实现一个可玩的俄罗斯方块版本. 下一步会引入AI, 最终采用coc ...
- WOJ-1097
Description JYY has placed N bombs on the plane. We assume that the firepower area of each bomb is c ...