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 ...
随机推荐
- Unity3D实现摄像机视野的拉远拉近和跟随主角旋转效果
在Unity官网教程SurvivalShooter(恶魔射手)中,只处理了主角跟随鼠标旋转,摄像机视野并没有旋转或通过滚轮实现视野的拉远拉近,一下是我的实现方法. 在教程中,主角的移动是通过 ...
- 设置ASP.NET页面的运行超时时间详细到单个页面及站点
这篇文章主要介绍了如何设置ASP.NET页面的运行超时时间,包括全局超时时间.单个站点超时时间.单个页面请求超时时间,需要的朋友可以参考下 全局超时时间 服务器上如果有多个网站,希望统一设置一 ...
- SQLServer数据库表架构和数据保存成sql文件
一.先在你的mssql数据库中点击“数据库–>任务–>生成脚本” 二.然后我们会看到有“生成和发布脚本”窗口 下一步 三.选择要编写脚本的数据库对象,全部导出选第一个,如果你想导出部分数据 ...
- Android 学习第3课,小例子
package temperature.convert; import java.util.Scanner; public class Converter { public static void m ...
- mac地址泛洪攻击的实验报告
案例介绍: PC A 访问 本网络的一台FTPserver主机,中间人进行arp的投毒,获取PC-A和FTPserve之间的回话记录,截获用户名和密码. 实验拓扑:
- 关于在win7内集成usb3.0驱动。
mac air 装了win7但是折腾良久还是无法升级,只能是重新安装. 很蛋疼.bootcamp 老是找不到驱动.只能是手动分区后U盘引导安装. 驱动的下载,直接在Os x 下用bootcamp 下载 ...
- uva 10622
http://vjudge.net/contest/140673#problem/H 求某个数字(最大到10^9,可为负值)写成完全p次方数的指数p是多少 分析: 先进行唯一分解,之后p整除各个素因子 ...
- Oracle、MySql、SQLServer 数据分页查询
最近简单的对oracle,mysql,sqlserver2005的数据分页查询作了研究,把各自的查询的语句贴出来供大家学习..... (一). mysql的分页查询 mysql的分页查询是最简单的,借 ...
- (转)【重磅】无监督学习生成式对抗网络突破,OpenAI 5大项目落地
[重磅]无监督学习生成式对抗网络突破,OpenAI 5大项目落地 [新智元导读]"生成对抗网络是切片面包发明以来最令人激动的事情!"LeCun前不久在Quroa答问时毫不加掩饰对生 ...
- mysql 主从 重新同步
mysql 主从同步一担出了问题之后,就会导致从库上的数据和主库不一样了.所以需要生新同步数据. 1.登录主库服务器,进入mysql,命令为:mysql -uroot -ppassword 2.执行: ...