MoD, Sorry wegen dem Threadtitel, ich habe das Thema leider zu Voreilig abgeschickt,
bitte einmal anpassen... Vielen Dank
Salve,
ich habe ein kleines Problem, wo ich einfach nicht mehr weiter weiß!
Ich habe mich gestern zum ersten mal an AviSynth gedraut, bin also
noch ein Newbie in dem Bereich... seit also nicht so hart zu mir :zunge:.
Folgendes Szenario: Ich habe ein MPEG-Datenstrom als TS vorliegen, 720p
mit einer Framerate von 59.940060fps!
[Blockierte Grafik: http://img5.imagebanana.com/img/e2uo3e96/thumb/tt.bmp.png]
Obwohl die Framerate doppelt so gross ist wie bei NTSC-Standard,
wird er in ganz normaler Geschwindigkeit wiedergegeben.
So bin ich vorgegangen: Ich habe mich dem HD2DVD-TUT hier im Forum bedient
und zu dem mein AviSynth um ein Script mit Delogo kombiniert,
welches ich auch hier aus dem Forum entnommen habe!
Ich habe mich dabei strickt an den Vorgaben im Tut gehalten und
in der Vorschau vom HC Encoder hat auch alles gepasst... :ja:
Achja, ich habe zuvor mit DGAVCdec natürlich die schwarzen Balken ringsherum gecropped!
hier das Script:
avcsource("D:\Maniac Cop 2\Maniac Cop 2 (1990).dga")assumeFPS(25.000)Lanczos4resize(720,576)Import("D:\Maniac Cop 2\DeLogo_filter.avs")DeLogo(120,60,"RU","HD",Cmix=0.0,Lmix=0.0)
function VD_DeLogo(clip clip, bool "on_frames", string "range", string "file_deblend", string "file_alpha",
\ string "file_color", string "file_repair", float "depth", float "power", int "par_X", int "par_Y", bool "interlaced")
{
LoadVirtualdubPlugin("D:\XXXXXXXXXXXXXXXXXXXXXX\delogo.vdf", "_VD_DeLogo")
X = round(10*depth)
Y = round(10*power)
# theoretically: z = 100*log10(par_X/par_Y), as approximation I took a minimax-approximation (calculated with Maple):
v = - 48.96556825 + 63.18825967*par_X - 16.00966389*par_X*par_X + 2.473556539*par_X*par_X*par_X
\ - .2133268695*par_X*par_X*par_X*par_X
\ + .009456579673*par_X*par_X*par_X*par_X*par_X - .0001675297934*par_X*par_X*par_X*par_X*par_X*par_X
w = - 48.96556825 + 63.18825967*par_X - 16.00966389*par_X*par_X + 2.473556539*par_X*par_X*par_X
\ - .2133268695*par_X*par_X*par_X*par_X
\ + .009456579673*par_X*par_X*par_X*par_X*par_X - .0001675297934*par_X*par_X*par_X*par_X*par_X*par_X
z = round(v) - round(w)
return clip._VD_DeLogo(default(on_frames,false)?1:0, default(range,""), default(file_deblend,""), default(file_alpha,""),
\ default(file_color,""), default(file_repair,""), default(X,15), default(Y,40), default(interlaced,false)?1:0, z)
}
### ### ###
function delogo( clip clp, int Lwidth, int Lheight, string loc, string name,
\ float "Cmix", float "Lmix")
{
# logomask=(name2=="")?clp:imagereader(name2).loop().trim(0,framecount(clp)).converttoyv12(matrix="PC.601")
Lmix=default(Lmix,0.0)
Cmix=default(Cmix,0.0)
ox=clp.width
oy=clp.height
x1 = (LeftStr(loc,1)=="L") ? 0 : ox-Lwidth
y1 = (RightStr(loc,1)=="O") ? 0 : oy-Lheight
logo = clp.crop(x1,y1,Lwidth,Lheight)
row = (x1==0) ? (y1==0) ? clp.crop(Lwidth,0,-0,Lheight) : clp.crop(Lwidth,oy-Lheight,-0,-0)
\ : (y1==0) ? clp.crop(0,0,x1,Lheight) : clp.crop(0,oy-Lheight,x1,-0)
rest = (y1==0) ? clp.crop(0,Lheight,-0,-0): clp.crop(0,0,-0,oy-Lheight)
ConvertToRGB(logo)
log1=VD_DeLogo(false, "", name+"_deblend.bmp", name+"_alpha.bmp", name+"_color.bmp", name+"_repair.bmp",
\ 1.5, 3.0, 1, 1, false).ConvertToYV12()
log2 = (Cmix==0.0 && Lmix==0.0)
\ ? log1 : VD_DeLogo(false, "", name+"_deblend.bmp", name+"_alpha.bmp", name+"_color.bmp", name+"_repair_c.bmp",
\ 2.5, 3.0, 1, 1, false).ConvertToYV12()
Cmix==0.0 ? log1 : MergeChroma(log1,log2,Cmix)
Lmix==0.0 ? last : MergeLuma(last,log2,Lmix)
# Removegrain(2).temporalsoften(2,7,7,23,2).AddGrain(5,.0,.0)
# name2==""?NOP:maskedmerge(logo,last,logomask.FitY2UV(),Y=3,U=3,V=3)
row2 = (x1==0) ? stackhorizontal(last,row) : stackhorizontal(row,last)
y1==0 ? stackvertical( row2,rest) : stackvertical( rest,row2)
return last
}
### ### ###
Function ServeLogo( clip clp, int Lwidth, int Lheight, string loc, int "SnipSize", int "avg" )
{ SnipSize = default( SnipSize, 56 )
avg = default( avg, 3 )
x1 = (LeftStr(loc,1)=="L") ? 0 : clp.width-Lwidth
y1 = (RightStr(loc,1)=="O") ? 0 : clp.height-Lheight
clp.crop(x1,y1,Lwidth,Lheight)
SelectRangeEvery( SnipSize, 1 )
return TemporalSoften( avg,255,255,255,2 )
}
Alles anzeigen
... also alles einmal fix encoden (6Std :cool:)
Endresultat: Der Film war doppelt so lang, ca 3Std und 20min, es wurde also alles in
Zeitlupe wiedergegeben, demnach war natürlich auch die Bildqualität miserabel :ani_lol:.
Mir kam das mit der Framerate gleich komisch vor, aber ich bin davon ausgegangen;
wenn es anders wär, würde es schon im Tut stehen... Pustekuchen xD
-----------------------------------------
Mich würde jetzt interessieren; um was ich das Script erweitern muss, damit die Geschwindigkeit beibehalten wird,
dabei sollten ambesten so wenig Frames wie möglich verloren gehen! Zudem wäre ein Schärfefilter vllt ganz interessant,
oder was ihr vielleicht noch allgemein anders machen würdet :ja:.
Hoffe das ihr mir weiterhelfen könnt, ich weiß erstmal leider kein Rat mehr!
Gruss
2184