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

[请教]请问一下Bframe和ref的具体选择方法及对影片压缩比,画质等的影响....

楼层直达
级别: 侠客
注册时间:
2009-02-15
在线时间:
16小时
发帖:
221
对这两个参数一直是似懂非懂,大概原理作用倒是明白但完全是皮毛,而对比过不同字幕组同一或者类似类型的片子,这两个参数选取差别也很大(差不多从2-16都见过......);这两项具体对压缩比、画质以及解码难度方面的变动还是不太清楚,哪位能给详细点说一下或者给点资料?谢谢了,之前自己的资料都是点到即止一句带过没细谈........

级别: 新手上路
注册时间:
2007-05-07
在线时间:
1小时
发帖:
447
只看该作者 1楼 发表于: 2009-08-10
首先要明确的就是GoP的概念,这是MPEG视频编码基本中的基本
http://zh.wikipedia.org/wiki/%E5%9C%96%E5%83%8F%E7%BE%A4%E7%B5%84

ref是最大允许的参考帧数目
AVC相对之前的视频编码一个很重要的改进就是加入了多重参考帧。相比之下传统的视频编码中P帧只能参考1个帧,B帧只能参考2个帧。在某些情况下甚至可以参考到前一个GoP中的帧(但事实上x264几乎不会输出非IDR帧的I帧,除非场景变换的帧数小于min-keyint)。
加大ref可以在某种程度上提升质量,但过多的参考帧意义并不大,相反会严重影响硬件解码器的解码兼容性,所以AVC的level对参考帧数目进行了限制。对high4.1来说这个限制(DBP)为8388608 / (Height X Width) = nREF。

据说以前的x264在打开--b-pyramid的时候ref要-1才符合DPB的限制,而现在似乎修复了这个问题。我是N卡,无从测试。

个人认为没必要为一点压缩率牺牲兼容性,可以在x264的命令行的最后加入--level 3.1(SD)/4.1(HD)来限制ref,但是x264对level的计算似乎并不是那么完美。
需要注意的是如果你把--level写在--ref的前面话,--ref会把--level所限制的ref设定覆盖。

至于--bframes,这个参数会影响x264是否使用b帧和连续使用B帧的数目。由于B帧的压缩率很高,几乎没人会设成0。当--b-adapt 1的时候,--bframes从1-16似乎对速度没多少影响。当--b-adapt 2的时候,--bframes加大会极大的影响速度,一般来说3-6比较合适,再多的话基本只是徒劳降低速度。除非你很纠结于速度,否则还是用b-adapt 2比较好。
如果在first pass的时候使用了b-adapt 2,2nd pass的时候可以用b-adapt 0来提升速度。




以上内容全部基于我自己的理解,经验有限,错误之处肯定不少,望指正
级别: 骑士
注册时间:
2003-06-05
在线时间:
0小时
发帖:
1041
只看该作者 2楼 发表于: 2009-08-10
这两个参数越大,同crf下,文件可以压得越小,同码率下,画质可以更高。

如果考虑硬解的话,并不推荐开太高,不考虑硬解的话只要电脑够劲,全开当然最好了^O^
级别: 精灵王
注册时间:
2008-04-08
在线时间:
44小时
发帖:
2855
只看该作者 3楼 发表于: 2009-08-10
x264现在默认参数是ref = 3, bframe = 3, b_adapt = 1, 关b_pyramid

真人片的话,这个参数不仅保证Level不超过4.1,而且压缩率上不吃亏。即使用ref 16 + b16,我敢说相对r3 b3能节省的码率不会超过1%。

二次元动画,ref = 6 + bframe = 4~5 + b_adapt = 2也就够了,当然如果考虑DXVA兼容性,对于1080P的需要用ref = 4。

据说很多解码器(软硬都有)对于b_pyramid支持有问题,而且是在看不出b_pyramid对于画质有什么帮助,所以我推荐别用。b_adapt 1/2对于真人片差别很小,对于动画可能有比较大的差别,具体哪个好我没仔细比较过。
级别: 侠客
注册时间:
2005-12-22
在线时间:
0小时
发帖:
497
只看该作者 4楼 发表于: 2009-08-10
LZ目前除了T12还有哪些MP3在用啊,分享一下

级别: 侠客
注册时间:
2009-02-15
在线时间:
16小时
发帖:
221
只看该作者 5楼 发表于: 2009-08-11
非常感谢几位热心讲解,再追问一句能否简单一点的表述IDR帧跟I帧的区别?之前看过的资料完全不明白.....感觉上像是给特殊专业有基础的学生看的.....

级别: 新手上路
注册时间:
2007-05-07
在线时间:
1小时
发帖:
447
只看该作者 6楼 发表于: 2009-08-11
引用
最初由 辉耀 发布
非常感谢几位热心讲解,再追问一句能否简单一点的表述IDR帧跟I帧的区别?之前看过的资料完全不明白.....感觉上像是给特殊专业有基础的学生看的.....

其实这个问题我也被困扰了很久,不过现在应该能给出个明确的答复了

AVC的多重引用帧使得P帧在理论上可以引用上一个I帧之前的帧,而IDR帧之前的帧是没办法引用,但是就x264的设计而言,只要符合min-keyint设定的的I帧都会成为IDR帧,就算因为该设定出现了非IDR帧的I帧也不会有实际意义,官方的x264没有设计跨I帧引用。
级别: 精灵王
注册时间:
2008-04-08
在线时间:
44小时
发帖:
2855
只看该作者 7楼 发表于: 2009-08-11
I帧表示该帧解码不需要依赖其他帧解码后的数据
IDR帧也是I帧,但还要加个条件,IDR之后的所有帧都不能依赖IDR帧之前的帧。

所以,IDR帧可以用来作索引,而非IDR的I帧虽然自身的解码不受影响,但之后的帧在快进后解码会有问题,无法作索引。
级别: 新手上路
注册时间:
2006-03-01
在线时间:
0小时
发帖:
106
只看该作者 8楼 发表于: 2009-08-11
個人覺得ref3+b3就可以
如果將ref16+b16花費的時間放在更高的me/subme上會更好
不知這個提議如何...
级别: 工作组
注册时间:
2003-08-26
在线时间:
13小时
发帖:
6600
只看该作者 9楼 发表于: 2009-08-11
ref3+b3足够了,剩下的时间,找个妹子去吧…… make love or warcraft

催片请点此处: http://bbs.popgo.org/bbs/read.php?tid=502402&displayMode=1#19103164
级别: 骑士
注册时间:
2003-06-05
在线时间:
0小时
发帖:
1041
只看该作者 10楼 发表于: 2009-08-11
喜欢睡觉挂机压片的设高点也无妨 ^O^ 我就是睡觉挂机压片党。
级别: 骑士
注册时间:
2006-09-22
在线时间:
0小时
发帖:
965
只看该作者 11楼 发表于: 2009-08-11
讨厌睡觉挂机的路过...

级别: 精灵王
注册时间:
2008-04-08
在线时间:
44小时
发帖:
2855
只看该作者 12楼 发表于: 2009-08-11
睡觉挂机的可以写个死循环n pass,pass2完了pass3,pass3完了pass4,起来了ctrl+c掉就可以
级别: 新手上路
注册时间:
2006-03-01
在线时间:
0小时
发帖:
106
只看该作者 13楼 发表于: 2009-08-11
本人是睡覺,上學,外出掛機壓片黨
级别: 骑士
注册时间:
2003-06-05
在线时间:
0小时
发帖:
1041
只看该作者 14楼 发表于: 2009-08-11
嗯嗯 不用盯着看的感觉才是最好的。
快速回复

限150 字节
上一个 下一个