【求指教】同参数压制,两个片段中的同一帧(i帧)画质不一样
dwing吧
全部回复
仅看楼主
level 14
ilovefifa11 楼主
同参数同crf压制同样的两个片段,第一个片段58帧,第二个片段59帧是在第一个片段最前面加了一帧。然后,
比较同一帧(i帧),它是第一个片段的第1帧,第二个片段的第2帧。虽然压制参数相同,但明显能看出第一个片段的截图画质好于第二个片段。小弟对于i帧的理解有限,特此求解。
2017年04月04日 10点04分 1
level 13
我试过两次压同个50M视频,出来完全一样的
2017年04月04日 13点04分 2
level 6
crf要尽量省码率,利用视觉感知掩蔽特性,观众能定睛看细节的低动态scene就必要用低qp即高量化精度,低失真度,高码率。观众不能定睛看细节的高动态scene就没必要用低qp,和前者相反,省码率
你的片段2的第1帧应该是和第2帧很不同,不属于同一镜头,于是第2帧为scenecut,i帧,但由于判断为高动态性(短短前2帧时域内的scenecut),虽然和片段1同样crf值(=平均qp值),但片段1的第1帧用的qp值一般会比平均qp值低(至少不高于),片段2的第1帧用的qp值由于高动态性则可以提高压缩率则一般会比平均qp值高(至少不低于),而相邻帧qp值的差距一般很小,所以片段2的第2帧失真度会比片段1的第1帧失真度要高
2017年04月09日 08点04分 3
或者简单说,片段2的动态性高于片段1(感谢片段2前2帧内就有scenecut),因此片段2的qp不值得像片段1的qp那么低
2017年04月09日 08点04分
@edogoku 谢谢你的回复。我后来又想了一下,觉得问题可以一般性的表述为:AB代表两个GOP组,AB分别单独压制的效果会好于AB连续压制,这就是我前面的例子,第一段58帧代表单独压B,第二段59帧代表连续压AB,第一段的B好于第二段的B。
2017年04月10日 12点04分
@edogoku 我发现x264和x265都有这个问题,也就是后续i帧(GOP)劣化的问题。每个gop单独压制就能保证高质量,这类似于断点续压。不知道是否有单独压制每个gop再合并的方法?
2017年04月10日 13点04分
level 6
以下语死早废话多。
其实简单总结还是喜欢那句:给定crf值下,人能分辨得多的crf压缩得少,人能分辨得少的crf压缩得多。
给定crf值下,人能仔细分辨的低动态(长时域的少量运动变化),crf压缩得少。人不能仔细分辨的高动态(短时域的大量运动变化),crf压缩得多。
更完整的类似静止图像jpeg压缩理解:人能仔细分辨的高细节少平坦区域等(例如所有相邻像素值大不相同),在所设质量下压缩得少(或说对于该质量来说没办法压缩得多,省不了存储空间)。人不能仔细分辨的低细节多平坦区域等,在所设质量下压缩得多(或说对于该质量没必要压缩得少,浪费存储空间)
主要就是三个不能分开说:媒体内容、体积(传输速率)和压缩质量(失真度,数学的评测和人主观的评测,听觉视觉等)。
同样内容,体积和质量成正相关关系。同样体积,内容的复杂度和质量成反相关关系,例如给定体积很小,那么内容越复杂,质量越低。同样质量,内容的复杂度和体积成正相关关系。
【以上是总结句。嫌麻烦可不看以下】
1.一个帧序列的高动态性的定性含义:短时域(例如几十帧)内的画面内容大幅度不同(通过同一场景内的运动估计和场景变换检测等判断得出高速运动或镜头切换数目较多)。
时域越短,同时物体运动变化越大或镜头切得越多,则越高动态性(时域相关性小),人眼越没办法重视细节,因此可以提高压缩率省码率
因此接你3楼中表述,并不完善,应该是这样
2.如果片段2的A是连续多帧全是不同场景差异大的,甚至各场景都是灰度图啊低饱和度啊细节很少啊平坦区域多的啊之类的(帧内空域相关性就更大则压缩率更高则qp更大,否则既没利用 人眼没办法重视高动态性的细节 来省码率,而又由于高动态性导致pb帧的预测残差较大还更耗费码率,此消彼长),
【那么片段2的B会比片段1的B更差】
3.如果片段2的A是连续几百帧的同一场景并且细节很多而又低动态的物体没怎么运动的(人眼能一直定睛分辨细节和慢速运动,不方便搞太高的失真度是不,则qp要小。但是自然的pb帧的预测残差很小接近0那么用的编码位数就少就可大幅压缩),
甚至在片段2的B的首帧之后插入该首帧的一连多帧重复,使其动态性更低,时域长而画面内容相同嘛,
【那么片段2的B会比片段1的B更好】
4.假设有另一种编码模式叫anti-crf,和crf相反,高动态而又低细节的用qp小的,则耗了很没必要的码率因为对这种动态的视觉感知和qp大的一样。低动态而又高细节的用qp大的,则欠码率因为对这种动态的视觉感知和qp小的一样
以上是极限法举例和反例法。辩证权衡地看,编码一段实际均动态性一般或至少不高的视频,
1.gop均长如果用户设很短,则虽然i帧多了size大了【耗大量体积】,但pb由于gop很短即和i很近则变化很小则可大幅压缩【省体积】,并且频繁切换gop也就是频繁scenecut判断为高动态性也导致均qp较高也就【省体积】。
2.gop均长如果用户设很长,则虽然i帧少了size小了【省大量体积】,但pb更多则pb所跨过的变化更大则没能压缩得太多则【耗体积】,并且稀疏的scenecut判断为全片的低动态性也导均qp较低也就【耗体积】。
从以上两点的此耗彼省来看,虽然预测编码时判断视频的实际scenecut不能100%保证正确(一般视频一般编码复杂度的话也99%了)导致少数gop长度合理性较低,但毫无妨碍,crf很好地控制了体积和动态失真度的平衡,
也就是在用户设定crf值(均qp)以后,很好地 维持视觉质量稳定在所设crf值 而又尽力省了码率不浪费,通过这样的方法:高动态性用高qp省码率而其视觉质量尽力维持在均qp(或察觉不了的稍高),低动态性用低qp使其视觉质量也尽力维持在均qp(或察觉不了的稍低),在省码率的前提下使视觉感知的视频质量(动态失真度)稳定
crf的qp是自适应量化,以 针对该编码视频的内容特性的动态视觉质量稳定 为衡量,在给定某输入crf值下利用了一切可利用的(帧内帧间相关等)来合理确定各qp其目的在于省码率
cqp是关闭自适应量化,以 单独各帧的视觉质量稳定 为衡量,在给定某输入cqp值下没有利用动态视觉感知来省码率,对各qp的确定是计算机视觉的角度而非人眼感知动态性的角度,不合适于视频压缩的最省码率。当然,编码复杂度自然不同了
abr给定速率,不知道用什么qp啊,qp的确定是靠速率控制的目标比特分配,以 均速率稳定 为衡量,在给定某输入码率值或一套码率设置方案下只能将视觉质量的波动控制在一定范围内(qp直接相关于所设码率),设qp失真度为d,码率为r,则利用一定的模型r(d)函数以及缓冲机制vbv等,据r求得d的波动范围
2pass就是abr的一种(给定速率,质量不可知),只是其确定qp的方法在abr原方法上再满足crf原理(高或低动态用较高或较低的qp以合理省码率)。
在pass1时跑abr据给定均码率r求得失真度d的波动范围(即用qp衡量),在pass2时跑crf,只是其qp的确定还要限定在pass1时得到的可取范围内,而不是像crf模式一样qp的确定是基于用户给定的crf值
因此同样作为给定码率的模式,2pass相比abr的优点是各qp满足crf原理,也就是码率的分配原则利用了crf,同帧序列的高动态用码率比abr低,低动态用码率比abr高,符合动态视觉质量稳定。代价是编码复杂度和用时等。
作为对视频编码的不同衡量模式,2pass相比crf的优点(给定速率)就是crf的缺点,2pass相比crf的缺点(质量不可知)就是crf的优点,代价也是编码复杂度和用时等。
如果2pass跑出来的均qp输入到crf来跑来比较,或crf跑出来的均码率输入到2pass来跑来比较,在明显高动态或低动态scene的动态视觉质量稳定程度应该不同,2pass是精确速率作为大纲,crf是动态视觉质量稳定作为大纲
另外作为有损压缩的关键参数,量化精度qp,和画面、视频特性等内容密切相关,应理解为对于该特定内容复杂度的画质或失真度,不同内容复杂度的则其取值平衡不同,通俗点说就是好不好压缩。
假设给定一个视觉质量(均qp),A片段的内容复杂度很高(空域时域相关性小,变化大)很难压缩(很难用小体积容纳大复杂度),B片段的内容复杂度很低很好压缩(用大体积容纳小复杂度的没必要浪费),那么理应 A的均qp≤给定的均qp≤B的均qp,但 A的视觉质量=给定的视觉质量=B的视觉质量
以上模式和其他媒体的编码类似,离不开压缩的关键:根据可接受时延等各种实时非实时的场合需求或软硬件以及实现的编解码复杂度等,确定所需传输速率和质量的平衡。编码器用给定的速率来确定质量,还是用给定的质量来针对具体内容来编码,速率不可知(任何该质量所需要的,少了则达不到该质量,多了则浪费)。当然,编解码的设计和使用也离不开内容、体积和质量三者相关的大量经验和数学模型
如果你想单独压每个gop再合并,各封闭式gop是依赖idr的也就是依赖某设定编码复杂度下的检测某视频实际scenecut,那就pass1跑出所有idr再zones或qpfile分段设参数了
试着调节qcomp,ipratio等也可以,但一般建议动态性在常见范围内的视频用默认
人看视频,是看以一定帧率连续播放的帧序列形成的动态,而不是逐帧当图片慢慢看静态,我们说的 视频质量 也是指 动态失真度 而非对比单帧失真度。最重要的还是经济省传输和减少没必要的浪费
看片段1和片段2,对动态的视觉感知应该是一样的,片段2的首帧和第2帧不是同一镜头所以瞬间一闪,使人察觉不出第2帧和其后帧的失真度其实要比片段1的要高,认为是相同,所以必须提高失真度省码率
单独静态地看片段2第2帧和片段1第1帧,甚至对比,自然察觉出其失真度不一样
2017年04月11日 11点04分 4
太感谢了,很有启发,信息量很大我慢慢理解[哈哈]
2017年04月11日 23点04分
高手[真棒]
2017年04月12日 00点04分
level 9
牛❌,高手中的高手!!
2017年04月15日 02点04分 5
1