Version imprimable du sujet

Cliquez ici pour voir ce sujet dans son format original

Forum DivX Video Ripp-it After Me Ri4m _ Filtres avisynth.... _ Incrustation d'une image ou d'une video

Écrit par : leon1789 20/11/2010 16:23

Version du 29-08-2011

Voici une fonction avisynth Incrustation qui permet d'incruster soit une image, soit une vidéo, dans un film.

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

film désigne le film original ;
video / 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 du film original à partir de laquelle l'incrustation commence ;
fin indique le numéro de l'image du film original à 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 du film
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 , dernière image du film pour une 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
film = aviSource("01.avi")
petite_video = aviSource("Extrait.avi")
film = film.Incrustation(video=petite_video, haut=200, depart=100, fin=400, fade=3.75)

 test.zip ( 1.19 Mo ) : 406


Exemple d'une incrustation d'images :
film = film.Incrustation(image="SG1_Logo.jpg", x=50,y=80)
film = film.Incrustation(image="SG1_Logo.jpg", x=300,y=180, opacite=25)

Écrit par : SG1 20/11/2010 17:13

Bonjour,

Merci...
...je repasse après quelques tests.

L'idée de base, pour ma part, était de pouvoir créer un cache pour certains cas difficiles pour lesquels le floutage ne serait pas nickel !

Juste pour info, le script "consomme" en ressources ?

@+

Écrit par : leon1789 20/11/2010 17:37

Je me suis aperçu que j'avais oublié de donner la possibilité de dimensionner l'incrustation !
Du coup, j'ai ajouté deux nouveaux paramètres optionnels : larg et haut...



Citation (SG1 @ samedi 20 novembre 2010 à 17:13) *
Juste pour info, le script "consomme" en ressources ?

Normalement non, le script est relativement rapide...
...sauf dans un cas : c'est celui où on veut incruster la vidéo à elle-même avec beaucoup d'images en décalage. Là, c'est très chaud !

Écrit par : SG1 20/11/2010 17:59

Citation
Là, c'est très chaud !

Mon pauvre ordi va en perdre ses puces... gniark.gif

Écrit par : leon1789 20/11/2010 18:34

Tiens, correction d'un bug provoqué par depart=1 !

D'ailleurs, ce bug existait aussi dans BlurSubtitle...

Écrit par : leon1789 20/11/2010 19:01

Encore une amélioration :
on peut maintenant incruster une vidéo avec un FPS différent de celui du film original, sans que cela change la durée de la vidéo incrutée.

En effet, imaginons que le film soit en 25 fps et que la vidéo incrustée dure 1 minute en 30 fps.
Avec la version précédente, l'incrustation durait 1min et 12 secondes au total, à cause des FPS différents !
Maintenant, avec cette nouvelle version, l'incrustation dure exactement 1 minute. aga.gif

Écrit par : SG1 20/11/2010 19:30

Bonsoir,

Du calme, j'ai pas eu le temps de tester la première version... gniark.gif

Citation
D'ailleurs, ce bug existait aussi dans BlurSubtitle...

Je ne sais pas ce que ça provoque, mais in ne s'en était pas aperçu...

Citation
on peut maintenant incruster une vidéo avec un FPS différent de celui du film original, sans que cela change la durée de la vidéo incrustée.

On n'arrête pas le progrès...

@+

Écrit par : leon1789 20/11/2010 20:22

Citation (SG1 @ samedi 20 novembre 2010 à 19:30) *
Du calme, j'ai pas eu le temps de tester la première version... gniark.gif

Faut passer en seconde vitesse, SG1 !

Citation (SG1 @ samedi 20 novembre 2010 à 19:30) *
Citation
D'ailleurs, ce bug existait aussi dans BlurSubtitle...

Je ne sais pas ce que ça provoque, mais in ne s'en était pas aperçu...

il faut dire que le bug avait très peu de chance de se produire car il fallait que la détection des sous-titres commence exactement à la seconde image (pas la première, ni la troisième...) du film. an_what.gif

Citation (SG1 @ samedi 20 novembre 2010 à 19:30) *
Citation
on peut maintenant incruster une vidéo avec un FPS différent de celui du film original, sans que cela change la durée de la vidéo incrustée.

