Pàgina 1 de 2

AviSynth - Filtres variable en un mateix vídeo (PER EXPERTS)

Publicat: dc. abr. 23, 2008 16:31
Autor: Petiso
Hola !

Avui m'estava barallant amb un vídeo que tenia unes escenes entrellaçades, i la resta del vídeo no.

Després de buscar una mica, he aconseguit fer un script que apliqui un filtre o no depenen de la zona del vídeo que estigui.

Aquí teniu el script, per si a algú li interessa:

Codi: Selecciona’ls tots

#  DEINTERLACING (1)
function f_toms(int i) {
  return ((i>= 58078 && i<=59108) || (i>= 60038 && i<=60274)) ? 0 : 1
}

v = ConditionalFilter(v, v, TomsMoComp(v,1,5,1), "f_toms(current_frame)", "equals", "1")
#v = ConditionalFilter(v, v, Subtitle(v, "Entrellasat"), "f_toms(current_frame)", "equals", "1")
El script sencer quedaria:

Codi: Selecciona’ls tots

#  PLUGINS
LoadPlugin("D:\TV\GORDIA~1\DGMPGDec\DGDecode.dll")
LoadPlugin("D:\TV\GORDIA~1\AviSynthPlugins\UnDot.dll")
LoadPlugin("D:\TV\GORDIA~1\AviSynthPlugins\TomsMoComp.dll")

#  SOURCE
v = mpeg2source("L:\TDT\Dawson's creek -6x24- Totes les coses bones tenen un final (2) _OK.d2v")

#  DEINTERLACING (1)
function f_toms(int i) {
  return ((i>= 58078 && i<=59108) || (i>= 60038 && i<=60274)) ? 0 : 1
}

v = ConditionalFilter(v, v, TomsMoComp(v,1,5,1), "f_toms(current_frame)", "equals", "1")
#v = ConditionalFilter(v, v, Subtitle(v, "Entrellasat"), "f_toms(current_frame)", "equals", "1")

#  CROPPING
crop(v,4,0,714,576)

#  DENOISING: choose one combination (or none)
Undot()

mergechroma(blur(1.3))

#  RESIZING
LanczosResize(640,472)
Explicació del codi:
function f_toms(int i) {
return ((i>= 58078 && i<=59108) || (i>= 60038 && i<=60274)) ? 0 : 1
}
Funcio que retorna 0 quan NO volem entrellaçat i 1 quan no.
En verd fort, l'inici de la primera zona entrellaçada, i en vermell fort, el final de la primera zona entrellaçada.
En verd fluix, l'inici de la segons zona entrellaçada, i en taronja, el final de la segons zona entrellaçada.

Un posible case, sería quan tenim entrellaçats el opening i els credits, aleshores el codi es simplifica:
function f_toms(int i) {
return ((i<=150) || (i>= 60038)) ? 0 : 1
}
150 = Frame de final del opening.
60038 = Frame d'inici dels crèdits.

--------

Codi: Selecciona’ls tots

#v = ConditionalFilter(v, v, Subtitle(v, "Entrellasat"), "f_toms(current_frame)", "equals", "1")
Això es un comentari .... si algú vol comprovar que funciona, que tregui el #, i quan el vídeo sigui entrellaçat sortirà Entrellasat a dalt a al esquerra.

----------

Afegit: cas simple dels crèdits finals:

Codi: Selecciona’ls tots

v=ConditionalFilter(v, TomsMoComp(v,1,5,1), v, "current_frame", "greaterthan", "76240")
# v=ConditionalFilter(v, Subtitle(v, "Entrellasat"), v, "current_frame", "greaterthan", "76240")
Adéu !

Re: AviSynth - Filtres variable en un mateix vídeo (PER EXPERTS)

Publicat: ds. abr. 26, 2008 21:52
Autor: arakelov
Hi ha casos (sobretot en documentals) en què, per exemple, només la presentació és entrellaçada i després el documental no ho és. Aquest cas me l'he trobat avui en un 60 minuts on només són entrellaçats els primers 1944 frames. En tal cas l'script és mes senzill i podem prescindir de la definició de la funció, aplicant simplement l'operador lessthan:

