搜索 社区服务 统计排行 帮助
  • 3187阅读
  • 23回复

x264命令行编码如何有效控制码率?

楼层直达
级别: 新手上路
注册时间:
2006-11-28
在线时间:
0小时
发帖:
13
x264命令行编码如何有效控制码率?
我是用的是2pass,设定为859kbps,但是最终生成的却有900kbps.为何在命令行下压出来的都比设定的码率要大?用virtualdubmod码率却可以控制得很好!
级别: 新手上路
注册时间:
2006-07-01
在线时间:
0小时
发帖:
18
只看该作者 1楼 发表于: 2006-11-30
x264的rate control准确到变态,先确定encoder真的是有做2pass encode
还有你是用批次档压缩法还是用GUI呢?
前者的话PO一下参数列让大伙研究研究
级别: 新手上路
注册时间:
2006-11-28
在线时间:
0小时
发帖:
13
只看该作者 2楼 发表于: 2006-11-30
x264 --keyint 250 --min-keyint 25 --scenecut 40 --bframes 2 --b-bias 0 --ref 1 --no-deblock --bitrate 859 --qpmin 10 --qpmax 51 --qpstep 4 --ratetol 1.0 --ipratio 1.4 --pbratio 1.3 --pass 2 --stats x264_2pass.log --qcomp 0.0 --partitions i4x4,i8x8,b8x8,b8x16,b16x8,p8x8,p8x16,p16x8 --direct spatial --direct-8x8 -1 --weightb --me hex --subme 6 --mixed-refs --bime --8x8dct --trellis 0 --nr 0 --output x264.264 --progress --threads 1 avs.avs
级别: 工作组
注册时间:
2005-04-23
在线时间:
0小时
发帖:
4259
只看该作者 3楼 发表于: 2006-11-30
b-pyramid<---忘了这个,BF既然都用2了又不用作ref当然精确度下降

Lux Aeterna

过去一直去,未来一直来...
级别: 新手上路
注册时间:
2006-07-01
在线时间:
0小时
发帖:
18
只看该作者 4楼 发表于: 2006-11-30
qcomp 0.0!?
有什么理由要用这样的值吗?
一般都是0.6~0.7左右

qcomp值越低表示越接近comstant bitrate
不过在1pass编码才会把qcomp调这么低吧
2pass编码的话就用预设的0.6,bitrate control交给编码器就行
级别: 工作组
注册时间:
2005-04-23
在线时间:
0小时
发帖:
4259
只看该作者 5楼 发表于: 2006-11-30
引用
最初由 alanzeratul 发布
qcomp 0.0!?
有什么理由要用这样的值吗?
一般都是0.6~0.7左右

qcomp值越低表示越接近comstant bitrate
不过在1pass编码才会把qcomp调这么低吧
2pass编码的话就用预设的0.6,bitrate control交给编码器就行

constant quality和constant bitrate并不等同
事实上越是N PASS就越接近comstant bitrate
假如1st pass走的crf,而且又是qcomp 0.0
那么2nd pass用qcomp 0.0也没什么不对

Lux Aeterna

过去一直去,未来一直来...
级别: 新手上路
注册时间:
2006-07-01
在线时间:
0小时
发帖:
18
只看该作者 6楼 发表于: 2006-11-30
constant quality(crf)是指在一个QP(P-Frame)下去微调以符合所有动态跟静态frame的视觉品质都达到一个水准,这应该没错吧?
所以说CRF虽然QP分配不会像CQP那样P多少、B多少、I多少都限制住,但也不会跳动太多,是吗?
但是n pass编码,QP值就不一定这样分布了吧,往往范围到20几个QP都常有的

一般观念不是constant quality跟constant bitrate是一个天平的两端吗?
而做n pass不就是求取filesize target,何以说"n pass就越接近constant quality"?
级别: 新手上路
注册时间:
2006-11-28
在线时间:
0小时
发帖:
13
只看该作者 7楼 发表于: 2006-11-30
我现在已加上了--b-pyramid,为何2pass后码率还是过高?
级别: 工作组
注册时间:
2005-04-23
在线时间:
0小时
发帖:
4259
只看该作者 8楼 发表于: 2006-11-30
constant quality(crf)是指在一个QP(P-Frame)下去微调以符合所有动态跟静态frame的视觉品质都达到一个水准,这应该没错吧?<----没错,通俗点说画面都一个水准

所以说CRF虽然QP分配不会像CQP那样P多少、B多少、I多少都限制住,但也不会跳动太多,是吗?<----CRF的QP分配取决于你设定的qcomp和MAX MIN QP,会不会跳动太多么,就看怎么设置,MAX MIN QP和I,P,B ratio都限制住的话,就根本不会跳了...囧

