free077go
帖子: 6
注册时间: 2012-09-25 16:51

crf不适合压高速动态场景吗?

我听说crf不适太多高动态 如果录制的片源比较静态 crf肯定会用很少码率的,crf模式是以牺牲高动态的细节来压低码率 如果使用crf 高动态的细节不但保留的不好 而且会大幅增大码率 得不偿失啊,crf为了保留一些不必要的东西,为了那肉眼根本就很难察觉的细节,会大量牺牲码率,与其这样倒不如用2pass去控制一下,是这样吗?
还是通过我刚学的下面数据密度计算所得到的码率使用2pass bitrate效果更好?
我今天还学习到一个计算码率的方法,求科学家指导:
就用数据密度计算,根据分辨率和画面复杂程度来选取数据密度 然后用数据密度公式算出码率,经验丰富的话 直接估算。
头像
mawen1250
核心会员
核心会员
帖子: 670
注册时间: 2011-07-24 20:33

Re: crf不适合压高速动态场景吗?

LZ知道什么是QP,什么是Rate Factor吗?
LZ知道MB-Tree和QComp是干什么的吗?
LZ觉得实际播放中人眼对静止部分的细节敏感还是对运动部分细节敏感?
LZ知道即使是以码率为目标的rc方式也是尽量在让码率分配结果接近Constant Rate Factor吗?否则为什么有人要用1st pass crf+2nd pass bitrate的方式?
free077go
帖子: 6
注册时间: 2012-09-25 16:51

Re: crf不适合压高速动态场景吗?

mawen1250 写了:LZ知道什么是QP,什么是Rate Factor吗?
LZ知道MB-Tree和QComp是干什么的吗?
LZ觉得实际播放中人眼对静止部分的细节敏感还是对运动部分细节敏感?
LZ知道即使是以码率为目标的rc方式也是尽量在让码率分配结果接近Constant Rate Factor吗?否则为什么有人要用1st pass crf+2nd pass bitrate的方式?
你也是混dwing吧的,你没看到吗,其实我跟那个人说不通,这个神论我专门转过来的。
cunhan
核心会员
核心会员
帖子: 214
注册时间: 2010-09-20 22:09

Re: crf不适合压高速动态场景吗?

转贴要说明啊,否则就要被封神了
头像
mawen1250
核心会员
核心会员
帖子: 670
注册时间: 2011-07-24 20:33

Re: crf不适合压高速动态场景吗?

-->“crf模式是以牺牲高动态的细节来压低码率”
这句话说的是mbtree的作用

--> “如果使用crf 高动态的细节不但保留的不好 而且会大幅增大码率 得不偿失啊”
这句话自相矛盾,越复杂、越高动态的信息越难压缩,同时被别的macroblock参照的价值也越低,给这种区域更高的码率只会增大码率而对PSNR提升非常小。

-->“crf为了保留一些不必要的东西,为了那肉眼根本就很难察觉的细节,会大量牺牲码率”
这句话说的问题就是mbtree来解决的。

当然实际上mbtree的问题也说过很多次了,它并不是按照动态高低来决定qp分配权重的,而是按照一个宏块被参照次数的多少来决定qp分配权重,这种做法对于PSNR的优化可以说作用非常大,但对于实际视觉效果就并不一定了。
主要存在问题的地方是静态高复杂度的区域,视觉上也是较敏感的区域但mbtree的作用导致这种地方qp提高质量降低;另外就是像噪点这种动态高复杂度的东西也会在mbtree作用下难以保留,所以--tune grain是用--qcomp 0.80来削弱mbtree的作用。
理想中mbtree应该作用的区域:如果crf较高,保留静态低复杂度的信息也才刚刚好,那么现在的mbtree就合适;在码率较充足的情况下,如果不需要保留噪点的话理想中mbtree应该只作用于动态区域,如果需要保留噪点的话可以通过各种psy tuning来补偿;在码率充足的情况下,如果要尽可能还原噪点的话理想中mbtree就应该只作用于动态低复杂度区域。
但是目前mbtree依然只能通过rc-lookahead和qcomp的调整来削弱其作用(包括正面与负面),而且在crf较低时很多时候即使--qcomp 0.80也依然在细节保留上感觉不如关了mbtree,于是现在看到越来越多的人都开始--no-mbtree了……就是不知道x264会不会去改进mbtree以提供更多可以调整的东西了。


总结下来目前就是以下4种情况:
1.压片给人*看*的,crf>19开mbtree,根据情况调整qcomp来降低mbtree作用。大部分地方还原度足够(静态低复杂度),一些地方因为mbtree副作用烂掉。
2.压片给人用来对比截图的,crf<20关mbtree,crf<17的情况下追求transparent(肉眼基本看不出与源画面的区别),还有一种情况是8bit下防止banding。以在动态部分浪费大量码率为代价来实现整体画面的高还原度。
3.压出高码率同时还有很多地方烂掉的,crf<17开mbtree。在静态低复杂度部分浪费大量码率,在高复杂度部分欠码。
4.压片给机器的,crf能多低就多低,--preset placebo --tune psnr。不解释……

根据taro大的说法,如果通过改进mbtree能把大部分副作用都解决掉的话也许只要crf=17 no-mbtree一半的码率就能实现transparent。

回到 “视频编码器 / Video encoder discussion”