Codi: Selecciona’ls tots

# Created with Gordian Knot
#
# http://gknot.doom9.org

#  PLUGINS
LoadPlugin("C:\ARCHIV~1\GORDIA~1\DGMPGDec\DGDecode.dll")
LoadPlugin("C:\ARCHIV~1\GORDIA~1\AviSynthPlugins\UnDot.dll")
LoadPlugin("C:\ARCHIV~1\GORDIA~1\AviSynthPlugins\TomsMoComp.dll")

#  SOURCE
v=mpeg2source("E:\TOTSRUCS - Treball\60 minuts\20080408 L'autèntic padrí\60minPadri.d2v")

#  DEINTERLACING (1)
v = ConditionalFilter(v, TomsMoComp(v,1,5,1), v, "current_frame", "lessthan", "1944")

#  DENOISING: choose one combination (or none)
Undot(v)

#  CROPPING
crop(v, 0,2,720,572)

#  RESIZING
LanczosResize(640,464)
Salut!

Re: AviSynth - Filtres variable en un mateix vídeo (PER EXPERTS)

Publicat: dg. abr. 27, 2008 9:31
Autor: huGas.cat
A mi em posa:

"I don't know what "v" means.
(C:/................./Preview.avs, line 14)"


Perquè no em reconeix la "V"?

Codi: Selecciona’ls tots

# Created with Gordian Knot
#
# http://gknot.doom9.org

#  PLUGINS
LoadPlugin("C:\PROGRA~1\GORDIA~1\DGMPGDec\DGDecode.dll")
LoadPlugin("C:\PROGRA~1\GORDIA~1\AviSynthPlugins\UnDot.dll")
LoadPlugin("C:\PROGRA~1\GORDIA~1\AviSynthPlugins\TomsMoComp.dll")

#  SOURCE
mpeg2source("K:\Documents\Desktop\Crea una carpeta\04-27_10-23-29_(33)(Signes dels temps)_00.d2v")

#  DEINTERLACING (1)
v = ConditionalFilter(v, TomsMoComp(v,1,5,1), v, "current_frame", "lessthan", "107")

#  CROPPING
crop(8,4,700,568)

#  RESIZING
LanczosResize(672,496)

#  DENOISING: choose one combination (or none)
Undot()
Estic fent una prova, per fer-ho després amb els capítols d'el cor de la ciutat, que la careta està així.

Salut!
Gerard

Re: AviSynth - Filtres variable en un mateix vídeo (PER EXPERTS)

Publicat: dg. abr. 27, 2008 10:41
Autor: Petiso
Et falten aquestes V en vermell :-)
# Created with Gordian Knot
#
# http://gknot.doom9.org

# PLUGINS
LoadPlugin("C:\PROGRA~1\GORDIA~1\DGMPGDec\DGDecode.dll")
LoadPlugin("C:\PROGRA~1\GORDIA~1\AviSynthPlugins\UnDot.dll")
LoadPlugin("C:\PROGRA~1\GORDIA~1\AviSynthPlugins\TomsMoComp.dll")

# SOURCE
v= mpeg2source("K:\Documents\Desktop\Crea una carpeta\04-27_10-23-29_(33)(Signes dels temps)_00.d2v")

# DEINTERLACING (1)
v = ConditionalFilter(v, TomsMoComp(v,1,5,1), v, "current_frame", "lessthan", "107")

# CROPPING
crop(v,8,4,700,568)

# RESIZING
LanczosResize(672,496)

# DENOISING: choose one combination (or none)
Undot()

Re: AviSynth - Filtres variable en un mateix vídeo (PER EXPERTS)

Publicat: dg. abr. 27, 2008 10:44
Autor: huGas.cat
Petiso ha escrit:Et falten aquestes V en vermell :-)
Ok! Sí, ara sí va bé! :wink:

Gràcies!

Salut,
Gerard

Re: AviSynth - Filtres variable en un mateix vídeo (PER EXPERTS)

Publicat: dg. abr. 27, 2008 10:54
Autor: huGas.cat
Ah! I si hi ha un delogo pel mig?

Codi: Selecciona’ls tots

# DELOGO
ConvertToRGB()
delogo(1, "", "", "", "", "K:\Vídeos\El Cor de la Ciutat\tv3.bmp", 15, 40, 0, 0)
ConvertToYV12()
Perdoneu la meva incistència... :oops:

Salut!
Gerard

Re: AviSynth - Filtres variable en un mateix vídeo (PER EXPERTS)

Publicat: dg. abr. 27, 2008 11:02
Autor: Petiso
Afegit una petita explicació de que és cada cosa :-)

Adéu !

Re: AviSynth - Filtres variable en un mateix vídeo (PER EXPERTS)

Publicat: dg. abr. 27, 2008 21:22
Autor: arakelov
huGas.cat ha escrit:Ah! I si hi ha un delogo pel mig?
Aquí tens un exemple, amb delogo+conditionalfilter+denoising:

Codi: Selecciona’ls tots

# Created with Gordian Knot
#
# http://gknot.doom9.org

#  PLUGINS
LoadPlugin("C:\ARCHIV~1\GORDIA~1\DGMPGDec\DGDecode.dll")
LoadPlugin("C:\ARCHIV~1\GORDIA~1\AviSynthPlugins\UnDot.dll")
LoadPlugin("C:\ARCHIV~1\GORDIA~1\AviSynthPlugins\TomsMoComp.dll")
LoadVirtualdubPlugin("C:\ARCHIV~1\GORDIA~1\VIRTUA~1\plugins\delogo.vdf", "delogo")

#  SOURCE
v=mpeg2source("E:\TOTSRUCS - Treball\L'as del llampec\20080413 -1x02- La trampa està parada (The Trap Is Set)\asdelllampec1x02.d2v")

#  DELOGO
v=ConvertToRGB(v)
delogo(v,1, "", "", "", "", "f:\delogo masks\K3\repair2.bmp", 15, 40, 0, 0)
v=ConvertToYV12()

#  DEINTERLACING (1)
v=ConditionalFilter(v, TomsMoComp(v,1,5,1), v, "current_frame", "greaterthan", "34489")

#  DENOISING: choose one combination (or none)
Undot(v)
mergechroma(blur(1.3))

#  CROPPING
crop(0,2,720,572)

#  RESIZING
LanczosResize(640,464)
Salut!

Re: AviSynth - Filtres variable en un mateix vídeo (PER EXPERTS)

Publicat: dg. abr. 27, 2008 22:46
Autor: huGas.cat
arakelov ha escrit:
huGas.cat ha escrit:Ah! I si hi ha un delogo pel mig?
Aquí tens un exemple, amb delogo+conditionalfilter+denoising
Perfecte, gràcies!

I si vull fer el de careta+crèdits? Es que és l'únic que no em funciona... :roll:

Salut i moltes gràcies de nou!
Gerard

Re: AviSynth - Filtres variable en un mateix vídeo (PER EXPERTS)

Publicat: dg. abr. 27, 2008 22:55
Autor: Petiso
Upos, me carregat un parèntesis de mes .....la funció sería:
function f_toms(int i) {
return ((i<=150) || (i>= 60038)) ? 0 : 1
}
Adéu !

Re: AviSynth - Filtres variable en un mateix vídeo (PER EXPERTS)

Publicat: dl. abr. 28, 2008 7:14
Autor: huGas.cat

Codi: Selecciona’ls tots

# Created with Gordian Knot
#
# http://gknot.doom9.org

#  PLUGINS
LoadPlugin("C:\PROGRA~1\GORDIA~1\DGMPGDec\DGDecode.dll")
LoadPlugin("C:\PROGRA~1\GORDIA~1\AviSynthPlugins\UnDot.dll")
LoadPlugin("C:\PROGRA~1\GORDIA~1\AviSynthPlugins\TomsMoComp.dll")
LoadVirtualdubPlugin("C:\PROGRA~1\GORDIA~1\VIRTUA~1\plugins\delogo.vdf", "delogo")

