le boxon de Lex

Vous visitez actuellement les archives de février 2018.

Kelly Vedovelli @ Touche pas à mon Poste - 09/02/18 (caps)

Kelly Vedovelli dans Touche pas à mon Poste - 09/02/18 - 01 Kelly Vedovelli dans Touche pas à mon Poste - 09/02/18 - 02
Kelly Vedovelli dans Touche pas à mon Poste - 09/02/18 - 03 Kelly Vedovelli dans Touche pas à mon Poste - 09/02/18 - 04
Kelly Vedovelli dans Touche pas à mon Poste - 09/02/18 - 05 Kelly Vedovelli dans Touche pas à mon Poste - 09/02/18 - 06
Kelly Vedovelli dans Touche pas à mon Poste - 09/02/18 - 07 Kelly Vedovelli dans Touche pas à mon Poste - 09/02/18 - 08
Kelly Vedovelli dans Touche pas à mon Poste - 09/02/18 - 09 Kelly Vedovelli dans Touche pas à mon Poste - 09/02/18 - 10

[ Tutoriel ] Les effets dans AviSynth

J'ai déjà présenté ce qu'était AviSynth.
J'ai aussi donné des solutions pour générer de tels scripts, notamment lorsque l'on veut créer des vidéos ou des webms. Toutefois, il n'est pas rare que l'on souhaite appliquer un traitement ou un effet dans nos vidéos. Cette page vous en présente quelques-uns.

Attention, c'est de l'AviSynth pur, mais vous pouvez prévisualiser le rendu de ces effets dans AvsPmod.

Le recadrage

Il n'est pas rare que l'on souhaite recadrer une vidéo. Je le fais quasiment partout. Sur la TNT, il est fréquent que subsistent des bandes noires ici et là sur les bords.

Il suffit de rajouter le texte Crop( gauche, haut, - droite, - bas ) dans l'éditeur. Exemple : Crop( 4, 4, -4, 0 ) enlèvera 4 pixels à gauche, 4 en haut, 4 à droite, et aucun en bas. Attention, il faut 4 valeurs, et les deux dernières doivent être négatives.

Attention (bis) : les codecs ont des impératifs en termes de proportions. La largeur de la vidéo doit être un multiple de 4. Autrement dit, la somme de ce que vous enlevez à droite et à gauche doit être un multiple de 4. Pour la verticale, il faut que ce soit un multiple de 2 (un nombre pair donc). Vous auriez donc le droit d'écrire Crop( 2, 1, -6, -3 ), mais pas Crop( 2, 1, -0, 0 ). En effet, 2 et 6 font 8 = 4 x 2. 1 et 3 font 4 = 4 x 1. Mais 2 et 0 ne donnent pas un multiple de 4. Pas plus que 1 n'est un multiple de 2.

Dans AvsPmod, vous pouvez avoir un aperçu du recadrage en allant dans le menu Vidéo > Editeur rognage. N'hésitez pas à créer un raccourci pour cette macro dans les options de AvsPmod (personnellement, je lui ai attribué la lettre E).

ext - effets crop

Redimensionnement

Il peut parfois être utile de redimensionner une vidéo. On va généralement éviter d'agrandir une vidéo (cela revient à faire un zoom, et donc à créer des pixels, qui aboutiront à un effet de flou). Par contre, on peut raccourcir une des proportions. Par exemple, certaines chaînes sur les boxes internet arrivent dans une résolution de 1440 x 1280 pixels. Cela ne correspond pas à du 16/9.

Il existe plusieurs algorithmes de redimensionnement, mais le meilleur est Lanczos. Pour redimensionner une vidéo, vous pouvez donc rajouter dans votre script LanczosResize( 1280, 720 ). Le premier paramètre correspond à la nouvelle largeur. Le deuxième, à la nouvelle hauteur. Comme indiqué précédemment, la largeur doit être un multiple de 4, et la hauteur un multiple de 2.

Généralement, on procède au redimensionnement après avoir recadré la vidéo. Mais il peut y avoir des exceptions. Veillez à conserver un rapport d'aspect correct dans tous les cas.

