Incrustation d'une image ou d'une video

Modérateur: Modérateurs

Incrustation d'une image ou d'une video

Messagepar leon1789 » Lun 29 Aoû, 2011 18:34

Version du 09-07-2012

Voici une fonction avisynth Incrustation qui permet d'incruster soit une image, soit une petite vidéo, dans une video originale.

function Incrustation (clip video, clip "video2", string "image", int "opacite", int "x", int "y", int "larg", int "haut", int "depart", int "fin", float "fade", float "fadeIn", float "fadeOut", bool "verbose")

video désigne la video originale ;
video2 / image désigne la vidéo / image à incruster ;
opacite (entier entre 0 et 100) désigne l'opacité de l'incrustation ;
x, y indiquent la position de l'incrustation (coin supérieur gauche de l'objet incrusté) ;
larg, haut indiquent la largeur et la hauteur de l'incrustation ;
depart indique le numéro de l'image de la video originale à partir de laquelle l'incrustation commence ;
fin indique le numéro de l'image de la video originale à laquelle l'incrustation se termine ;
fade indique le nombre de secondes pendant lesquelles il y a fondu de l'incrustation (ouvrant et fermant) ;
fadeIn indique le nombre de secondes pendant lesquelles il y a fondu ouvrant de l'incrustation ;
fadeOut indique le nombre de secondes pendant lesquelles il y a fondu fermant de l'incrustation ;
verbose permet l'affichage des constantes du script.

Par défaut,
opacite = 100 : incrustation "totale" ;
x=0 et y=0 : l'incrustation est positionnée en haut à gauche de la video originale ;
larg et haut sont les dimensions initiales de l'objet incrusté ;
depart = 0 : l'incrustation commence tout de suite ;
fin = depart + longueur de la vidéo incrustée , ou , numéro de l'image de la video originale pour une dernière image incrustée ;
fade=0 , fadeIn=0 , fadeOut=0 : pas de fondu ;
verbose = false : pas d'affichage des constantes du script.

Le script avisynth : fichier Incrustation.zip ici http://leon1789.perso.sfr.fr/avisynth/

Exemple d'une incrustation d'une vidéo qui s'incruste à partir de l'image 100 jusqu'à l'image 400, sur une hauteur de 200 points (la largeur étant calculée automatiquement pour garder le bon aspect de la vidéo incrustée), avec des fondus entrant et sortant de 3.75 secondes :
Code: Tout sélectionner
video = aviSource("01.avi")
video2 = aviSource("Extrait.avi")
video = video.Incrustation(video2=video2, haut=200, depart=100, fin=400, fade=3.75)


Exemple d'incrustation (en haut à gauche) d'une image logo (qu'on ne redimensionne pas) au départ d'une video et jusqu'à son terme :
Code: Tout sélectionner
video.Incrustation(image="logo")


Exemple d'incrustation (en haut à gauche) d'une video logo (qu'on ne redimensionne pas) au départ d'un video et jusqu'à son terme (quitte à faire boucler la vidéo logo) :
Code: Tout sélectionner
video.Incrustation(video2=logo.loop)     # Bien mettre le ".loop"
Dernière édition par leon1789 le Lun 09 Juil, 2012 16:10, édité 5 fois.
Avatar de l’utilisateur
leon1789
 
Messages: 775
Inscription: 26 Aoû 2007

Messagepar Underground78 » Lun 29 Aoû, 2011 18:41

Salut,

Je me suis permis de mettre le script sur pastebin, je trouve un peu complexe d'utiliser Megaupload pour un si petit fichier. ;)
Avatar de l’utilisateur
Underground78
Administrateur
Administrateur
 
Messages: 11267
Inscription: 06 Fév 2007
Localisation: France

Messagepar leon1789 » Lun 29 Aoû, 2011 19:03

oui, tu as bien fait ! :)
Avatar de l’utilisateur
leon1789
 
Messages: 775
Inscription: 26 Aoû 2007

Messagepar pepsilite » Lun 29 Aoû, 2011 19:18

Si je ne m'abuse, c'est un peu la même chose que l'incrustation de logo dans m4ng? (sauf qu'on peut incruster une vidéo et pas seulement une image)
05/07/15 m4ng v5 est disponible au téléchargement en version finale : m4ng v5
Avatar de l’utilisateur
pepsilite
The Grinch
The Grinch
 
Messages: 22990
Inscription: 03 Fév 2007
Localisation: Chez moi le plus possible ...