On n'arrête pas le progrès...

En fait, j'ai eu ce problème quand j'ai voulu jouer avec deux vidéos filmées par des appareils photos différents : l'un était en 16.67 fps et l'autre en 29.97. Du coup, les choses avançaient quasiment deux fois vite sur un film que sur l'autre ! gniark.gif

Écrit par : vince741 30/11/2010 23:41

Bonjour,

Tout d'abord merci pour cette nouvelle fonction.
Je ne m'y connais que très peu en encodage donc je me demandais si il était possible d'ajouter une image dans la video et d'avoir un effet de fade-in fade-out de l'image.

Merci d'avance pour votre réponse.

Écrit par : leon1789 01/12/2010 08:18

Bonjour,
Je pensais que SG1 allait me demander d'ajouter un fondu... mais c'est vince741 le plus prompt !

Je pense que c'est possible (je ne vois pas pourquoi cela serait impossible avec avs)
mais je n'ai pas encore fait le programme. Je m'y attèle dès que possible.

A suivre !

Écrit par : SG1 01/12/2010 13:49

Bonjour,

Citation
Je pensais que SG1 allait me demander d'ajouter un fondu...

Ça, c'est sûr que j'allais te le demander... Mais par manque de temps, je n'ai pas eu la possibilité de tester...

Citation
je ne vois pas pourquoi cela serait impossible avec avs

yahoo3.gif Ben, vouiii, pour Léon, c'est évident !

@+

Écrit par : leon1789 01/12/2010 18:42

yahoo1.gif

Ben voilà,
la version d'aujourd'hui (01-12-2010) donne la possibilité de réaliser des fondus (en ouverture et fermeture).
Les fondus peuvent se réaliser sur une image fixe (jpeg etc.) ou sur une vidéo.
Il faut indiquer le paramètre fade=100 (par exemple) pour que les fondus se fassent sur 100 images.

Est-ce que vous préférez indiquer une durée (en secondes) plutôt qu'un nombre d'images ?
(ça ne coûte qu'une ligne supplémentaire dans le code... mais c'est peut-être plus sympa)

Écrit par : SG1 02/12/2010 13:44

Bonjour,

Citation
Est-ce que vous préférez indiquer une durée (en secondes) plutôt qu'un nombre d'images ?

Pour Image Reader tu avais mis « video.FrameRate » dans le script pour une adaptation automatique au nombre d'image par seconde de la vidéo...

Et on indiquait alors le nombre de secondes...

@+

Écrit par : vince741 02/12/2010 18:39

Citation (leon1789 @ mercredi 01 décembre 2010 à 18:42) *
yahoo1.gif

Ben voilà,
la version d'aujourd'hui (01-12-2010) donne la possibilité de réaliser des fondus (en ouverture et fermeture).
Les fondus peuvent se réaliser sur une image fixe (jpeg etc.) ou sur une vidéo.
Il faut indiquer le paramètre fade=100 (par exemple) pour que les fondus se fassent sur 100 images.

Est-ce que vous préférez indiquer une durée (en secondes) plutôt qu'un nombre d'images ?
(ça ne coûte qu'une ligne supplémentaire dans le code... mais c'est peut-être plus sympa)

