1er script Avisynth
Modérateur : Modérateurs
- elcascador972
- Messages : 408
- Enregistré le : sam. 14 mai, 2011 0:18
- Localisation : 14° 46' 57'' Nord / 60° 59' 37'' Ouest
1er script Avisynth
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 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 :
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 ?
Toute aide est la bienvenue et merci par avance !
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 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 :
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 ?
Toute aide est la bienvenue et merci par avance !
Quand le sage montre la lune, le fou regarde le doigt
- Underground78
- Administrateur
- Messages : 11272
- Enregistré le : mar. 06 févr., 2007 21:54
- Localisation : France
- Contact :
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.
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.
je suis d'accord avec Underground78, mais je complète sa réponse 2)
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.
Réaliser le crop avant le resize.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).
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.
- elcascador972
- Messages : 408
- Enregistré le : sam. 14 mai, 2011 0:18
- Localisation : 14° 46' 57'' Nord / 60° 59' 37'' Ouest
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...
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...
Quand le sage montre la lune, le fou regarde le doigt
- Underground78
- Administrateur
- Messages : 11272
- Enregistré le : mar. 06 févr., 2007 21:54
- Localisation : France
- Contact :
- elcascador972
- Messages : 408
- Enregistré le : sam. 14 mai, 2011 0:18
- Localisation : 14° 46' 57'' Nord / 60° 59' 37'' Ouest
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 Merci !
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 Merci !
Quand le sage montre la lune, le fou regarde le doigt