Modification de l'éclairage ou du contraste

Certaines vidéos ou scènes sont parfois trop sombres.
On peut les éclaircir (ou les assombrir) avec l'instruction Tweak.

Exemple : Tweak( bright=0.5, cont=1.04 ) permet d'éclaircir une vidéo. Vous pouvez jouer avec les paramètres et voir l'effet sur le rendu final. Encore une fois, AvsPmod et la touche F5 sont vos amis.

Ralenti

On peut créer un effet de ralenti en jouant sur le FPS.
En le réduisant, le nombre d'images affichées chaque seconde va diminuer et les choses vont défiler plus lentement. A l'inverse, en l'augmentant, on accélère le cours de la vidéo. Utilisez AssumeFPS( 15.0 ) par exemple pour faire comme si le FPS de passait de 25 à 15 images par secondes.

AssumeFPS feint modifier le FPS.
ChangeFPS le modifie réellement.

Inverser le cours d'une vidéo

Il est possible d'inverser le cours d'une vidéo.
Le plus simple est d'isoler la scène dans une variable.

a = Trim( 0, 170 )
reverse( a )

Quand vous lirez la vidéo, elle commencera par la trame 170 et poursuivra jusqu'à celle qui était la numéro 0.

Coller plusieurs scènes

Comme vous venez le voir, il est possible de regrouper des scènes dans une variable. On peut coller ces scènes ensemble (pour qu'elles se succèdent) grâce à l'opérateur ++. Reprenons notre exemple précédent et faisons en sorte que notre vidéo boucle. La scène se déroule normalement. Une fois au bout, elle doit repartir en marche arrière.

a = Trim( 0, 170 )
b = reverse( a )
a ++ b

Que l'on peut aussi synthétiser en...

a = Trim( 0, 170 )
a ++ reverse( a )

Coller plusieurs vidéos

Nous avons vu comment coller deux scènes ensemble.
Il est aussi possible de coller deux vidéos ensemble, à condition qu'elles aient la même résolution (attention si vous avez recadré une vidéo) et le même FPS. Si vos deux vidéos sont définies dans deux fichiers AviSynth distincts, il vous suffit d'en créer un troisième et d'y mettre le contenu suivant...

Import( "mon-avs1.avs" ) ++ Import( "mon-avs-2.avs" )

Si les fichiers ne sont pas dans le même répertoire...

Import( "C:\chemin\vers\mon-avs1.avs" ) ++ Import( "C:\chemin\vers\ailleurs\mon-avs-2.avs" )

J'ai donné l'exemple avec 2 vidéos / fichiers, mais vous pouvez en mettre autant que vous le souhaitez.

Jouer un passage en boucle

Supposons qu'au milieu d'une scène, il y ait une séquence que vous souhaitiez répéter. Vous pouvez alors utiliser l'instruction Loop.

Loop( 2, 20, 25 )

Sur cet exemple, les trames 0 à 19 sont jouées normalement.
La séquence de trames 20 à 25 est jouée une première fois. Puis elle est rejouée une deuxième fois. Enfin, la fin de la vidéo est jouée normalement.

Prenons un autre exemple.

Loop( 5, 50, 125 )

Ici, tout est joué normalement, à l'exception d'une séquence (qui va des trames 50 à 125), et qui sera répétée 5 fois.

Faire un arrêt sur image dans la vidéo

C'est ici une variante de l'effet précédent.
Plutôt que de répéter une séquence, on souhaite répéter l'affichage d'une trame précise pendant un temps donné, ce qui donne l'effet d'un arrêt sur image lors de la lecture de la vidéo.

Voyons un premier exemple.

Loop( 50, 20, 20 )

Les trames 0 à 19 sont jouées normalement.
Puis la trame 20 va être répétée 50 fois. Cela peut paraître beaucoup, mais avec un framerate de 25 fps (c'est à dire qu'une seconde de vidéo correspond à 25 images), alors cet arrêt sur image durerait 2 secondes. Pour qu'il se prolonge durant 3 secondes, il faudrait mettre 75.

Prenons un exemple plus complexe.
Ici, la séquence est lue normalement, puis on fait un arrêt sur image de 3 secondes, et enfin, on rejoue la séquence, mais en marche arrière. On écririons alors...

sc = Trim( 0, 180 )
sc.Loop( 75, 150, 150 ) ++ reverse( sc )

Inverser droite et gauche

ext - effets inverser droite et gauche

a = Trim( 0, 170 )
FlipHorizontal( a )

Inverser haut et bas

ext - effets inverser haut et bas

a = Trim( 0, 170 )
FlipVertical( a )

Mettre des scènes côte à côte

ext - effets cote à cote

a = Trim( 0, 170 )
b = FlipHorizontal( a )
StackHorizontal(a, b)

Ici, j'ai créé un effet miroir, mais vous pouvez accoler des vidéos différentes, pourvu qu'elles aient les mêmes dimensions et le même FPS.

Mettre des scènes l'une au-dessus de l'autre

ext - effets miroir

a = Trim( 0, 170 )
b = FlipVertical( a )
StackVertical(a, b)

Ici, j'ai créé un effet miroir, mais vous pouvez empiler des vidéos différentes, pourvu qu'elles aient les mêmes dimensions et le même FPS.

Superposer deux scènes

Je l'ai utilisé une seule fois, pour faire un test.
Vous allez superposer deux images et jouer sur la transparence de l'une d'entre elles. On utilise pour cela l'instruction overlay.

a = Crop(940, 340, -400, -400)
b = FlipHorizontal(a)
a.Overlay(b, x=0, y=0, opacity=0.5, mode="blend")

ext - effets superposition

Mon exemple n'est pas très joli, mais vous comprenez l'idée.
Dans la pratique, je vous conseille de placer vos deux clips dans des scripts distincts, et d'en faire un troisième pour la superposition.

a = Import( "mon-avs1.avs" )
b = Import( "mon-avs1.avs" )
a.Overlay(b, x=0, y=0, opacity=0.5, mode="blend")

L'opacité doit varier entre 0 et 1. Il y a d'autres modes que blend, vous pouvez vous amuser avec les autres.

Déplacement de la caméra

C'est l'effet le plus compliqué.
Quand vous voulez ne pas poster toute l'image, mais que votre sujet se déplace, il faut que le cadre suive votre sujet. Je vous donne un exemple dans lequel j'ai dû compenser un mouvement de la caméra (la vraie, celle qui filmait).

Pour faire cela, il faut triturer un peu la vidéo.
D'abord, identifier à partir de quand la caméra doit se déplacer et quand elle doit se fixer. Ce que l'on fait, c'est un recadrage, mais qui va se mettre à bouger à un moment donné et s'arrêter un peu plus tard.

a = Trim( 0, 170 )
a = a.ConvertToRGB32()
a = Animate(a, 0, a.framecount(), "crop",
\ 600, 0, -280, -0,
\ 680, 0, -200, -0).ConvertToYV12()

Je décrypte un peu ce machin-là.
Le trim, vous connaissez, cela délimite le début et la fin d'une scène. La conversion du mode de couleurs est obligatoire pour ce que l'on veut faire. Animate est l'instruction-clé. Elle exécute un crop (recadrage) à partir de la trame 0 jusqu'à la fin de la scène (a.framecount() compte le nombre de trames dans la scène a). La valeur de recadrage est définie ensuite. La première ligne donne le recadrage au début (à la trame 0). La dernière ligne donne sa valeur pour le numéro de trame final. Enfin, on rétablit le mode de couleurs original. Les anti-slashes (\) servent à écrire une instruction trop longue sur plusieurs lignes.

Je vous donne un autre exemple.

a = Trim( 0, 170 )
a = a.ConvertToRGB32()
a = Animate(a, 17, 40, "crop",
\ 600, 0, -280, -0,
\ 680, 0, -200, -0).ConvertToYV12()

Des trames 0 à 17, inclus, le recadrage porte sur la zone (600, 0, -280, -0). A partir de la trame 40, elle est délimitée par les valeurs (680, 0, -200, -0). Et entre 17 et 40, la caméra / le cadre va bouger pour atteindre la valeur qu'il est censé prendre à la trame 40.

Si les mouvements de caméra sont complexes, alors il vous faudra découper la grande scène en plusieurs petites scènes, et traiter chaque sous-scène de cette manière. A la fin, vous les recollerez avec l'opérateur ++.

[ Tutoriel ] Créer des webms

Qu'est-ce qu'un webm ?
Un webm désigne une vidéo lisible directement par un navigateur web. Il existe en fait 3 formats vidéos qu'un navigateur comme Chrome, Firefox ou Edge, pour n'en citer que quelques-uns, sont capables de lire. Le format MP4 est l'un d'entre eux. Et par habitude, j'appelle webm toute vidéos mp4 destinée à être lue dans un navigateur.

Les webms sont censés remplacer les GIF.
Un GIF est une image. Le problème, c'est qu'elles sont très lourdes et manquent de fluidité. C'est l'exact inverse pour un webm. Préférez donc créer des webms plutôt que des GIF.

Je vais expliquer ici comment je procède pour en créer.
La technique reprend celle pour créer des vidéos, avec le triptyque VideoRedo / AvsPmod / MeGUI. Il vous faut donc le maîtriser au préalable.

Généralement, je repère les scènes qui donneraient un bon webm lorsque je fais mon montage dans VideoRedo. Je fais donc mon montage pour créer une vidéo, mais au fur et à mesure que j'avance, je note, sur un papier, le numéro de trames sur lesquelles revenir pour les webms. Quand j'ai fini mon premier montage, j'enregistre le projet sous un nouveau nom (j'en créé un deuxième donc, via Fichier > Enregistrer le projet sous...), je supprime toutes les coupes (Edition > Supprimer toutes les coupes), puis je procède aux coupes que j'ai notées sur mon papier. N'hésitez pas à utiliser le raccourci Ctrl + T, qui vous permet d'aller à un numéro de trame donné. Si vous avez bien travaillé, en notant les numéros sur papier, la liste de toutes les coupes sera vite reportée. Comprenez bien que vous créez un seul projet qui contient toutes les scènes qui donneront des webms. A la fin, vous avez donc deux projets. Un pour votre vidéo, et un deuxième qui contient tous les webms.