Tout d'abord merci aga.gif.
Si c'était possible d'avoir la durée en secondes, je t'en serais gré aga.gif .
(Travaillant avec des sous-titres, je suis bien plus à l'aise avec un timing plutôt qu'avec un nombre d'image ^^.)

Écrit par : leon1789 02/12/2010 19:05

aga.gif

Voilà, c'est fait : indiquer fade = 3.75 pour avoir des fondus de 3.75 secondes.

Écrit par : leon1789 02/12/2010 20:36

J'ai également mis à jour le fichier test.zip présentant une vidéo incrustée dans un film... avec des fondus maintenant cling1.gif

SG1 reconnaitra les bouts de vidéos yahoo1.gif

Écrit par : SG1 03/12/2010 14:18

Bonjour,

Citation (leon1789 @ jeudi 02 décembre 2010 à 20:36) *
SG1 reconnaitra les bouts de vidéos yahoo1.gif

Aucun problème... Tu peux utiliser toutes mes vidéos... gniark.gif

@+

Écrit par : SG1 06/12/2010 18:20

Bonjour Léon,

Une petit complément d'info stp...

J'ai enfin une vidéo ou je vais pouvoir tester ça...

Ton exemple, c'est à partir d'un AVI.

Pour un script standard avec des VOB, il faut placer ton script à quel endroit ?

Merci

@+

Écrit par : leon1789 06/12/2010 19:20

Dès que le film principal et la vidéo à incruster sont "déclarées" dans le script (à partir d'avi ou de vob), on peut effectuer l'incrustation de la vidéo dans le film.

Code
Film_principal = MPEGSource(tructruc)
...
Petite_video = AviSource(bidule)  
...
Film = Film_principal.Incrustation(video=Petite_video, ...)
....




Écrit par : SG1 06/12/2010 20:28

Bonsoir,

Moi, c'est pour tester l'incrustation d'une image...

(Pour incorporer une vidéo, on verra un peu plus tard...)

Mes premiers tests ont l'air extrêmement prometteurs...

...Par contre, j'ai les puces de mon ordi qui sautent partout guix_edoom7.gif gniark.gif

Ça me prend autant de ressource que les floutages du test de L'âge de Cristal.

Bon, je met un encodage complet ce soir...
Si c'est bon, je fais des captures demain.

Pour info, y'a aucune incompatibilité avec ImageReader ou BlurSubtitle ?

@+

Écrit par : leon1789 06/12/2010 20:46

ohmy.gif Pour tes puces, je suis vachement étonné car l'incrustation est quand même bien moins complexe que BlurSubtitle.

...ah ! Elle est de quelle résolution ton image ?



A part ça, je ne pense pas qu'il y ait problème dans l'usage simultanée des deux, ni avec ImageReader aga.gif.

Écrit par : SG1 07/12/2010 13:44

Bonjour,

Je ne suis pas chez moi, en ce moment, donc, pour les images on va attendre un peu...

A part ça, ben l'encodage a réussi...

Citation
...ah ! Elle est de quelle résolution ton image ?

Tu as devancé ma réponse.

Le texte que je devais traduire correspond à celui que l'on avait pour les tests du film L'âge de cristal.
A cette différence que l'arrière-plan était une image fixe. J'aurais pu flouter, mais je pense que l'on aurait vu les défauts.
Et puis, je devais tester ce nouveau script... yahoo3.gif

J'ai donc utilisé une image de taille maxi 720x400 (la taille du film). Évidemment, on est loin de l'incrustation du petit logo !

Je n'ai pas encore regardé sur la TV, mais sur l'ordi, c'est une réussite.
Tu verras par toi même quand j'aurais posté les images...

@+

Edit : Bon, me revoilà pour la suite...

Capture image n°2790a originale


Capture image n°2790b modifiée


Extrait vidéo originale (Enlever le .txt)
 Va.avi.txt ( 1.16 Mo ) : 315


Extrait vidéo modifié (Enlever le .txt)
 Vb.avi.txt ( 600 Ko ) : 277


Et pour finir, la ligne de script que j'ai utilisé...
Citation
Video=Video.Incrustation(image="Z:\Mes Videos\Visiteurs1\02\2623.bmp", larg=720, haut=400, x=0, y=0, opacite=100, depart=2494, fin=2730, fade=0.20, verbose=false)



Écrit par : leon1789 07/12/2010 17:56

Salut,

Citation (SG1 @ mardi 07 décembre 2010 à 13:44) *
J'ai donc utilisé une image de taille maxi 720x400 (la taille du film). Évidemment, on est loin de l'incrustation du petit logo !

ok, mais on est quand même loin d'une image 10 megapixels par exemple.
Normalement, une image 720x400 doit passer sans difficulté.

Citation (SG1 @ mardi 07 décembre 2010 à 13:44) *
Edit : Bon, me revoilà pour la suite...
(...)
Et pour finir, la ligne de script que j'ai utilisé...
Citation
Video=Video.Incrustation(image="Z:\Mes Videos\Visiteurs1\02\2623.bmp", larg=720, haut=400, x=0, y=0, opacite=100, depart=2494, fin=2730, fade=0.20, verbose=false)


Ok, là, c'est bien plus qu'une incrustation, mais un remplacement de toute l'image an_ouarf.gif
Mais ça fonctionne bien.


Tu as utilisé plusieurs images bmp pour faire apparaître les lignes les unes après les autres ?

Écrit par : leon1789 07/12/2010 19:02

Oupsss

Correction d'un (gros !) bug lorsque Fade n'était pas utilisé...


Écrit par : SG1 07/12/2010 19:07

Bonsoir Léon,

Citation
Normalement, une image 720x400 doit passer sans difficulté.

En fait, quand je faisais mes premiers essais, j'avais Firefox qui tournait en arrière-plan en même temps avec 15 onglets ouverts...
Je pense que le ralentissement est surtout dû à ça...

Citation
Mais ça fonctionne bien.

Apparemment... Qu'est ce que tu en penses sur les extraits ?

Citation
Tu as utilisé plusieurs images bmp pour faire apparaître les lignes les unes après les autres ?

Absolument pas... Une seule image en arrière-plan, le texte est un simple sous-titre SSA...

D'après moi, c'est nickel !

@+

Edit :
Citation
Oupsss
Correction d'un (gros !) bug lorsque Fade n'était pas utilisé...

Comme j'ai utilisé le Fade, j'ai rien vu...
Qu'est qu'il aurait pu se passer ?

Écrit par : leon1789 07/12/2010 19:25

Oui, c'est propre, il n'y a pas de doute.

Citation (SG1 @ mardi 07 décembre 2010 à 19:07) *
Citation
Tu as utilisé plusieurs images bmp pour faire apparaître les lignes les unes après les autres ?

Absolument pas... Une seule image en arrière-plan, le texte est un simple sous-titre SSA...

Mais alors, à quoi t'a servi le fade ?

Citation (SG1 @ mardi 07 décembre 2010 à 19:07) *
Citation
Oupsss
Correction d'un (gros !) bug lorsque Fade n'était pas utilisé...

Comme j'ai utilisé le Fade, j'ai rien vu...
Qu'est qu'il aurait pu se passer ?

Ben le script créait tout simplement une erreur (due à une variable non existante) et donc rien n'était possible...
Je me demande comment j'ai pu laisser passer un tel bug ! beuh.gif

Écrit par : SG1 07/12/2010 20:26

Citation
Mais alors, à quoi t'a servi le fade ?

La transition de l'image entre le film et la capture ajoutée... Ça diminue un éventuel problème de teinte dans la capture.

Bien que dans le cas présent, je pense que ça n'aurait pas changé grand chose vu que le fond était noir...

Citation
Je me demande comment j'ai pu laisser passer un tel bug ! beuh.gif

Vraiment, Léon, est-ce bien raisonnable... gniark.gif

Il n'y a qu'en faisant des erreurs que l'on peut apprendre à ne plus les faire... guix_zen.gif

@+

Écrit par : leon1789 07/12/2010 20:56

Citation (SG1 @ mardi 07 décembre 2010 à 20:26) *
Citation
Mais alors, à quoi t'a servi le fade ?

La transition de l'image entre le film et la capture ajoutée... Ça diminue un éventuel problème de teinte dans la capture.

ok. rolleyes.gif

Écrit par : SG1 08/12/2010 14:28

Bonjour,

Deuxième essai...

AviSynth n'apprécie pas du tout les images avec des dimensions non multiples de 16...

Ce coup-ci, j'ai utilisé une petite image pour cacher un sous-titre... L'encodage est en cours...

J'aurais pu faire avec mon ancien principe, c'est à dire, cacher le texte incrusté et placer un ST.
Mais il fallait que je teste... yahoo.gif

@+

Écrit par : leon1789 09/12/2010 17:47

Avec le script Incrustation.avsi, on peut incruster une image de résolution non multiple de 16, mais multiple de 4 seulement.

Écrit par : SG1 10/12/2010 12:18

Bonjour Léon,

Oui, mais même en multiple de 4, c'est pas toujours évident de capturer une zone d'une taille précise, donc obligation de passer par un logiciel de retouche...

Mais bon, le principal, c'est que ça fonctionne !

@+

Écrit par : SG1 29/08/2011 19:08

Bonjour Léon,

Merci pour cette nouvelle modification...

@+

Propulsé par Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)