分页: 1 / 2

画中画与clipslice脚本

发表于 : 2011-03-12 12:51
anaheim
之前处理的PSG BD中ghost爆炸的特典中有画中画,蛋疼的是画中画部分竟然没交错
第1卷用TempGaussMC 3个特典都正常,画中画也正常,第2卷开始画中画部分会出现抖动,然后直接用eedi3处理后,画中画部分不抖动了,但是单独用eedi3后反交错能力肯定悲剧…
在提问时被告知可以使用clipslice脚本来局部处理
现在遇到个问题是……我该如何确定画面中画中画的位置,看到的参数是2个方向来切像素,请问有什么工具可以帮助我来确认位置或者是像素位置么……

Re: 画中画与clipslice脚本

发表于 : 2011-03-12 12:53
06_taro
avspmod

Re: 画中画与clipslice脚本

发表于 : 2011-03-12 15:03
anaheim
AVS脚本:
LoadPlugin("D:\MeGUI\tools\dgavcindex\DGAVCDecode.dll")
LoadPlugin("D:\MeGUI\tools\avisynth_plugin\nnedi3.dll")
LoadPlugin("D:\MeGUI\tools\avisynth_plugin\mvtools2.dll")
LoadPlugin("D:\MeGUI\tools\avisynth_plugin\mt_masktools-25.dll")
LoadPlugin("D:\MeGUI\tools\avisynth_plugin\RepairSSE3.dll")
LoadPlugin("D:\MeGUI\tools\avisynth_plugin\RemoveGrainSSE3.dll")
LoadPlugin("D:\MeGUI\tools\avisynth_plugin\VerticalCleanerSSE3.dll")
Import("E:\Rip Works\TempGaussMC_beta2z.avsi")

v1=AVCSource("E:\Rip Works\g4 1.dga")
v2=AVCSource("E:\Rip Works\g4 2.dga")
v3=AVCSource("E:\Rip Works\g4 3.dga")
v4=AVCSource("E:\Rip Works\g4 4.dga")
v5=AVCSource("E:\Rip Works\g4 5.dga")
video=v1+v2+v3+v4+v5
video.ClipSlice(s=1641,e=1943,ep1="TempGaussMC_beta2z(edimode="nnedi3")",ep2="TempGaussMC_beta2z(edimode="nnedi3")",
\ l=729,t=383,r=1049,b=921,sp1="nnedi3()",sp2="TempGaussMC_beta2z(edimode="nnedi3")",
\ cpmode=0,epmode=0,spmode=0,cspmode=1
Spline64Resize(1280,720)

画中画考虑用nnedi3处理,其他部分都还是跟以前一样用TGMC处理,这样写后提示,和(有问题,囧rz……
好像右边有一部分看不到了?看不到的那部分是="nnedi3")",

Re: 画中画与clipslice脚本

发表于 : 2011-03-12 15:06
06_taro
1. 左右括號都沒對上
2. 引號用法也不對
3. 切割區域sp1和sp2出來的幀率都不一樣

代码: 全选

video.ClipSlice(
\ s=1641, e=1943,
\ ep1="""TempGaussMC_beta2z(edimode="nnedi3")""",
\ ep2="""TempGaussMC_beta2z(edimode="nnedi3")""",
\ l=729, t=383, r=1049, b=921,
\ sp1="nnedi3(field=-2)", sp2="""TempGaussMC_beta2z(edimode="nnedi3")""",
\ cpmode=0, epmode=0, spmode=0, cspmode=1)
另外l/t/r/b沒寫錯麼?
這麼切基本上都沒畫面了吧……
按1920x1080算的話畫面都不夠切= =
ClipSlice裡面的l/t/r/b是邊距不是絕對坐標

Re: 画中画与clipslice脚本

发表于 : 2011-03-12 15:23
cunhan
可以在clipslice前先获取高宽。

代码: 全选

width = last.Width 
height = last.Height 
然后,右边距和下边距就可以这样写了,不需获取了点坐标后还要自己做减法

代码: 全选

r=width-1049, b=height-921

Re: 画中画与clipslice脚本

发表于 : 2011-03-12 16:52
anaheim
呃,之前没搞明白这个l/t/r/b问题……
video.ClipSlice(
\ s=1641, e=1943,
\ ep1="""TempGaussMC_beta2z(edimode="nnedi3")""",
\ ep2="""TempGaussMC_beta2z(edimode="nnedi3")""",
\ l=729, t=383,
\ width = last.width
\ height =last.height
\ r=width-1049, b=height-921
\ sp1="nnedi3(field=-2)", sp2="""TempGaussMC_beta2z(edimode="nnedi3")""",
\ cpmode=0, epmode=0, spmode=0, cspmode=1)

像这样么…………

Re: 画中画与clipslice脚本

发表于 : 2011-03-12 16:59
06_taro
如果你切割矩形顶点的绝对坐标是(729,383)和(1049,921)的话
l和t就是729和383
r和b是(宽-1049)和(高-921)
代码如下

代码: 全选

video.ClipSlice(
\ s=1641, e=1943,
\ ep1="""TempGaussMC_beta2z(edimode="nnedi3")""",
\ ep2="""TempGaussMC_beta2z(edimode="nnedi3")""",
\ l=729, t=383, r=Width(video)-1049, b=Height(video)-921,
\ sp1="nnedi3(field=-2)", sp2="""TempGaussMC_beta2z(edimode="nnedi3")""",
\ cpmode=0, epmode=0, spmode=0, cspmode=1)
按照上面村汉的写法的话,应该是

代码: 全选

w = video.Width 
h = video.Height
video.ClipSlice(
\ s=1641, e=1943,
\ ep1="""TempGaussMC_beta2z(edimode="nnedi3")""",
\ ep2="""TempGaussMC_beta2z(edimode="nnedi3")""",
\ l=729, t=383, r=w-1049, b=h-921,
\ sp1="nnedi3(field=-2)", sp2="""TempGaussMC_beta2z(edimode="nnedi3")""",
\ cpmode=0, epmode=0, spmode=0, cspmode=1)

Re: 畫中畫與clipslice腳本

发表于 : 2011-03-12 17:21
Holy
如果你是要 bob 到 59.94 fps 的話,ClipSlice 內還要加上 fps=60000, Denominator=1001
否則播放時間會變成兩倍
而且如果 s 和 e 是在 TGMC 之前選取出來的話,epmode 要設為 1
否則 TGMC 之後幀數改變會導致選取的段落不對
另外 sp1 的 nnedi3 不用加上 field=-2,你那靜止畫面抖動的問題就是 bob 造成的,加了問題又回來了

Re: 画中画与clipslice脚本

发表于 : 2011-03-12 17:34
Yuricon
奇数不怕RP吗...我不保证奇数值的准确性...
简单的来说,这个l t r b分辨是左上右下,意思是左上右下各切去多少,而这个范围就是sp1的

代码: 全选

crop(l, t, -r, -b)
这样去理解这参数的意思就简单了...
一般配合avsp(mod)就能比较好的获取这个范围值,具体怎么做上面几位已经说明了
如果需要调试范围,可以用debug参数

代码: 全选

ClipSlice(l, t, r, b, debug=1)#ltrb自己填#debug参数详细请查看说明文档

代码: 全选

cpmode=1#除了LS所说的这个也是同理的...
还有就是可以在TGMC后面加一个SelectEven

代码: 全选

ClipSlice(s,e,
\ ep1="""TempGaussMC_beta2z(edimode="nnedi3").SelectEven""",
\ ep2="""TempGaussMC_beta2z(edimode="nnedi3").SelectEven""",
\ l, t, r, b,
\ sp1="nnedi3",
\ sp2="""TGMC(edimode="nnedi3").SelectEven""",
\ cpmode=1,epmode=1)
这样就直接是29.97 fps,也不需要改fps参数

Re: 画中画与clipslice脚本

发表于 : 2011-03-12 21:54
anaheim
v1=AVCSource("E:\Rip Works\g4 1.dga")
v2=AVCSource("E:\Rip Works\g4 2.dga")
v3=AVCSource("E:\Rip Works\g4 3.dga")
v4=AVCSource("E:\Rip Works\g4 4.dga")
v5=AVCSource("E:\Rip Works\g4 5.dga")
video=v1+v2+v3+v4+v5
w = video.Width
h = video.Height
Video.ClipSlice(
\ s=1641, e=1943,
\ ep1="""TempGaussMC_beta2z(edimode="nnedi3").SelectEven""",
\ ep2="""TempGaussMC_beta2z(edimode="nnedi3").SelectEven""",
\ l=729, t=383, r=w-1049, b=h-921,
\ sp1="nnedi3",
\ sp2="""TempGaussMC_beta2z(edimode="nnedi3").SelectEven""",
\ cpmode=1,epmode=1)
Spline64Resize(1280,720)

嗯,最后是这样的……然后0.38fps好不容易压完了,看后发现切的位置没问题,sp1爆炸画中画不抖动了,但是sp2画面,却发现还有交错……sp2已经用了TGMC的啊,先前通篇都用TGMC处理时也没见到处理不净的交错,就好像是sp2部分也是被nnedi3处理过一样……