『漫游』酷论坛>『DVDRip技术研修室』>[下载]VirtualDub v1.5.1 (15 ..

[下载]VirtualDub v1.5.1 (15654)

剑路1029@2003-02-25 21:48

/@codec/VirtualDub-1.5.1.zip

Changes:
Build 15654 (Version 1.5.1):[February 22, 2003]
[features added]Improved audio filter dialog.
Added "split" and "mix" audio filters.
Capture mode: Added menu item to launch Windows Volume Control in Recording mode.
Save Segmented AVI now attempts to cut before keyframes when the video mode is set to "direct copy."[bug fixes]"Change so durations match" frame rate option was using microsecond periods as frame rates.
Fixed random crash when selecting menu option with no video file loaded.
Fixed broken free space gauge in capture mode.
Fixed trashed filenames when attempting to set capture file.
Save Segmented AVI was using one digit instead of two for the segment number.
Video capture without an audio device now works.
Audio compression dialog no longer shows incompatible compression formats when it first appears.
Added workaround for "shutdown when finished" job control option to work under Windows 98.
Assignments to string variables now work in scripts.
引用

[转贴]作者:Silky

剑路1029@2003-02-25 21:53

我测试了一下,这一版的就没问题了。

最近压 Evangelion 的 Renewal OP,这部 DVD 当年做得很糟糕,被列为「不幸的动画 DVD 殿堂」的代表之一。最近日本要重发新版本的 DVD,音效重新制作混音为 5.1 声道,同时影像也重新 telecine,remaster 过。Renewal 后的版本 OP 很好做 24fps 补正,不需要做单张去交错,所以我可以利用 TPRIVTC 这个 filter,使用 Avisynth 2.5 做一次全程 YV12 制作的版本。
以前我不用 Avisynth 2.5 的原因是,我需要用 TMPGEnc 做 24fps 补正,TMPGEnc 的 24fps 补正可以让你一张一张选,选出最完美的画面,这点是 Avisynth 的 IVTC plugin 做不到的。Avisynth 有一个 TPRIVTC 的 filter,这个 filter 可以读取 TMPGEnc 的 .tpr 项目文件的里面的 IVTC 数据,在 Avisynth 里面做和 TMPGEnc 一样的 IVTC 选择。只要你先用 TMPGEnc 做好 24fps 补正,储存项目档 .tpr,然后再用 TPRIVTC 去读取这个 .tpr 即可。可惜的是这个 plugin 的 deinterlace 功能只对应单取奇或单取偶,以及奇偶混合(Double)的方法,没有办法做到 TMPGEnc 里面的「自适应去交错」(Adaptive deinterlace),所以遇到有需要单张去交错的画面时,这个 filter 就不是那么好用了。

总之因为这个 Evangelion 的 Renewal OP 很好补,没有用到单张去交错,所以可以用 TPRIVTC,使用 Avisynth 2.5 做全程 YV12 压缩。

我第一次使用 Avisynth 2.5 的 LanczosResize,结果发现 Avisynth 2.5 的 LanczosResize 在 YV12 模式下有 bug,画面会出现错误的白点。如果先转到 YUY2 模式,再做 Resize,然后再转回 YV12,这些白点就会没有了。
LoadPlugin("MPEG2Dec3.dll")
MPEG2Source("Evangelion Renewal OP.d2v")
LoadPlugin("TPRIVTC.dll")
DoubleWeave().TPRIVTC("Evangelion Renewal OP.tpr")

ConvertToYUY2
LanczosResize(640,480,8,0,704,480)
ConvertToYV12

不知道这是不是我的特例,还是大家在 YV12 模式下做 LanczosResize 都会发生这种问题。

所以我也就顺便测了 Avisynth 2.5、VirtualDub、AviUtl 三个软件的 Lanczos3 Resize 压出来的差异。
以 XviD dev-api-4 CVS 最新版,固定品质 quantizer 2 压缩。首先是 Avisynth 2.5,.avs 档的内容如上,在做 Resize 之前先转为 YUY2,然后再转回 YV12。
要全程 YV12 处理,VDMod 必须要选 Fast recompress。Fast recompress 模式下 VDMod 不会做任何转换的处理,会直接丢 YV12 的数据给 Codec 压缩。
压出来档案大小 71,174,144

如果不转为 YUY2 做 Resize,画面会出现白点,档案会更大一点。

接下来是 VD,.avs 和上面几乎一样,只是拿掉最后三行 Resize 的部分,加上
Crop(8,0,704,480)

用 VD 的 Lanczos3 Resize 必须选 Full processing,是在 RGB32 的模式下工作,然后送 RGB 的 data 给 Codec,由 Codec 做 RGB -> YV12。
压出来档案大小 69,677,056

最后是 AviUtl 的 Resize,用 AviUtl 做好 Resize 之后,以 Avisynth 开启,转成 YV12
avisource("Evangelion Renewal OP_aup_vfapi.avi").ConvertToYV12()

如果不用 VFAPI 做中介,直接用 Avisynth 的 VFAPISource 开启,结果是一样的。
AviUtl 的 RGB 有经过 YC 伸张,范围是 0~255。
压出来档案大小 66,965,504

三个排一起比较
71,174,144
69,677,056
66,965,504

AviUtl 压出来的档案最小。PSNR 我没测,不过固定品质下档案越小在做 2-pass 压缩时越有利,压缩率越高。
我不知道这个差异是怎么来的,有可能是
1. 三者的 Lanczos3 Resize 计算精度不同。Avisynth 的 Lanczos3 是改自 thejam(日本人)写的 lanczos3.vdf(其实是一个 Avisynth 的 filter,可以在 YUY2 模式下工作)。thejam 是改自 AviUtl 的 auf plugin,照理说应该一样。
Avisynth 可以使用 AviUtl 的 plugin,利用 aufilters 加载 AviUtl 的 Lanczos3Resize 就可以测试是不是 Resize 造成巨大的差异,如下
LoadPlugin("MPEG2Dec3.dll")
MPEG2Source("Evangelion Renewal OP.d2v")
LoadPlugin("TPRIVTC.dll")
DoubleWeave().TPRIVTC("Evangelion Renewal OP.tpr")
Crop(8,0,704,480)

Import("aufilters.avs")
AU_1anczos3Resize(640,480)

但是这个 LoadAviUtlPlugin.dll 必须要在有 SSE 指令集上的 CPU 才能跑,所以我无法做测试,有兴趣的人试试看。

2. 全程 YV12 和经过 YUV -> RGB -> YUV 转换所造成的差异。实际上使用 Avisynth 时也没有全程 YV12,要 Resize 之前有转为 YUY2。我试过全程 YV12(会有白点 bug),压出来有大一点,不过差不多,看起来不像是主因。

3. 还没有想到...

我会再研究看看,如果有心得,再上来和大家报告。
引用

[转贴]作者:Silky

剑路1029@2003-02-25 21:55

我看了一下原始程序代码,Avisynth 和 AviUtl 的 LANCZOS3.auf 都是 6-tap sinc(lanczos) windowed filter,tap 数随放大缩小的比例自动调整,看起来来应该是一样的。
以前提过,lanczos3 filter 本身具有 anti-aliasing 的效果,不需要 pre-filter。除非缩小的倍数非常高,否则 lanczos3 是不会产生明显的 aliasing 瑕疵。aliasing 产生的瑕疵看起来像下面这样
http://www.wfu.edu/~matthews/misc/DigPhotog/alias/

所以那个文件大小的差异到底是什么原因产生,我又继续做了实验。
既然我这边不能用 LoadAviUtlPlugin.dll,在 Avisynth 里面用 AviUtl 的 plugin,干脆反过来,用 AviUtl 读取 Avisynth 的 avs 文件。利用 avsinp.aui 这个 Input Plugin 可以让 AviUtl 加载 .avs。AviUtl 从 98 版以后就可以处理 YUY2 输入,所以 avs 写成这样
LoadPlugin("MPEG2Dec3.dll")
MPEG2Source("Evangelion Renewal OP.d2v")
LoadPlugin("TPRIVTC.dll")
DoubleWeave().TPRIVTC("Evangelion Renewal OP.tpr")
Crop(8,0,704,480)

ConvertToYUY2

然后用 AviUtl 的 Lanczos3 Resize,最后送 YUY2 的数据给 Codec 压缩。
压出来文件大小 70,339,334

咦?变大了。
很接近 Avisynth 压出来的 71,174,144。
难道问题不在 Resize 上?

我在 TMPGEnc 的 24fps 补正里有用 copy frame,不知道 TPRIVTC 能不能处理.....这样实验的变因太多,不好找出真正的问题根源,我重做了一个比较单纯的测试,影片文件是 NTSC 30fps progressive frame,不需要做 IVTC,avs 文件的内容很间单只有
LoadPlugin("MPEG2Dec3.dll")
MPEG2Source("AzuMangaDaioh OP.d2v")

Avisynth Resize 的版本加上
ConvertToYUY2
LanczosResize(640,480,8,0,704,480)

AviUtl Resize 的版本上面两行改成
Crop(8,0,704,480)
ConvertToYUY2

送给 AviUtl Resize

另外再用 AviUtl 直接开启 .d2v(RGB24),用 DVD2AVI 解碼,压一个版本作对照

压出来结果
Avisynth
28,243,968

avs -> AviUtl
28,245,226

d2v -> AviUtl
28,123,730

差距很接近。

难道问题出在 TRPIVTC,我检查了一下,TPRIVTC 和 TMPGEnc 的版本,没有太大的差异(TPRIVTC 会少一个 frame,但是影响不大,不应该会差到 3M 以上)。
所以... 真是谜 ^^;

可以确定的是,Avisynth、AviUtl、VD 的 lanczos3 应该是差不多的。Avisynth 是抄自 AviUtl,应该完全一样。VD 我猜也是参考 Avisynth 改写的。
引用

xxp@2003-02-26 00:10

没考虑时间问题
引用

剑路1029@2003-02-26 18:20

为什么没考虑时间问题?:eek:
引用

littleyizhi@2003-02-26 19:05

引用
最初由 剑路1029 发布
为什么没考虑时间问题?:eek:


因为你太形而上学,请问你贴的东西有多少是你亲自实践过的呢?

XXP和CSR2000写的都是他们的实际经验。

不用avs而用AviUtl,保证你吐血。
P3 800的机子压24分钟的片子,一般在20小时左右。
万一压出来的出了纰漏,你还有精力再玩吗?

所以不要一味的盲从,自己多做一点试验多好啊。
引用

剑路1029@2003-02-26 20:12

引用
最初由 littleyizhi 发布


因为你太形而上学,请问你贴的东西有多少是你亲自实践过的呢?

XXP和CSR2000写的都是他们的实际经验。

不用avs而用AviUtl,保证你吐血。
P3 800的机子压24分钟的片子,一般在20小时左右。
万一压出来的出了纰漏,你还有精力再玩吗?

所以不要一味的盲从,自己多做一点试验多好啊。


寒~~~20小时?! - -|||||
引用

xxp@2003-02-26 23:11

resize的对比没考虑时间问题
引用

魔术杨@2003-03-20 07:03

引用
最初由 littleyizhi 发布


因为你太形而上学,请问你贴的东西有多少是你亲自实践过的呢?


形而上学不是这个意思吧 ^_^

PS:我要的AVIUtl的心得呢 T___T
引用

boysming@2003-03-25 10:50

20小时不多,反正假日开几天:)
引用

| TOP