但是n pass编码,QP值就不一定这样分布了吧,往往范围到20几个QP都常有的
<------前提条件是只要1st pass走的CRF,2nd pass的QP也可以控制的很好,或者说像你说的不会跳动太多

一般观念不是constant quality跟constant bitrate是一个天平的两端吗?
<---constant quality是一个weight量化,和不管三七21的constant bitrate和constan quantizer哪能放一起讨论,qcomp不同效果就会不同
而做n pass不就是求取filesize target,何以说"n pass就越接近constant quality"? <---复制粘贴错误,囧,我有罪,我改正:越是N PASS就越接近constant bitrate(因为码率越拉越平)

Lux Aeterna

过去一直去,未来一直来...
级别: 工作组
注册时间:
2005-04-23
在线时间:
0小时
发帖:
4259
只看该作者 9楼 发表于: 2006-11-30
引用
最初由 l666666z 发布
我现在已加上了--b-pyramid,为何2pass后码率还是过高?

那就把 adptive b-frame 关了
如果我没记错的话<---年纪大了这种事常有XD
在打开adptive b-frame 的情况下设定的number of b-frame只是一个最大值
关闭adptive b-frame的情况下才会强制使用设定的number

Lux Aeterna

过去一直去,未来一直来...
级别: 新手上路
注册时间:
2006-11-28
在线时间:
0小时
发帖:
13
只看该作者 10楼 发表于: 2006-11-30
谢谢.已经加上--no-b-adapt了,但是2pass后还是有920几kbps.
级别: 工作组
注册时间:
2005-04-23
在线时间:
0小时
发帖:
4259
只看该作者 11楼 发表于: 2006-11-30
引用
最初由 l666666z 发布
谢谢.已经加上--no-b-adapt了,但是2pass后还是有920几kbps.

如果原来的设定不想改动,那就只能增大BF了,用个大点的值,把adapt BF重新用上,用多少让编码器自己去判定吧
2PASS要降码也只能靠BF

Lux Aeterna

过去一直去,未来一直来...
级别: 新手上路
注册时间:
2006-07-01
在线时间:
0小时
发帖:
18
只看该作者 12楼 发表于: 2006-12-01
引用
最初由 realsweet 发布

一般观念不是constant quality跟constant bitrate是一个天平的两端吗?
<---constant quality是一个weight量化,和不管三七21的constant bitrate和constan quantizer哪能放一起讨论,qcomp不同效果就会不同

抱歉,我想说的是bitrate target,也就是我下面讲的filesize target啦,不是constant bitrate,那时po文不知道在想什么..orz

还有你提到的1st pass用crf模式,是接着2nd pass用ABR模式,bitrate用1st pass的结果是吗?
请问这种2pass编码方式的用意是哪些方面呢?兼顾bitrate target跟constant quality?
级别: 工作组
注册时间:
2005-04-23
在线时间:
0小时
发帖:
4259
只看该作者 13楼 发表于: 2006-12-01
引用
最初由 alanzeratul 发布

抱歉,我想说的是bitrate target,也就是我下面讲的filesize target啦,不是constant bitrate,那时po文不知道在想什么..orz

还有你提到的1st pass用crf模式,是接着2nd pass用ABR模式,bitrate用1st pass的结果是吗?
请问这种2pass编码方式的用意是哪些方面呢?兼顾bitrate target跟constant quality?

不是,看来你还是只用ABR来做1st pass ORZ.....
我所指的用crf来做1st pass 关键是要得到CRF的stats,
MEGUI并没有提供CRF输出stats的选项
但是可以自己指定,举个例子,比如在命令行的最后加上--stats "E:\kaiba49\kaiba49.stats" --output "E:\kaiba49\kaiba49.d2v.stats"
这样CRF出来的就会输出stats,这个很重要,不然2PASS没意义,也不叫 2PASS
至于用多少码率,那要看你心中的容量是多少了,也不一定要用CRF的最终码率

顺便说句废话,任何output mode都可以指定输出stats,只要你喜欢

Lux Aeterna

过去一直去,未来一直来...
级别: 骑士
注册时间:
2006-02-13
在线时间:
0小时
发帖:
1020
只看该作者 14楼 发表于: 2006-12-01
Orz……1pass用ABR做囧


──それは、とても小さな
とても大きな とても大切な 愛と勇気のおとぎばなし──
快速回复

限150 字节
上一个 下一个