NMM视频技术(旧)

 找回密码
 成为会员
搜索
查看: 5529|回复: 3

【求助】ConvertToYUY2()的应用?

[复制链接]
发表于 2005-5-17 00:36 | 显示全部楼层 |阅读模式
ConvertToYUY2()在avs里面是放在deinterlace前面还是后面好啊?

另外,resize、crop、和deinterlace是在avs里用效果好,还是在vdm里面用滤镜效果好?
发表于 2005-5-17 08:02 | 显示全部楼层
ConvertToxxx是用来转换颜色区间的。并没有特别强调用在哪里会特别好。主要是看需要的情况。如果某个插件需要YUY2的颜色,而你当前的颜色环境又正好是YV12,那么就需要在这个插件之前使用ConvertToYUY2()将颜色区间进行转换。

由于AviSynth2.5所有的插件以及内置函数全部使用YV12作为颜色区间,所以除非你的片源是其它颜色格式,否则用不着ConvertToYUY2()。如果片源是其它颜色格式,那么则在xxxSource后面就要立刻加入ConvertToYUY2()来转换颜色区间,以适应插件或内置函数需要,否则会出现奇怪的颜色问题。

至于VD里面的插件,我们现在一般是不使用的。原因请看:
http://nmm.dns0755.net/nmmbbs/viewthread.php?tid=147
 楼主| 发表于 2005-5-17 15:33 | 显示全部楼层
我的片源是mpeg1的vcd,经过了TMPGEnc--->VFAPIConv,再用AviSynth2.5时出现的问题,所以要ConvertToYUY2()。我可不可以在avs里直接转换成YV12呢?这样效果会好一些吗?


另外,我做DVDrip的时候,第一步就是用GK.35中的DGindex做D2v,field operation选none,yuv-->RGB选pc scale,请问此时出来的是YV12还是YUY2啊?


最后,我想知道怎么看文件是YV12的还是YUY2的或者RGB的啊?
发表于 2005-5-17 18:12 | 显示全部楼层
Originally posted by 焦阳 at 2005-5-17 15:33:
我的片源是mpeg1的vcd,经过了TMPGEnc--->VFAPIConv,再用AviSynth2.5时出现的问题,所以要ConvertToYUY2()。我可不可以在avs里直接转换成YV12呢?这样效果会好一些吗?

可以直接YV12
  1. 另外,我做DVDrip的时候,第一步就是用GK.35中的DGindex做D2v,field operation选none,yuv-->RGB选pc scale,请问此时出来的是YV12还是YUY2啊?
复制代码

这个选先跟颜色区间没有关系,与YC扩张/YC压缩有关。如果这个YC扩张/压缩的问题再讲明白的话,会长篇大论。因为Silky大人的文章当中已经讲得很详细了,所以就不在这里献丑。只转一小段说明问题的段落过来:
DVD2AVI 的 Color Space 选 RGB/YUV 和 PC Scale/TV Scale 的差异:
RGB 模式是输出 RGB24,YV12 (YUV 4:2:0) --> YUY2 (YUV 4:2:2) --> RGB24,由 dvd2avi 做内插展开(4:2:0 -> 4:2:2)和转换的工作(YUV -> RGB)。内插展开的算式作者的网站有写,相当于 6-tap 的 FIR Filter。
YUV 模式是输出 YUV 4:2:2(YUY2)。
输出 RGB 时,preview 显示会走传统的 GDI 图形显示接口,送 RGB24 的资料给显示卡,此时计算机屏幕上看到的颜色正不正确,由 YUV -> RGB 这个选项决定。(要选 PC Scale 看到的颜色才会正确)
输出 YUV 时,preview 显示会走 DirectDraw YUY2 Overlay,直接送 YUY2 的数据给显示卡,由显示卡去做展开和色空间转换。显示卡用的都是 PC Scale(会做 Y/C 伸张,扩展原来的 16~235 的数据为 0~255),所以您可以在屏幕上
看到正确的颜色。
(同理,DVD/VCD 播放时,播放软件会走 DirectDraw Overlay 丢 YUY2 或 YV12的资料给显示卡,由显示卡来做展开、色空间转换、和放大(scaling filter)的工作。由于显示卡用的是 PC Scale,会做 Y/C 伸张,所以您才可以在计算机屏幕上看到正确的DVD/VCD 的颜色)
(前提是,做好的 DVD/VCD,其 YUV 4:2:0 的数据范围必须是 16~235,经过显示卡 PC Scale 16~235 -> 0~255 才会正确。如果 DVD/VCD 做错,压缩前没有先做 Y/C 压缩,储存的是 0~255 的 YUV 数据,则显示时再经过显示卡的 Y/C 伸张,会发生 clipping(资料超过范围被削掉))
(而 16~235 的数据拿到电视上放,电视本来就吃 16~235 的资料,所以显示也是正常的)
(所以结论,DVD/VCD 上的数据,必须遵照 CCIR601 的规范,维持 16~235 的范围)
至于输出,也是按照 YUV/RGB 的设定,分别输出 YUY2 和 RGB24。
但是如果您有用 vfapi,因为 vfapi 内部完全以 RGB24 传送数据,所以如果你把 .d2v 转成 vfapi-ref-avi,即使 color space 选 YUV,dvd2avi 也会做展开转换成 RGB24 输出。如果要用 dvd2avi 直接做 Y/C 伸张,dvd2avi 的 YUV -> RGB 选项勾选 PC Scale 即可。
另外,如果用 TMPGEnc/AviUtl 直接开启 .d2v,因为这些软件还是以 RGB24读取,所以 dvd2avi 也还是以 RGB24 输出。
那.... 倒底什么时候会用 YUY2 输出?
直接存 AVI 的时候... ^^;
所以如果您是用 vfapi 或用 TMPGEnc/AviUtl 读取,选 YUV 或 RGB 都没有差异。
附带一提 ^^; 如果 dvd2avi 输出时已经选了 PC Scale(有做 Y/C 伸张),就不可以再用 TMPGEnc 的 Descale CCIR601 这个滤镜,也不可以用AviUtl 的 "ITU-R BT.601 补正",这两个作的事情是一样的,都是做 Y/C 伸张。已经伸张过再做伸张,会有许多资料 clipping。

S神样真是太厉害了T_T、55555……痛哭流涕中

至于看文件的颜色格式,在播放的时候,系统托盘会出现FFDSHOW的图标(如果你使用FFDSHOW解码的话)。双击这个图标,跳出来的对话框里面就有很多信息。里面就有颜色格式。
您需要登录后才可以回帖 登录 | 成为会员

本版积分规则

小黑屋|手机版|NMM视频技术

GMT+8, 2025-5-6 00:58 , Processed in 0.091144 second(s), 14 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表