1er script Avisynth

Modérateur : Modérateurs

Répondre
Avatar du membre
elcascador972
Messages : 406
Enregistré le : ven. 13 mai, 2011 23:18
Localisation : 14° 46' 57'' Nord / 60° 59' 37'' Ouest

1er script Avisynth

Message par elcascador972 » mar. 24 janv., 2012 23:33

Bonsoir !
J'essaye d'apprendre à utiliser Avisynth, ses fonctions et ses filtres, et pour cela je me suis dit que le mieux était de tenter d'écrire un script. J'ai donc écrit le script ci-dessous (totalement inutile je pense :mrgreen: mais c'était pour l'exercice).

# essai script lecture 4 vidéos image entière résolution modifiée #

Video1 = DirectShowSource( "C:\Films_rippes\v1.avi", fps=25.000000)
Video2 = DirectShowSource( "C:\Films_rippes\v2.mp4", fps=25.000000)
Video3 = DirectShowSource( "C:\Films_rippes\v3.avi", fps=25.000000)
Video4 = DirectShowSource( "C:\Films_rippes\v4.mp4", fps=25.000000)
l=720 # largeur identique aux 4 vidéos
h=400 # hauteur identique aux 4 vidéos
Video1 = LanczosResize(video1, l/2, h/2)
Video2 = LanczosResize(video2, l/2, h/2)
Video3 = LanczosResize(video3, l/2, h/2)
Video4 = LanczosResize(video4, l/2, h/2)
Video1 = Trim (Video1, 2000, 10000)
Video2 = Trim (Video2, 2000, 10000)
Video3 = Trim (Video3, 2000, 10000)
Video4 = Trim (Video4, 2000, 10000)
Video1 = ConvertToYV12(Video1)
Video2 = ConvertToYV12(Video2)
Video3 = ConvertToYV12(Video3)
Video4 = ConvertToYV12(Video4)
Video_haute = StackHorizontal(Video1, video3 )
video_basse = StackHorizontal(video4, video2 )
video = StackVertical(video_haute,video_basse)
Return (Video)


Le script fonctionne bien : aperçu ci-dessous :

[lightbox]http://img707.imageshack.us/img707/6117/4videos.jpg[/lightbox]

Mais je me pose quelques questions auxquelles je n'ai pas réussi à répondre :roll: :

1. pourquoi cette bande noire entre les parties haute et basse ?
2. comment la supprimer : une fonction à mettre dans le script ? un paramétrage à ajouter ?
3. pourquoi y-a-t-il un espace à l'intérieur des "parties horizontales", celle du haut et celle du bas ? On voit la différence = une toute petite bande noire verticale. Bref, pourquoi ne sont elles pas jointives ?
4. pourquoi ce même espace est il de largeur différente en haut et en bas ?
5. pourquoi dans la partie basse, les 2 vidéos ne sont elles pas jointives (on voit bien le décalage et pas qu'en largeur) ?
6. et, pour départager les ex-aequo, pourquoi le bras de la momie bouge-t-il (est il lu) à des vitesses différentes car il n'a pas la même position :gna: ?

Toute aide est la bienvenue et merci par avance !
Quand le sage montre la lune, le fou regarde le doigt
Avatar du membre
Underground78
Administrateur
Administrateur
Messages : 11269
Enregistré le : mar. 06 févr., 2007 21:54
Localisation : France
Contact :

Message par Underground78 » mer. 25 janv., 2012 7:26

Salut,

1) C'est très probablement des bandes noires dans les vidéos d'origine qui s'additionnent entre le haut et le bas.
2) Utile Crop pour rogner les bandes noires de chaque vidéo avant de redimensionner (fait attention au fait que ça peut casser l'aspect-ratio).
3) Voir ci-dessus.
4) Dans un cas tu as la vidéo A + la vidéo B alors que dans l'autre tu as B + A donc ce ne sont pas les mêmes bandes (gauche ou droite) qui s'additionnent dans les deux cas.
5) Toujours des histoires de bande noire.
6) DirectShowSource n'est pas "frame accurate" du coup le Trim n'est pas très précis.

:did:
Avatar du membre
leon1789
Messages : 775
Enregistré le : dim. 26 août, 2007 13:09
Contact :

Message par leon1789 » mer. 25 janv., 2012 9:21

je suis d'accord avec Underground78, mais je complète sa réponse 2)
Underground78 a écrit : 2) Utile Crop pour rogner les bandes noires de chaque vidéo avant de redimensionner (fait attention au fait que ça peut casser l'aspect-ratio).
Réaliser le crop avant le resize.

Pour réaliser le crop, genre video.crop(4, 2, -4, -6) (j'ai pris des nombres au hasard) , ne visualise qu'une seule vidéo à la fois.
Avatar du membre
elcascador972
Messages : 406
Enregistré le : ven. 13 mai, 2011 23:18
Localisation : 14° 46' 57'' Nord / 60° 59' 37'' Ouest

Message par elcascador972 » mer. 25 janv., 2012 13:10

Salut !

Merci pour vos réponses très complètes ! Je m'y mets ce soir !

PS : J'ai passé un peu de temps hier à tester quelques filtres internes d'Avisynth mentionnés dans la page wikipédia ici :http://avisynth.org/mediawiki/Filtres_internes. Et pour comprendre leur fonctionnement et leur paramétrage, je suis "rentré dedans".

En fait, si j'ai bien compris l'ordre générale des choses dans avisynth, il y a "du plus grand au plus petit" :
- les scripts, qui sont écrits sous forme de texte, avec l'extension .avs et qui utilisent des filtres
- les filtres, qui sont eux-même écrits avec des "éléments de base" tels "base_clip", "overlay_clip", "use_chroma", "level", "op", etc. On dirait donc que ces éléments sont des instructions de base permettant de créer les filtres, mais en quel langage sont ils écrits ? Un langage informatique connu ou un langage propre à avisynth qui aurait créé par son développeur ?

Je suis curieux je sais... :d:
Quand le sage montre la lune, le fou regarde le doigt
Avatar du membre
Underground78
Administrateur
Administrateur
Messages : 11269
Enregistré le : mar. 06 févr., 2007 21:54
Localisation : France
Contact :

Message par Underground78 » mer. 25 janv., 2012 17:42

Les filtres sont basés sur l'API (interface de programmation) fournie par AviSynth et sont écrits en C++.
Avatar du membre
elcascador972
Messages : 406
Enregistré le : ven. 13 mai, 2011 23:18
Localisation : 14° 46' 57'' Nord / 60° 59' 37'' Ouest

Message par elcascador972 » sam. 28 janv., 2012 0:19

Ok, bien noté !

Sinon, j'ai utilisé "crop" et ça a effectivement changé l'aspect de la vidéo. Du coup, j'ai utilisé en plus "addborders" dans le script, l'équilibre a été rétabli et je suis parvenu au résultat voulu ! Je poursuis avidement l'exploration du monde d'avisynth :mrgreen: Merci !
Quand le sage montre la lune, le fou regarde le doigt
Répondre