先是图书馆战争。
由于可能存在的ffms seek问题,我这里没法很好的测试(比如
s.crop(120,108,1106-1920,640-1080).tfm(pp=0)
s.ClipSlice(s=38900,e=40032,l=120,t=108,r=1920-1106,b=1080-640,sp1="tfm(pp=0)", cpmode=0,epmode=0,spmode=0,cspmode=1,color=$000000)在39095帧结果不一致之类的。)
不过就这片可能存在的问题,和我目前想的解决方案说一下。
首先是那个羽化的画中画,由于背景的关系,直接overlay效果就很好,找了半天,38913帧的画中画部分tfm不能进行场匹配,走默认PP=6效果自然也可以,不过也可以根据这片的特点可以将字幕单独抽出来,让字幕部分保持原来的样子
代码: 全选
ivtc2=s.ClipSlice(s=38900,e=40032,l=186,t=166,r=1920-1052,b=1080-600,sp2="tfm(slow=2,mode=5,pp=0)", cpmode=0,epmode=0,spmode=0,cspmode=1,color=$000000)
ivtc1=overlay(ivtc2,s.crop(122,108,1106-1920,640-1080).tfm(mode=5,slow=2,pp=6),x=122,y=108)
smask=s.trim(38912,39000).Scriptmask
mt_merge(ivtc1,s,smask,y=3,u=3,v=3)
converttorgb32(matrix="rec709")
function Scriptmask(clip "Script", int "Lhthr",int "Llthr",int "Chthr",int "Clthr",int "radius")
{
Lhthr = default(Lhthr,230)
Llthr = default(Llthr,20)
Chthr = default(Chthr,136)
Clthr = default(Clthr,120)
radius = default(radius,1)
Frames=Script.framecount()
begin=Script.trim(0,-1).Smask(Lhthr,Llthr,Chthr,Clthr,radius)
end=Script.trim(Frames,Frames-1).Smask(Lhthr,Llthr,Chthr,Clthr,radius)
mid=Script.trim(int (Frames/2), int (Frames/2)-1).Smask(Lhthr,Llthr,Chthr,Clthr,radius)
ms=mt_logic(mt_logic(begin,end,"min"),mid,"min").mt_lut("x 128 / 0.86 ^ 255 *")
scmask= radius==0 ? ms.removegrain(19,-1).blur(1.2)
\: radius==1 ? ms.removegrain(19,-1).mt_expand().blur(1.2)
\: ms.removegrain(19,-1).mt_expand().mt_expand().blur(1.2)
scmask
}
function Smask(clip "s",int "Lhthr",int "Llthr",int "Chthr",int "Clthr",int "radius")
{
y=s.grayscale
sy=mt_logic(y.mt_binarize(Llthr,upper=true),y.mt_binarize(Lhthr),"max")
u=s.utoy
su=mt_logic(u.mt_binarize(Chthr,upper=true),u.mt_binarize(Clthr),"min").spline36resize(s.Width(),s.Height())
radius==3 ? mt_logic(sy,su,"min").mt_expand
\: mt_logic(sy,su,"min")
}
smask=s.trim(38936,39000).Scriptmask(radius=2)
mt_merge(ivtc1,s.vinverse(),smask,y=3,u=3,v=3)
圣痕就很典型了,字幕无缟,背景有缟
所以类似这样应该就可以了
m=s.trim(2145,2235).Scriptmask(radius=3,Lhthr=233,Llthr=30)
ccc=s.ccc(1)
mt_merge(ccc,s,m,Y=3,U=3,V=3)
上面的没有回补