Messagepar leon1789 » Lun 29 Aoû, 2011 20:20

Effectivement :)
Avatar de l’utilisateur
leon1789
 
Messages: 775
Inscription: 26 Aoû 2007

Messagepar pepsilite » Ven 14 Oct, 2011 21:58

Tu peux donner un exemple de code pour incruster une image?
[EDIT]J'ai trouvé, c'est bon :D
Sinon, il faut une image avec une résolution paire sinon message d'erreur. Ce serait bien d'ajouter une "parité" automatique pour la résolution. Comment spécifie-t-on qu'on veut que le "logo" soit incrusté indéfiniment?
05/07/15 m4ng v5 est disponible au téléchargement en version finale : m4ng v5
Avatar de l’utilisateur
pepsilite
The Grinch
The Grinch
 
Messages: 22990
Inscription: 03 Fév 2007
Localisation: Chez moi le plus possible ...

Messagepar leon1789 » Sam 15 Oct, 2011 18:24

Exact, il faut une résolution paire (peut-être même multiple de 4 dans la largeur, je n'ai pas vérifié). Je vais voir ce que je peux faire.

Exemple d'incrustation (en haut à gauche) d'une image logo (qu'on ne redimensionne pas) au départ d'un film et jusqu'à sont terme :
Code: Tout sélectionner
film.Incrustation(image="logo")


Exemple d'incrustation (en haut à gauche) d'une video logo (qu'on ne redimensionne pas) au départ d'un film et jusqu'à sont terme (quitte à faire boucler la vidéo logo) :
Code: Tout sélectionner
film.Incrustation(video=logo.loop)     # Bien mettre le ".loop"
Avatar de l’utilisateur
leon1789
 
Messages: 775
Inscription: 26 Aoû 2007

Messagepar pepsilite » Sam 15 Oct, 2011 18:33

Pour image="logo", j'ai fini par trouver, sauf que c'est "chemin du logo" en fait.

"loop", je ne connaissais pas l'existence de cette instruction...
Merci.

Je suis en train de mettre au point une nouvelle fonctionnalité de m4ng et j'ai utilisé ton "incrustation" pour justement incruster un logo, ça ne te pose pas de souci?
05/07/15 m4ng v5 est disponible au téléchargement en version finale : m4ng v5
Avatar de l’utilisateur
pepsilite
The Grinch
The Grinch
 
Messages: 22990
Inscription: 03 Fév 2007
Localisation: Chez moi le plus possible ...

Messagepar pepsilite » Sam 15 Oct, 2011 18:38

"loop" est censé fonctionner avec une image aussi?
Je l'ai essayé et ça a carrément fait planter m4ng... Finalement si on ne met aucun départ ou fin, l'image reste indéfiniment, j'ai ma réponse ;)
05/07/15 m4ng v5 est disponible au téléchargement en version finale : m4ng v5
Avatar de l’utilisateur
pepsilite
The Grinch
The Grinch
 
Messages: 22990
Inscription: 03 Fév 2007
Localisation: Chez moi le plus possible ...

Messagepar leon1789 » Sam 15 Oct, 2011 18:44

pepsilite a écrit:Pour image="logo", j'ai fini par trouver, sauf que c'est "chemin du logo" en fait.

"loop", je ne connaissais pas l'existence de cette instruction...
Merci.

Je suis en train de mettre au point une nouvelle fonctionnalité de m4ng et j'ai utilisé ton "incrustation" pour justement incruster un logo, ça ne te pose pas de souci?

aucun souci.
Fais attention aux différents FPS entre le film et la vidéo incrustée. ;)
Avatar de l’utilisateur
leon1789
 
Messages: 775
Inscription: 26 Aoû 2007

Messagepar pepsilite » Sam 15 Oct, 2011 18:50

Ben pour l'instant, j'incruste une image, pas une vidéo ... mais ça fait quoi en fait? ça joue tout au FPS de la vidéo principale?
05/07/15 m4ng v5 est disponible au téléchargement en version finale : m4ng v5
Avatar de l’utilisateur
pepsilite
The Grinch
The Grinch
 
Messages: 22990
Inscription: 03 Fév 2007
Localisation: Chez moi le plus possible ...

Messagepar leon1789 » Sam 15 Oct, 2011 18:51

pepsilite a écrit:"loop" est censé fonctionner avec une image aussi?

Loop agit sur des vidéos qui ont moins de 10 000 000 d'images (sans rire :) )
Avatar de l’utilisateur
leon1789
 
Messages: 775
Inscription: 26 Aoû 2007

Messagepar pepsilite » Sam 15 Oct, 2011 18:51

leon1789 a écrit:Exact, il faut une résolution paire (peut-être même multiple de 4 dans la largeur, je n'ai pas vérifié). Je vais voir ce que je peux faire.

Ben c'est simple tu divises les résolutions par 4 et tu les remultiplies par 4... Ça fera pile poil ce qu'il faut

05/07/15 m4ng v5 est disponible au téléchargement en version finale : m4ng v5
Avatar de l’utilisateur
pepsilite
The Grinch
The Grinch
 
Messages: 22990
Inscription: 03 Fév 2007
Localisation: Chez moi le plus possible ...

Messagepar pepsilite » Sam 15 Oct, 2011 18:53

leon1789 a écrit:
pepsilite a écrit:"loop" est censé fonctionner avec une image aussi?

Loop agit sur des vidéos qui ont moins de 10 000 000 d'images (sans rire :) )

Et au dessus de 10.000.000 on fait comment? :kes:
05/07/15 m4ng v5 est disponible au téléchargement en version finale : m4ng v5
Avatar de l’utilisateur
pepsilite
The Grinch
The Grinch
 
Messages: 22990
Inscription: 03 Fév 2007
Localisation: Chez moi le plus possible ...

Messagepar leon1789 » Sam 15 Oct, 2011 18:53

pepsilite a écrit:mais ça fait quoi en fait? ça joue tout au FPS de la vidéo principale?

Oui, il faut que le script fasse une convertion (convertFPS ou changeFPS) pour que le FPS de la vidéo inscrustée vienne coller avec celui du film principal.

Pour incruster une image, pas de souci, car ImageReader fait le travail (on lui précise directement le FPS du film)
Dernière édition par leon1789 le Sam 15 Oct, 2011 18:55, édité 1 fois.
Avatar de l’utilisateur
leon1789
 
Messages: 775
Inscription: 26 Aoû 2007

Messagepar pepsilite » Sam 15 Oct, 2011 18:55

leon1789 a écrit:
pepsilite a écrit:mais ça fait quoi en fait? ça joue tout au FPS de la vidéo principale?

Oui, il faut que le script fasse une convertion (convertFPS ou changeFPS) pour que le FPS de la vidéo inscrustée vienne coller avec celle du film.
Pourquoi tu n'ajoutes pas une entrée FPS= à la fonction? ça se ferait tout seul ensuite ...
05/07/15 m4ng v5 est disponible au téléchargement en version finale : m4ng v5
Avatar de l’utilisateur
pepsilite
The Grinch
The Grinch
 
Messages: 22990
Inscription: 03 Fév 2007
Localisation: Chez moi le plus possible ...

Messagepar leon1789 » Sam 15 Oct, 2011 19:27

Baf, pas la peine que l'utilisateur s'embête à préciser le FPS puisque le script peut le connaître tout seul.
Avatar de l’utilisateur
leon1789
 
Messages: 775
Inscription: 26 Aoû 2007

Messagepar pepsilite » Sam 15 Oct, 2011 19:50

C'est aussi ce que je me disais, mais bon :D
05/07/15 m4ng v5 est disponible au téléchargement en version finale : m4ng v5
Avatar de l’utilisateur
pepsilite
The Grinch
The Grinch
 
Messages: 22990
Inscription: 03 Fév 2007
Localisation: Chez moi le plus possible ...

Messagepar leon1789 » Dim 16 Oct, 2011 11:30

pepsilite a écrit:
leon1789 a écrit:Exact, il faut une résolution paire (peut-être même multiple de 4 dans la largeur, je n'ai pas vérifié). Je vais voir ce que je peux faire.

Ben c'est simple tu divises les résolutions par 4 et tu les remultiplies par 4... Ça fera pile poil ce qu'il faut

En fait, je faisais déjà cette opération... mais bêtement trop tard dans le script !
Il suffit de déplacer les deux lignes
Code: Tout sélectionner
21.  film = film.ConvertToYV12
22.  video = video.ConvertToYV12.KillAudio

en les mettant en ligne 35, après
Code: Tout sélectionner
34.  video = video.LanczosResize(L,H)
Avatar de l’utilisateur
leon1789
 
Messages: 775
Inscription: 26 Aoû 2007

Messagepar pepsilite » Dim 16 Oct, 2011 12:16

C'est bon, ça marche avec une image à résolution impaire...
05/07/15 m4ng v5 est disponible au téléchargement en version finale : m4ng v5
Avatar de l’utilisateur
pepsilite
The Grinch
The Grinch
 
Messages: 22990
Inscription: 03 Fév 2007
Localisation: Chez moi le plus possible ...

Messagepar Subbat » Lun 09 Juil, 2012 15:40

Histoire de ne pas polluer le sujet de oliver_s...

leon1789 a écrit:Effectivement, c'est pas cool que "video" ne désigne pas la même chose.
Comment appeler les deux premiers arguments de Incrustation : "video" pour la vidéo principale, et "video2" pour l'inscrustée ?


Bah en même temps ça semble fonctionner... mais sinon pourquoi ne pas simplement laisser "petite_video"... et du coup, tu ne serais peut-être plus obligé de mettre "video.incrustation(video=petite_video,...)" par "video.incrustation(petite_video,...)" non ?

Après à la place de petite_video, que ce soit video2 ou video_incrust ou que sais-je c'est pas grave... mais ce que je ne comprend pas c'est ce passage par video=petite_video...
Image
Image Image
Avatar de l’utilisateur
Subbat
Administrateur
Administrateur
 
Messages: 8409
Inscription: 11 Déc 2008
Localisation: Quelque part... dans le centre de la France...

Messagepar Subbat » Lun 09 Juil, 2012 15:48

Bon si j'avais pris le temps de regarder ton avsi, j'aurais compris... du coup, effectivement, remplacer film par video et video par video2 pourrait être bien je trouves... et du coup je pense que tu n'aurais plus à mettre le video=petite_video si je ne me trompes pas...

Bon le hic, c'est si je ne m'abuse tu utilises film dans tous tes scripts toi... Tu devrais peut-être te mettre à utiliser video à la place... d'autant que pour faire multilingue video c'est idem en français et en anglais... alors que film, c'est plutôt movie en anglais... :mrgreen:
Image
Image Image
Avatar de l’utilisateur
Subbat
Administrateur
Administrateur
 
Messages: 8409
Inscription: 11 Déc 2008
Localisation: Quelque part... dans le centre de la France...

Messagepar leon1789 » Lun 09 Juil, 2012 16:12

Bon ben c'est changé (dans le script et les commentaires) : video, video2 à la place de film, video !
Avatar de l’utilisateur
leon1789
 
Messages: 775
Inscription: 26 Aoû 2007

Messagepar Subbat » Lun 09 Juil, 2012 16:23

Trop fort leon... mais alors pourquoi faut-il laisser le "video2=video2, ..." sur la ligne "video = video.Incrustation(video2=video2, haut=200, depart=100, fin=400, fade=3.75)"
Image
Image Image
Avatar de l’utilisateur
Subbat
Administrateur
Administrateur
 
Messages: 8409
Inscription: 11 Déc 2008
Localisation: Quelque part... dans le centre de la France...

Messagepar leon1789 » Lun 09 Juil, 2012 17:03

video.incrustation(video2=video2, ...).

Le "video2" du membre gauche de l'égalité désigne le nom de la variable utilisée à l'intérieure du script pour désigner la vidéo incrustée,
alors que le "video2" du membre de droite de l'égalité désigne le nom de la variable utilisée à l'extérieure du script pour désigner la vidéo incrustée.


A l'extérieur du script, l'utilisateur a tout le loisir de nommer comme il le souhaite la vidéo à incruster : par exemple, "ma_petite_video_a_inscruster".
En revanche, pour faire passer l'information au script d'incrustation, il faut se mettre sur la longueur d'onde du script en précisant obligatoirement l'argument "video2=..."
D'où "video2 = ma_petite_video_a_inscruster".


Mais si l'utilisateur a choisi lui-même de nommer à l'extérieur du script sa vidéo à incruster par "video2", alors l'instruction devient "video2 = video2" (ce qui peut surprendre, mais qui montre surtout une cohérence entre l'extérieur et l'intérieur du script).

Bon, beaucoup de blabla pour pas grand chose en fait :mrgreen:



Une dernière chose, le paramètre "video2=..." n'est obligatoire que lorsqu'on veut incruster une video, sinon on utilise "image=..." qui précise une image à incruster. Seul un des deux paramètres "video2 / image" doit être utilisé.
Avatar de l’utilisateur
leon1789
 
Messages: 775
Inscription: 26 Aoû 2007

Suivante

Retourner vers Scripts Avisynth

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités