Animate
(clip, int
start_frame, int end_frame, string filtername,
start_args, end_args)
ApplyRange
(clip, int start_frame,
int end_frame, string
filtername, args)
Animate
est un méta-filtre
qui évalue le paramètre filter en
faisant constamment varier ses arguments. A l'image start_frame et
avant, le filter est
évalué avec les arguments données par start_args. A
l'image end_frame et après, le filter est
évalué avec les arguments données par end_args. Entre,
les arguments sont interpolés linéairement pour
obtenir une transition douce.
ApplyRange
est un cas
particulier de Animate
où start_args
= end_args, et qui est
présent depuis v2.51. Ce
filtre peut être utilisé quand vous voulez
appliquer un certain filtre sur une certaine plage d'image d'une video. Une
autre différence avec Animate
est
que args ne peuvent contenir une video.
A partir de v2.53 ce filtre supporte l'audio,
et start_frame peut être
égal à end_frame
(de manière à ce qu'une seule image soit
traitée).
Le filter doit être entouré de guillemets (c'est une chaîne de caractères), et les deux listes d'arguments start_args et end_args ne sont pas entre parenthèses. Les chaînes de caractères et les video ne peuvent pas être interpolées, et doivent donc être identiques dans les deux listes d'arguments. Une remarque importante cependant: si vous utilisez une video en tant que premier argument, celle ci ne doit pas être utilisée dans start_args et end_args. Par exemple:
v = Version()
Animate(v,0,149,"Crop", v,0,0,64,32, v,316,0,64,32)
renvoie une erreur, puisque la première image (donnée par la fonction animate) serait calculée avec la syntaxe non valide Crop(v, v, 0, 0, 64, 32).
Ce filtre ne traitera pas correctement des changements de pistes audio, et je ne recommande donc pas l'utilisation de filtre qui modifierai la piste audio. Et s'il vous plait, ne mettez pas des paramètres initiaux et finaux qui produiraient une image de sortie de résolution différente.
L'argument filtername peut
être Animate
si vous
souhaitez une interpolation quadratique plutôt que
linéaire.
Exemples:
# Cré une version en mouvement de la video "Version":
ver = Version()
Animate(0,149,"Crop", ver,0,0,64,32, ver,316,0,64,32)
# La même chose autrement:
ver = Version()
Animate(ver,0,149,"Crop", 0,0,64,32, 316,0,64,32)
# Fondu au blanc:
AviSource("E:\pdwork\DO-Heaven.AVI")
Animate(100,200,"Levels", 0,1,255,0,255, 0,1,255,255,255)
# Zoom au centre d'une video de 320x240, en commencant avec un facteur d'échelle de
# 1:1 à l'image 100 et finissant avec un facteur d'échelle de 4:1
# à l'image 200:
clip = AviSource("E:\pdwork\DO-Heaven.avi")
Animate(100,200,"BicubicResize", clip,320,240,0,0,320,240, clip,320,240,120,90,80,60)
# Animate(clip, 100,200,"BicubicResize", 320,240,0,0,320,240, 320,240,120,90,80,60) # marche également
# Dezoom le texte "Hello, World!" en partant du centre d'une video de 320x240:
BlankClip(width=320, height=240)
Animate(0,48,"Subtitle", "Hello, World!",160,120,0,99999,"Arial",0,
\ "Hello, World!",25,130,0,99999,"Arial",48)
# Zoomer sur le clip c2 en le superposant au clip c1:
Function myfunc(clip c1, clip c2, int x, int y, int w, int h)
{
w = w - w%2
h = h - h%2
my_c2 = BicubicResize(c2,w,h)
Overlay(c1,my_c2,x,y)
}
c1 = AviSource("D:\Captures\jewel.avi")
c2 = AviSource("D:\Captures\atomic.avi").BicubicResize(320,240) # c2 est plus petit que c1
Animate(0,1000,"myfunc",c1,c2,10,10,10,10,c1,c2,300,300,360,288)
# orou bien
# Animate(c1,0,1000,"myfunc", c2,10,10,10,10, c2,300,300,360,288)
# par contre, la ligne suivante ne marche pas puisque 3 clips sont passés à myfunc (c1, c1 et c2), alors que seulement 2 sont autorisés:
# Animate(c1,0,1000,"myfunc",c1,c2,10,10,10,10,c1,c2,300,300,360,288)
# Une petite image s'agrandit sur une video noire jusqu'a la remplacer:
function res(clip clip, clip "LClip", int "width", int "height", int "centerX", int "centerY") {
LClip = BicubicResize(LClip, width, height)
Overlay(clip, LClip, centerX-LClip.width/2, centerY-LClip.height/2)
}
function resize(clip clip, clip "LClip", int "start_frame", int "start_width", int "start_height",
\ int "end_frame", int "end_width", int "end_height", int "centerX", int "centerY") {
return Animate(start_frame, end_frame, "res", clip, LClip, start_width, start_height, centerX, centerY,
\ clip, LClip, end_width, end_height, centerX, centerY)
}
clip = AviSource("D:\captures\jewel.avi").BicubicResize(640,480).ConvertToRGB()
black = BlankClip(clip)
resize(black, clip, 0, 120, 120*clip.height/clip.width, 500, 640, 480, clip.width/2, clip.height/2)
ver = Version()
return ver.ApplyRange(0,149,"Crop", 158,0,64,32)
AviSource("E:\pdwork\DO-Heaven.avi").BicubicResize(320,240)
ApplyRange(0,48,"Subtitle", "Hello, World!",25,130,0,99999,"Arial",48)
#qui est la même chose que:
clip = AviSource("E:\pdwork\DO-Heaven.avi").BicubicResize(320,240)
ApplyRange(clip, 0,48,"Subtitle", "Hello, World!",25,130,0,99999,"Arial",48)
$Date: 2005/10/06 21:10:07 $
French translation date: 2005/10/06 JasonFly macpaille@users.sourceforge.net