1 标准对比
MPEG(mpeg1,mpeg2,mpeg4) 与H264 QP值间 关系。
x264vfw 的1pass 是按照
I q:21
P q:24
B q:26
的量化算的,而且在vfw里面不能改变这些参数.
但在mencoder里则可以定义1pass的 qp_constant=<1−51>
这个和xvid不同的,xvid一般是用q2跑1pass的,当然你也可以在x264设置一下,但是要清楚的是 H.264 的 量化参数和 Xvid 的是不一样的.
也就是说H.264 的 Q2 不等于 Xvid 里的 Q2
以下引用MPlayer的说明档简单介绍H.264 的量化值和MPEG的大致关系:
Note that quantization in H.264 works differently from MPEG-1/2/4: H.264’s quantization parameter (QP) is on a logarithmic scale. The mapping is approximately H264QP = 12 + 6*log2(MPEGQP). For example, MPEG at QP=2 is equivalent to H.264 at QP=18.
引用 https://www.iteye.com/blog/xpp02-1785000
2 具体细则
#include<iostream>
#include <bits/stdc++.h>
using namespace std;
int main() {
cout<<"QP(mpeg4)"<<" "<<"QP(h264)"<<endl;
//mpeg4标准的qp值,取值范围为[1,31]
//h.264标准下的QP值取值范围为 [0,51],同h.265
for(int qscale = 1;qscale<=31;qscale++){
//mpeg4标准的qp值换算为h.264标准下的QP值的计算公式
int res = 12 + 6 * log2(qscale / 0.85);
cout<<" "<<qscale<<"\t "<<res<<endl;
}
return 0;
}
通常,试验标准为H.264下QP={22,27,32,37},因此对应的mpeg4标准下QP = {3,5,9,16}