VideoRedo vient avec une fonctionnalité vraiment sympa : réparer une vidéo endommagée. Parfois, vous allez rencontrer des blocages, ou une navigation difficile. Le fait de réparer une vidéo, avant de travailler dessus, vous évitera ce genre de souci (ainsi que quelques autres, sans rentrer dans les détails).
A titre personnel, j'utilise toujours cette fonctionnalité sur les enregistrements réalisés avec ma box internet. Parfois aussi sur mes enregistrements issus de la TNT, mais cela reste rare. Le flux TNT est bien plus stable et de meilleure qualité que celui qui passe par l'ADSL.
Pour réparer une vidéo, procédez comme suit.
Lancez VideoRedo, puis allez dans le menu Outils > Réparation rapide du Flux (QSF). On appelle aussi cet outil le « quick stream fix ». Une fenêtre s'ouvre.
Sélectionnez le fichier en entrée.
Puis indiquez où le fichier réparé devrait être enregistré. Attention ! Veillez bien à indiquer le type de conteneur et le codec adéquat. Si vous réparez un flux H.264, sélectionnez « H.264 Transport Stream (*.ts) », par exemple. Si vous réparez un flux MPEG-2, sélectionnez « MPEG2 Transport Stream (*.ts) », par exemple. Et n'écrasez pas le fichier d'origine. Le but est de créer une copie sans erreur.
Une fois revenus dans la fenêtre, cliquez sur Démarrer.
A la fin, VideoRedo vous présente un rapport avec la liste des corrections effectuées.
Vous pouvez ensuite fermer le rapport et travailler sur la copie réparée.
Je ne publie pas toujours mes vidéos sur les forums que je fréquente. Mais vous, vous pouvez le faire, si vous le souhaitez. Voici comment.
Il existe plusieurs options pour partager des contenus provenant de mon site. Pour ceux qui souhaitent poster mes vidéos sur un forum, il vous suffit d'aller sur le billet (post) désiré, puis de cliquer sur Afficher le BB code pour les forums.
Une nouvelle page apparaît, proposant divers choix de BB code.
Il vous faut identifier celui qui correspond au forum sur lequel vous voulez poster ce contenu. Une fois trouvé, appuyez sur le bloc de code et copiez-le (clic droit > Copier ou bien pressez - en même temps - les touches Ctrl et C de votre clavier). Vous pouvez ensuite reporter (coller) ce contenu sur le forum.
Attention ! Tous les sites ne peuvent pas référencer (afficher) les images hébergées sur mon site. Leur nombre est assez restreint, et la plupart de ceux qui sont autorisés sont dédiés à la capture télé. A vous d'essayer et de voir.
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).
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...
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...
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")
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 ++.