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

Manuals i tutorials.

Moderadors: Petiso, Ayu

Avatar de l’usuari

Autor del tema
Petiso
Site Admin
Site Admin
Entrades: 16297
Membre des de: dv. oct. 06, 2006 13:13
Status: Desconnectat

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

#1

Entrada Autor: Petiso » dc. abr. 23, 2008 16:31

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 !


Imatge Imatge

Avatar de l’usuari

arakelov
Entrades: 10689
Membre des de: ds. feb. 17, 2007 16:37
Ubicació: Sant Martí (BCN)
Status: Desconnectat

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

#2

Entrada Autor: arakelov » ds. abr. 26, 2008 21:52

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!
Why you think the net was born? Porn! Porn! Porn!

Avatar de l’usuari

huGas.cat
Entrades: 2315
Membre des de: dc. maig 09, 2007 19:59
Ubicació: Banyoles, Pla de l'Estany
Contacta:
Status: Desconnectat

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

#3

Entrada Autor: huGas.cat » dg. abr. 27, 2008 9:31

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
Imatge

Avatar de l’usuari

Autor del tema
Petiso
Site Admin
Site Admin
Entrades: 16297
Membre des de: dv. oct. 06, 2006 13:13
Status: Desconnectat

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

#4

Entrada Autor: Petiso » dg. abr. 27, 2008 10:41

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()
Imatge Imatge

Avatar de l’usuari

huGas.cat
Entrades: 2315
Membre des de: dc. maig 09, 2007 19:59
Ubicació: Banyoles, Pla de l'Estany
Contacta:
Status: Desconnectat

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

#5

Entrada Autor: huGas.cat » dg. abr. 27, 2008 10:44

Petiso ha escrit:Et falten aquestes V en vermell :-)
Ok! Sí, ara sí va bé! :wink:

Gràcies!

Salut,
Gerard
Imatge

Avatar de l’usuari

huGas.cat
Entrades: 2315
Membre des de: dc. maig 09, 2007 19:59
Ubicació: Banyoles, Pla de l'Estany
Contacta:
Status: Desconnectat

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

#6

Entrada Autor: huGas.cat » dg. abr. 27, 2008 10:54

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
Imatge

Avatar de l’usuari

Autor del tema
Petiso
Site Admin
Site Admin
Entrades: 16297
Membre des de: dv. oct. 06, 2006 13:13
Status: Desconnectat

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

#7

Entrada Autor: Petiso » dg. abr. 27, 2008 11:02

Afegit una petita explicació de que és cada cosa :-)

Adéu !
Imatge Imatge

Avatar de l’usuari

arakelov
Entrades: 10689
Membre des de: ds. feb. 17, 2007 16:37
Ubicació: Sant Martí (BCN)
Status: Desconnectat

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

#8

Entrada Autor: arakelov » dg. abr. 27, 2008 21:22

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!
Why you think the net was born? Porn! Porn! Porn!

Avatar de l’usuari

huGas.cat
Entrades: 2315
Membre des de: dc. maig 09, 2007 19:59
Ubicació: Banyoles, Pla de l'Estany
Contacta:
Status: Desconnectat

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

#9

Entrada Autor: huGas.cat » dg. abr. 27, 2008 22:46

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
Imatge

Avatar de l’usuari

Autor del tema
Petiso
Site Admin
Site Admin
Entrades: 16297
Membre des de: dv. oct. 06, 2006 13:13
Status: Desconnectat

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

#10

Entrada Autor: Petiso » dg. abr. 27, 2008 22:55

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 !
Imatge Imatge

Avatar de l’usuari

huGas.cat
Entrades: 2315
Membre des de: dc. maig 09, 2007 19:59
Ubicació: Banyoles, Pla de l'Estany
Contacta:
Status: Desconnectat

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

#11

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

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
Imatge

Avatar de l’usuari

arakelov
Entrades: 10689
Membre des de: ds. feb. 17, 2007 16:37
Ubicació: Sant Martí (BCN)
Status: Desconnectat

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

#12

Entrada Autor: arakelov » dl. abr. 28, 2008 10:20

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)
Why you think the net was born? Porn! Porn! Porn!

Avatar de l’usuari

huGas.cat
Entrades: 2315
Membre des de: dc. maig 09, 2007 19:59
Ubicació: Banyoles, Pla de l'Estany
Contacta:
Status: Desconnectat

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

#13

Entrada Autor: huGas.cat » dl. abr. 28, 2008 10:50

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:
Imatge

Avatar de l’usuari

arakelov
Entrades: 10689
Membre des de: ds. feb. 17, 2007 16:37
Ubicació: Sant Martí (BCN)
Status: Desconnectat

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

#14

Entrada Autor: arakelov » dl. abr. 28, 2008 11:02

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!
Why you think the net was born? Porn! Porn! Porn!

Avatar de l’usuari

Ayu
Entrades: 2518
Membre des de: dv. oct. 06, 2006 19:55
Ubicació: Perdut enmig de l'oblit
Status: Desconnectat

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

#15

Entrada Autor: Ayu » dg. maig 18, 2008 19:54

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
Imatge

Respon