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 rate control modes

windows环境下编译最新的x264库

MinGW-64下载

X264编码库使用MinGW-w64编译出来的库,依赖libwinpthread-1.dll,并且在执行x264_encoder_encode函数时,存在长时间未返回的情形,具体原因未分析。暂时使用其他版本的MinGW编译

2016-06-06:X264码率控制的更多相关文章

  1. X264码率控制总结

    ABR,CQP,CRF X264显式支持的一趟码率控制方法有:ABR, CQP, CRF. 缺省方法是CRF.这三种方式的优先级是ABR > CQP > CRF. if ( bitrate ...

  2. X264码率控制总结1——ABR,CQP,CRF

    1.  X264显式支持的一趟码率控制方法有:ABR, CQP, CRF. 缺省方法是CRF.这三种方式的优先级是ABR > CQP > CRF. if ( bitrate ) rc_me ...

  3. (原)理解码率控制模式(x264,x265,vpx)

    理解码率控制模式(x264,x265,vpx) 原文链接:https://slhck.info/video/2017/03/01/rate-control.html 翻译:lihaiping1603@ ...

  4. FFMpeg的码率控制

    mediaxyz是一位研究ffmpeg有三年的高人了,这几天一直在折腾ffmpeg中的x264,就是不知道该如何控制码率,主要是参数太多,也不知道该如何设置,在google上search了一下,这方面 ...

  5. [转载] FFMpeg的码率控制

    mediaxyz是一位研究ffmpeg有三年的高人了,这几天一直在折腾ffmpeg中的x264,就是不知道该如何控制码率,主要是参数太多,也不知道该如何设置,在google上search了一下,这方面 ...

  6. mediaxyz访谈录:ffmpeg的码率控制

    mediaxyz是一位研究ffmpeg有三年的高人了,这几天一直在折腾ffmpeg中的x264,就是不知道该如何控制码率,主要是参数太多,也不知道该如何设置,在 google上search了一下,这方 ...

  7. x264码率控制方法介绍

    转自:http://www.bubuko.com/infodetail-471698.html 1.  X264显式支持的一趟码率控制方法有:ABR, CQP, CRF. 缺省方法是CRF.这三种方式 ...

  8. [转载]FFmpeg中使用libx264进行码率控制

    1.  X264显式支持的一趟码率控制方法有:ABR, CQP, CRF. 缺省方法是CRF.这三种方式的优先级是ABR > CQP > CRF. if ( bitrate )       ...

  9. h.264码率控制

    h.264的码流传输是基于目前有限的网络带宽来进行的,以目前的压缩效率来说,运动不算剧烈.细节不多的影像,在720p的情况下,1000kbps压缩损耗较少(psnr较大),能达到比较好的观赏效果,10 ...

随机推荐

  1. 解决SSH会话连接超时问题

    用SSH客户端连接linux服务器时,经常会出现与服务器会话连接中断现象,照成这个问题的原因便是SSH服务有自己独特的会话连接机制.记得在一年前就有朋友问过我这个问题,那时候我便是草草打发,结果自己现 ...

  2. SPFA算法学习笔记

    一.理论准备 为了学习网络流,先水一道spfa. SPFA算法是1994年西南交通大学段凡丁提出,只要最短路径存在,SPFA算法必定能求出最小值,SPFA对Bellman-Ford算法优化的关键之处在 ...

  3. 安装生物信息学软件-MetaPhlAn2

    上周20161021-20161028的任务还没有搞完,所以今天来填坑(微笑脸) ××××××××××××××××××××我是萌萌哒分割线××××××××××××××××××××××××××××××× ...

  4. 如何在程序里模拟在cmd里用管理员权限运行一条指令

    转自csdn的yangw150,zhao4zhong1 转自http://www.cnblogs.com/del/archive/2008/02/13/1068229.html http://blog ...

  5. mac 下配置protobuf 3.0 golang环境

    protobuf 3.0  与 之前的 protobuf 2.6 的语法是不一样的.需要重新安装一下,本机的环境是 OS X Yosemite  10.10.2 1. 不采用home brew安装,用 ...

  6. UIImageView变灰

    1.UIImageView圆角 CALayer *l = [cell.imgAvatarImage layer]; [l setMasksToBounds:YES]; [l setCornerRadi ...

  7. Multiply game_线段树

    Problem Description Tired of playing computer games, alpc23 is planning to play a game on numbers. B ...

  8. Objective C运行时(runtime)技术的几个要点总结

    前言:          Objective C的runtime技术功能非常强大,能够在运行时获取并修改类的各种信息,包括获取方法列表.属性列表.变量列表,修改方法.属性,增加方法,属性等等,本文对相 ...

  9. unix exec族函数 关于参数的疑惑

    问题不出在这几个函数,而在于看后文解释器的时候发现一个很奇妙的问题. #include <unistd.h> int execl(const char *pathname, const c ...

  10. turn.js 图书翻页效果

    今天用turn.js 做图书的翻页效果遇到问题: 图片路径总是出错 调了一天,总算调出来了 我用的thinkphp,其他的不知道是不是一样 三 个地方要改动: 1.后台查出地址 注意的地方:1.地址要 ...