[SilkyBible] XviD系列-22
来源:互联网 发布:java 获取ip 端口号 编辑:程序博客网 时间:2024/06/11 15:12
非常抱歉.. 图真的大了一点,因为我想大一点看得比较清楚。
建议还是抓下来用 ACDSee 切换着看,会更清楚。
1. 是的,码率大概 2000kbps 左右,这一段实在不太好压。
视觉品质和码率其实没有太大关系,如前所述,好压的片段 400kbps 便已足够,难压的片段 4000kbps 还是压缩瑕疵满天飞,在 PSNR 40 几 dB 的情况下,没道理说因为绝对码率是 2000kbps,所以 DivX 或 XviD 的视觉观看品质就不会输得太离谱
顺便说明一下,做 848x352,是因为 720x480 clip-> 704x480 resize-> 854x480 clip-> 848x480
再把上下的黑边切掉,就是 848x352。
这么做的目的是,我们 resize 的时候,最好要保持一个方向的分办率不要动到,例如
720x480 -> 704x480 -> 704x396
这样是保持水平分办率没有 resize。
然而影响视觉品质比较大的,是垂直的分办率,垂直最好不要动到,保持水平分办率和保持垂直分办率相比,保持垂直分办率所带来的视觉效益比较大,所以 16:9 讯源做成 AVI,最好的品质就是 848x480。
上面的切边法其实比例不太精准,是以 PAR 10:11 来计算的,要做到完全精准
720x480 clip-> 711x480 resize-> 864x480 clip-> 848x480
因为
704*10/11 = 640
640*9/16 = 360
640x360 是 16:9
360*4/3 = 480
所以高度要维持 480,水平要跟着乘上 4/3
640*4/3 = 853.333333333333333333333333333333 ~=854
同理
711*72/79 = 648
648*4/3 = 864
由于 Avisynth 使用 YV12 or YUY2,不能切出 711 的分办率,所以不能用上述的精准算式。
如果你是用 TMPGEnc 或 AviUtl,就可以切 711。
有人这么做的吗?
当然有,就是教我这个方法的 sswroom 兄
2. 色彩丰富....,您给个画面做示范,我找找
其实 chroma 应该并不难压,压出来的 PSNR 都很高,而且影响不大。
因为大部分 codec chroma 是不做动作搜寻的,直接就是拿 luma 找出来的 MV 除以二,所以其实 chroma 根本没动作,也由此可见 chroma 的不重要 ^^;
应该很少会出现单独 chroma 烂掉的情况,通常 chroma 烂掉,代表着 luma 已经先完蛋了,因为 luma 比 chroma 实在要难压很多。
比较容易注意到的 chroma distortion,反而是后续的 chroma upsampling,例如现在的 Xvid DShow Filter 解码默认输出是 YUY2,找一个红色的物体来看,会出现明显的锯齿,要强制输出为 YV12,如果你的显示卡硬件支持 YV12 够好的话,输出 YV12 由硬件做 chroma upsampling 会漂亮很多。
还有 YUV->RGB,如果 codec 转换式的精度比较低,直接由 codec 输出 RGB 就会产生差异,例如色偏。当然在实际观看时 codec 是不会输出 RGB,而会使用 YUV Overlay,例如 DDraw YV12 Overlay。除非你和 sswroom 兄一样,看片都是切换到 640x480 RGB 输出 ^^;;
3. 成见啊,其实我对 WMV9 没有什么成见,我还时常帮 WMV9 说话,例如我说
「其实 WMV9 在高码率下画面并不会糊,有些地方甚至比 XviD 清晰」
「如果要拿来做为下一代高画质媒体的压缩标准,WMV9 或 VP6 应该比现行的 MPEG-4 要适合,因为 MPEG-4 原始的目标并不是在这么高码率的应用上」
而且我说这些话的那时都没有加上但书,第一点的前提是 XviD 要自废武功不能用 Qpel,第二点的前提是不包括 Studio Profile 或者 MPEG-4 AVC(H.264),这样说起来我应该算是偏袒 WMV9
其实我用字遣词的时候,都很小心,有些东西没有时间长篇大论地深入说明,不过在提的时候,用字都有一些深意 例如前面我说 WMV9 的 2-pass 有问题,我故意一直强调 WMV9 VCM Codec 的 2-pass 有问题,为什么要突然写这么长的赘字,"WMV9 VCM Codec" 这样啰唆? :P
因为那些测试代表的是 WMV9 VCM Codec 这个 Encoder 的表现,不代表 WMV9 这一整个"规格"的表现,也许微软故意把 VCM Codec 做得很烂呢? :P
VCM Codec 是这样的表现,不代表将来可能出现的硬件 WMV9 Encoder 也是这样的表现,不代表 WMV9 规格就只能做到这样,所以如果 WMV9 会成为下一代高画质储存媒体例如 HD-DVD/Blue-ray DVD 采用的压缩标准,也不用为它的表现担心。
因为微软在这方面(视讯压缩)确实是很强的,有多少技术是由他们的人员提出的,搜寻一下中国的微软网站就知道 第一个实作出来具有实用性的,率先实践 MPEG-4 部分压缩理论的「类似 MPEG-4 的 Encoder」也是他们做的(MS MPEG-4 V1~V3),微软在这方面的技术和实力确实是无庸置疑的,我对他们很有信心
所以我对 WMV9 没有偏见,相反的,我对它抱持很高的期待。
对 RV10 有偏见却是真的 ^^; :P
因为我实在不能忍受整个画面糊掉的结果,对我来说这种结果对画面的破坏,比线条旁边的 ringing noise 或者 block artifact 更令我难以接受。
ringing 或 block 用品质好的 de-ring 或 de-block filter 来消除,画面还不会像 RV10 那么模糊。
如果目标是压低码率的影片(通常我不会压这种东西,除非是随便作给别人看一看,自己不看的东西 :P),那么当然我也会选 RV10,不过上到中高码率,细节还是删除那么多,这样实在令我无法接受。
说到 RV10 或者 WMV9 codec 比较聪明,在低码率会自动删除细节,减少重大的压缩瑕疵,其实这点只要在 codec 里面加上 in-loop filter 就可以做到,非常简单。那么为什么 DivX 或者 XviD 不做?因为
1. MPEG-4 规格不允许 in-loop filter 这种东西
2. XviD 和 DivX 的目标码率都不是会需要用到 in-loop filter 的码率,如果你需要用到 in-loop filter,很抱歉,这两个 codec 很笨,使用者自己必须要聪明,知道在这种码率要求下,该换别种 codec 了
所以我说,每种 codec 有不同特性,知道特性以后,根据自己的需求,或者喜好,选择适当的 codec 来用
事实上我有注意
上面的测试中没有提出是因为低值区间大家都很烂,PSNR 最低的 codec 也没有特别烂到哪里去 :P
(大家都曲线都一样,好压的地方一起压得好,难压的地方一起压得烂)
在另外的测试中,确实有些 codec 会出现特别低的 PSNR 区间和其它 codec 不同,有时候这些特别低的 PSNR 区间确实画面很烂,例如 WMV9 VCM Codec 2-pass 的最后段,但是也有时候 PSNR 特别低的区间看起来视觉品质不会差太多,因为这些特别低的地方,可能是
1. 画面的结构特性,是那种 PSNR 低也看不出来有明显压缩瑕疵的画面,材质太复杂
2. PSNR 低是因为 B-frame,B-frame 的 PSNR 低,不一定会出现明显的压缩瑕疵
3. PSNR 低是因画面上有些部分的数值差异大,但是这些数值差异并不是明显压缩瑕疵
例如画面由一个场景经过经过淡出快速转入另一个场景,中间有接近全黑的转场画面,如果 Encoder 在这里有插一张 I-frame,会重设误差,后面的像素值,颜色会很正确,如果 Encoder 认为不需要插 I-frame,后面的像素值,因为少了重置的关系,一开始误差会稍微大一点,但是这种数值上的误差,并不会产生重大压缩瑕疵(例如画面所有像素亮度值都减一),实际上看的时候,我们根本不会察觉差异,但是 PSNR 却会比较低。
以上是一个举例的情况,有时候会出现这种现象。
4. PSNR 低只有一张画面,随后立刻回升,低的那一张虽然有重大瑕疵,但是是在画面变动极大的地方,所以一般人不容易察觉。
不过这招对我认识的一些人无效,他们看影片的时候,不是看一个连续的画面,影片是像一张一张图片般地输入他的脑中,他眼中看到的是一秒 24 张的静态图片。
跟这些人看片很痛苦,因为看到剧情正精彩的时候他会突然倒回去,暂停,然后跟你说「你看,这个地方有压缩瑕疵」,一部二小时的电影跟他看要五六个小时.... XD
手动 IVTC 做久的人就会这样,1/24 秒的画面上那个地方有什么小瑕疵他都看得一清二楚 ^^;;
所以有时候 PSNR 最低的地方不一定是画质最烂的地方。
不过确实,这个地方是一个观察的重点
5.
第二个测试 RV10 PSNR 特别低的部分,你看一下附图,就知道那是什么样的画面
我好像在故意折磨 RV10,第一个测试有沙地和烟雾,第二个测试则是花草茂盛的高频,本来还想做的第三个测试是下雨的场景....
记得这在我以前贴过的测试报告中应该也可以看出端倪。
我那时说 rc2 矩阵在越接近 constant quantizer 的时候 PSNR 会越高,但是 cg' 矩阵在使用 constant quantizer 压缩的时候 PSNR 反而降低。
另外我说 H.263 2-pass 因为会用到 quant 3,所以最低 PSNR 下降,不如 H.263 CQ=2。
还有我做了 3-pass cap quant 的测试,根据目标文件大小 2nd-pass 压出来的 avg. quant,如果是 4.38,就限制 quantizer 范围为 2~5,再压一次 3rd-pass。
同样的做法可以改为,2nd-pass 压出来 avg. quant 4.38,再压一次 3rd-pass,在 Zone 里面限制 quantizer = 4.38,这样就只会用 quant 3 和 quant 4。
不过我还有提到
1. 完全 CQ 不一定会是最高的质量,太过分散也有质量劣化之虞,适中的分布最好。
这也是为什么我 3-pass 测试用 cap quant,不用 Zone 指定 CQ,虽然 Zone 指定 CQ 的 PSNR 可能会高一点,但是不一定有意义。
2. 虽然 H.263 2-pass 最低 PSNR 不如 CQ=2,但是这就是 2-pass 的意义,重新做码率分配,我们要观察的是,最低 PSNR 下降的地方,是否会造成明显压缩瑕疵,而 2-pass 码率拿去补强的地方,是否是需要提升的地方,提升后有没有明显的效果。
我忘了我有没有把结论写出来 ^^; 结论在我做的那个测试中,2-pass 是有帮助的。
以您的情况,我推测在低码率下,由于码率不够用,2-pass 可能无法分配到每个画面都尽善尽美,可能一些画面会好一点,但是有些画面却会特别糟,瑕疵很明显,令人印象深刻 :P
这时用 CQ,我想画质会比较稳定,也许效果会更好
- [SilkyBible] XviD系列-22
- [SilkyBible] XviD系列-1
- [SilkyBible] XviD系列-2
- [SilkyBible] XviD系列-3
- [SilkyBible] XviD系列-4
- [SilkyBible] XviD系列-5
- [SilkyBible] XviD系列-6
- [SilkyBible] XviD系列-7
- [SilkyBible] XviD系列-8
- [SilkyBible] XviD系列-9
- [SilkyBible] XviD系列-10
- [SilkyBible] XviD系列-11
- [SilkyBible] XviD系列-12
- [SilkyBible] XviD系列-13
- [SilkyBible] XviD系列-14
- [SilkyBible] XviD系列-15
- [SilkyBible] XviD系列-16
- [SilkyBible] XviD系列-17
- [SilkyBible] XviD系列-17
- [SilkyBible] XviD系列-18
- [SilkyBible] XviD系列-19
- [SilkyBible] XviD系列-20
- [SilkyBible] XviD系列-21
- [SilkyBible] XviD系列-22
- 关于struts2验证文件的些写法和fieldexpression
- 塞翁失马,焉知非福——对2008和2009说点什么
- PagedDataSource 分页
- 打妈妈
- .NET组件的注册表中RuntimeVersion的作用
- [经验总结]VIM使用技巧
- 解决VS2008写的Visual C++ 程序无法在没有安装VS的机子上使用
- 网页设计师的12个工具