Pour la vidéo, vous procéderez comme écrit dans ce tutoriel.
Pour les webms, vous allez procéder différemment. Ouvrez le fichier dans AvsPmod (Macros > Lex - Preparer Encodage). Puis déclinez le projet en plusieurs scripts AviSynth. Une autre macro va vous y aider : Macros > Lex - Extraire les WEBMs. Si vous regardez bien, cette macro créé un script pour chaque coupe. A vous de traiter chaque fichier indépendamment des autres. Les webms peuvent utiliser différents effets AviSynth (comme le recadrage). Au fur et à mesure que vous les avez traités, fermez les onglets associés.

Une fois que vos scripts AviSynth sont prêts, vous allez pouvoir les ajouter en lot dans MeGUI. Attention ! Il faut avoir édité le fichier le fichier macros/Lex - Preparer MeGUI.py et avoir mis à jour l'emplacement de MeGUI au début du fichier. Cette partie a été documentée dans le tutoriel sur l'installation et la configuration de AvsPmod. Si cette partie est correcte, et que MeGUI est à l'arrêt (c'est important), alors vous pouvez aller dans le menu Macros > Preparer MeGUI. Une boite de dialogue s'ouvre et vous demande de sélectionner les scripts AviSynth des webms.

ext - creation de webms - 1

Sélectionnez uniquement les webms qui proviennent de la même vidéo ! En effet, les webms auront le même nom. La seule différence sera un numéro à la fin. Une fois la sélection faîte, cliquez sur OK. Il vous est alors demandé de préciser le nom qui servira à tous les fichiers qui seront créés.

ext - creation de webms - 2

Une fois le nom entré, cliquez sur OK.
Ouvrez MeGUI. Vous verrez que la file d'attente a été pré-peuplée et que vous n'avez plus qu'à lancer son traitement.

Page 29 sur 34« Début...26272829303132...Fin »