您的位置:首页 > 其它

X264 codec参数相关讲解

2017-08-08 12:18 337 查看
X264 codec相关讲解:



可能有人注意到了我使用的是x264的tmod..何为mod版...就是民间菊苣在官方x264的基础上又自行进行了一些编译修改..提升强化了一部分功能..本帖提供的是taro大编译的x264..故为tmod版本..

前面说到码率是重中之重...

那么通常会见到的码率控制模式有

ABR [ Average Bitrate ](平均目标码率模式)
CBR [ Constant Bitrate ](固定码率模式)
2pass..3pass..npass(二次..三次..n次编码模式..严格来说也属于平均目标码率模式.但其码率浮动较ABR高出不少.)
CRF [ Constant Ratefactor ] (固定码率系数模式)
QP [ Constant Quantizer ] (固定量化值模式)

但x264只提供三种码率控制模式..至于其他怎么搞出来后面再写..
三种模式为:

qp模式...bitrate模式..crf模式

下面挨个解释一下..需要注意的是三种码率控制方法不能共存,有其一不能有另外两个!

qp模式
即为固定量化值(Constant Quantizer)模式来编码视频..需要注意的是这里的量化参值为P帧的量化值..I 帧(IDR帧)和B帧的量化值又由ipratio和bpratio参数来确定..不过通常这两个参数无需手动设置..
简单点说qp模式就是:相对于压缩前的原视频来说..每一个 P 帧 ..I 帧 .. B帧都会固定的损失一部分质量..损失判定是固定的.但由于I P B帧的插入是不确定的..所以最终文件的大小是无法确定的.
设置为qp0时将产生无损的画面输出(输出文件一般会比源文件大出数倍以上)..并且相同视觉质量时..qp模式压出的视频文件比crf模式大..

bitrate模式
即为固定目标码率模式..(固定目标比特率模式)..x264会试图让最终文件的整体码率与给定的码率相等..这会使最终文件的大小是确定的..适用于精确控制体积..但由于这是一次编码..所以画质上不如同等体积的crf..故一般配合pass参数使用.

crf模式
即固定Ratefactor模式..如果说QP是固定量化器,bitrate是固定文件最终大小..那么crf则是则是固定“肉眼质量”..crf可以提供跟QP一样的视觉的质量..但是文件更小..
crf是通过降低那些“不那么重要”的帧的质量做到这一切的~..“不那么重要”意思是过于耗费码率又难以用肉眼察觉的帧....省下来的码率会用在其它更有效的帧里..
其实crf就是一个浮动qp模式..其按照特定的标准..根据人眼的需求..给予每帧不同的qp值 .但玩好crf模式..和aq..psy..qcomp等参数都脱不开关系..后面会讲到~

需要注意的是crf模式无法预测最终文件体积..

-------------------------另一种解释----------------------------------------------------

码率控制
qp
默认值: 未设置
三种可用的码率控制方法之一。以恒定量化值(Constant Quantizer)方式编码。此选项的参数用于指定 P 帧量化值。I 和 B 帧的量化值由 --ipratio 和 --pbratio 控制。CQ 模式的目标是恒定的量化值,这就意味着最终文件大小不可知(尽管能用一些方法预测)。参数 0 表示无损输出。同等的视觉质量下, qp 比 --crf 产生的文件要大。由于固定量化值的缘故,qp 模式会关闭自适应量化。
本选项与 --bitrate 和 --crf 是互相排斥的,就是三选一的意思。欲详细了解码率控制,参见http://git.videolan.org/?p=x264.git;a=blob_plain;f=doc/ratecontrol.txt;hb=HEAD。
可以使用 --crf 代替 qp,不过 qp 模式不需要预分析会更快一些。
参照: --bitrate, --crf, --ipratio, --pbratio

bitrate
默认值: 未设置
码率控制方法之二。以比特率(bitrate)作为目标的编码方式。最终文件大小可知,但最终图像质量不可知。x264 把给定的比特率作为总平均值来作为目标,也就是说每帧的比特率可能不符合给定的比特率,但是总体平均比特率符合给定的比特率。比特率的单位是 kilobits/sec(8bits = 1字节)。需要注意的是 1 kilobit 是 1000 bits,而不是 1024 位。
这个选项常和 --pass 一起用于2遍编码。
本选项与 --qp 和 --crf 是互相排斥的,就是三选一的意思。欲详细了解码率控制,参见http://git.videolan.org/?p=x264.git;a=blob_plain;f=doc/ratecontrol.txt;hb=HEAD。
参照: --qp, --crf, --ratetol, --pass, --stats

crf
默认值: 23.0
最后的码率控制方法:恒定比例因子。(Constant Ratefactor。也叫恒定质量)。qp 的目标是确定的量化值,bitrate的目标是确定的文件大小,crf 的目标是确定的‘质量’。这个概念就是 crf n 能给人以 qp n 相同的视觉质量,仅仅体积小一些。crf 的单位是“ratefactor”。
crf 依靠降低‘不太重要’帧的质量来达到减小体积的目的。在这里,‘不太重要’是指帧包含复杂或高速运动的场景,在这些地方保持与其它地方相同质量的代价很高(即耗费比特)且又缺乏可视性(就是正常播放的时候看不清楚的意思),就增加它们的量化值(量化值越大图像质量越差)。把节省下的比特用到刀刃上。
crf 比2遍编码方式节省时间,因为它少了一次编码。另外,crf 的最终比特率是不可预测的,即文件大小不可知。使用哪种码率控制方式取决于你。
本选项与 qp 和 --bitrate 是互相排斥的,就是三选一的意思。欲详细了解码率控制,参见http://git.videolan.org/?p=x264.git;a=blob_plain;f=doc/ratecontrol.txt;hb=HEAD。
参照: --qp, --bitrate

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  qp bitrate crf pass