#  SOURCE
v= mpeg2source("K:\Documents\Desktop\provamatins2\04-28_07-59-06_(TV3)(Els matins)_00.d2v")

# DEINTERLACING (1)
function f_toms(int i) {
return ((i<=100) || (i>= 300)) ? 0 : 1
}

v = ConditionalFilter(v, v, TomsMoComp(v,1,5,1), "f_toms(current_frame)", "equals", "1")

#  CROPPING
crop(v,10,4,700,568)

#  RESIZING
LanczosResize(640,480)

#  DENOISING: choose one combination (or none)
Undot()
Ara va bé, però quan li poso el delogo no m'ho fa:

Codi: Selecciona’ls tots

# Created with Gordian Knot
#
# http://gknot.doom9.org

#  PLUGINS
LoadPlugin("C:\PROGRA~1\GORDIA~1\DGMPGDec\DGDecode.dll")
LoadPlugin("C:\PROGRA~1\GORDIA~1\AviSynthPlugins\UnDot.dll")
LoadPlugin("C:\PROGRA~1\GORDIA~1\AviSynthPlugins\TomsMoComp.dll")
LoadVirtualdubPlugin("C:\PROGRA~1\GORDIA~1\VIRTUA~1\plugins\delogo.vdf", "delogo")

#  SOURCE
v= mpeg2source("K:\Documents\Desktop\provamatins2\04-28_07-59-06_(TV3)(Els matins)_00.d2v")

# DELOGO
v= ConvertToRGB()
delogo(1, "", "", "", "", "K:\Vídeos\El Cor de la Ciutat\tv3.bmp", 15, 40, 0, 0)
v= ConvertToYV12()

# DEINTERLACING (1)
function f_toms(int i) {
return ((i<=100) || (i>= 300)) ? 0 : 1
}

v = ConditionalFilter(v, v, TomsMoComp(v,1,5,1), "f_toms(current_frame)", "equals", "1")

#  CROPPING
crop(v,10,4,700,568)

#  RESIZING
LanczosResize(640,480)

#  DENOISING: choose one combination (or none)
Undot()
Salut i gràcies!
Gerard

Re: AviSynth - Filtres variable en un mateix vídeo (PER EXPERTS)

Publicat: dl. abr. 28, 2008 10:20
Autor: arakelov
huGas, el delogo en aquests casos el delogo també necessita la "v" com a 1er paràmetre:

delogo(v,1, "", "", "", "", "f:\delogo masks\K3\repair2.bmp", 15, 40, 0, 0)

Re: AviSynth - Filtres variable en un mateix vídeo (PER EXPERTS)

Publicat: dl. abr. 28, 2008 10:50
Autor: huGas.cat
arakelov ha escrit:huGas, el delogo en aquests casos el delogo també necessita la "v" com a 1er paràmetre:

delogo(v,1, "", "", "", "", "f:\delogo masks\K3\repair2.bmp", 15, 40, 0, 0)
Ara sí! Però també ens deixavem aquesta: :P
v=ConvertToRGB(v)
Salut!
Gerard

P.D.: Que complicat... :lol:

Re: AviSynth - Filtres variable en un mateix vídeo (PER EXPERTS)

Publicat: dl. abr. 28, 2008 11:02
Autor: arakelov
Doncs és curiós, perquè a mi v=ConvertToRGB() sí que em funciona, en canvi en el v=ConvertToRGB(v) sí que li he de posar, si no se'm queixa...

Caldria estudiar una mica més a fons aquestes funcions, els paràmetres que mengen, l'objecte que retornen, etc... Avisynth és tot un món :lol:

Salut!

Re: AviSynth - Filtres variable en un mateix vídeo (PER EXPERTS)

Publicat: dg. maig 18, 2008 19:54
Autor: Ayu
Suposo que no et fa res que faci servir la funció per a altres filtres que no siguin el deinterlace, oi? : P

EDITO: Al final no em fa falta : P