créer une mosaïque de vidéos avec avisynth
5/07/08 à 12:30 pratique
une mosaïque à 4 cases
Voila le script avisynth dans version la plus simple, les 4 vidéos sont assignées une par une, et les opérateurs StackHorizontal et StackVertical permettent de faire l'assemblage. On part du principe que ces vidéos sont muettes et ont les mêmes caractéristiques (dimensions, images par seconde). Les vidéos seront assemblées de gauche à droite et de haut en bas. Ce script est à coller dans un fichier texte avec l'extension ".avs"
clip1 = AviSource("video1.avi")
clip2 = AviSource("video2.avi")
clip3 = AviSource("video3.avi")
clip4 = AviSource("video4.avi")
clip5 = StackVertical(StackHorizontal(clip1,clip2),StackHorizontal(clip3,clip4))
return clip5
Image créée à partir du script avisynth avec la commande ffmpeg suivante :
ffmpeg -i mosaique4.avs -an -ss 00:00:00 -r 1 -vframes 1 -s 320×240 -f mjpeg -y mosaique4.jpg
une mosaïque à 9 cases
Sur le même principe on peut étendre le script avisynth pour réaliser une vidéo à 9 cases
# pour un copier coller, enlever les retours à la ligne de la ligne clip 10
clip1 = AviSource("video1.avi")
clip2 = AviSource("video2.avi")
clip3 = AviSource("video3.avi")
clip4 = AviSource("video4.avi")
clip5 = AviSource("video5.avi")
clip6 = AviSource("video6.avi")
clip7 = AviSource("video7.avi")
clip8 = AviSource("video8.avi")
clip9 = AviSource("video9.avi")
clip10 = StackVertical(StackHorizontal(clip1,clip2,clip3),
StackHorizontal(clip4,clip5,clip6),
StackHorizontal(clip7,clip8,clip9))
return clip10
une mosaïque avec des cases de différentes tailles
Un peu plus corsé cette fois, une mosaïque avec plusieurs cases, des cases noires, et une bande son rajoutée à la fin! Voila à quoi devrait ressembler notre vidéo finale :
# fixer les dimensions de base d'une case
largeur = 320
hauteur = 240
duree = 200
# créer les clips et égaliser leur propriétés
clip1 = AVISource("video1.avi").KillAudio.BicubicResize(largeur*2,hauteur*2)
.ChangeFPS(25).ConvertToYUY2().Trim(0,duree-1)
clip2 = AVISource("video2.avi").KillAudio.BicubicResize(largeur,hauteur)
.ChangeFPS(25).ConvertToYUY2().Trim(0,duree-1)
clip3 = DirectShowSource("video3.avi").KillAudio.BicubicResize(largeur*2,hauteur*2)
.ChangeFPS(25).ConvertToYUY2().Trim(100,duree-1)
clip4 = AVISource("video4.avi").KillAudio.BicubicResize(largeur*3,hauteur*3)
.ChangeFPS(25).ConvertToYUY2().Trim(0,duree-1)
# créer une séquence noire
vide = BlankClip(width=largeur,height=hauteur,fps=25,length=duree-1,
color=$000000).ConvertToYUY2()
# empiler!
clip5 = StackHorizontal(vide.BicubicResize(largeur,hauteur*2), clip1,
vide.BicubicResize(largeur,hauteur*2), StackVertical(vide,clip2))
clip6 = StackHorizontal(StackVertical(clip3,
vide.BicubicResize(largeur*2,hauteur)),clip4)
clip7 = StackVertical(clip5,clip6)
# redimensionner
clip8 = clip7.BicubicResize(largeur,hauteur)
# rajouter une bande son
audio = WAVSource("osc.wav")
# on ne peut pas utiliser Trim sur du son
# donc on crée une vidéo fantoche
clip9 = AudioDub(vide,audio).Trim(0,duree-1)
clip10 = AudioDub(clip8,clip9)
return clip10
Script avisynth à télécharger (changer l'extension par .avs) : mosaique avisynth
Le nouveau fichier vidéo est créé en utilisant ffmpeg, avec la commande suivante :
ffmpeg -i mosaique3.avs -b 360k -f flv video.flv
Et voila le résultat (par elle même, la vidéo n'a aucun intérêt! C'est juste un montage réalisé à partir de séquences qui trainent sur mon disque dur!)



Commentaires
Chapeau bas, peu de programme (à par peut être les progiciels auxquels je n'ai pas accès permettent de faire ce genre de mosaïque ... encore merci pour ce tuto et bravo pour ta maitrise de la technique ^^
Salut !
Peux t'on remplacer le fichier wav par un fichier mp3 dans le programme?
à savoir :
# rajouter une bande son
audio = WAVSource("osc.mp3")
J'ai réussi à exploiter le script, mais le plus dur ce n'est pas d'exploiter les fichiers avisynth, c'est surement de les créer....
@+
@Dav : Salut! Il me semble que pour charger un fichier mp3, il faut utiliser le plugin MPASource, voir : avisynth.org.ru/docs/engl... (doc + lien pour le télécharger) Sinon, tu peux essayer par DirectShowSource avec "audio = DirectShowSource("lenomdetonfichier.ext") ext représentatnt l'extension de tout type de fichier lisible avec directshow
Ok merci emoc je vais tester cette fonction.
Au pire je pourrais transformer un mp3 en wav mais c'est toujours bien de connaitre plusieurs fonctions.
Bravo pour ton site et ton travail.
Bonjour est ce que quelqu un pourrait m 'expliquer ce tuto car je n 'ai absolument rien compris .
et cet effet m interesse beaucoup . mais je n'ai trouver aucun autre tuto sur avisynth
mais je ne suis pas parvenu a créer la mosaique avec ces explication un peu trop compliqué pour moi .
en fait je ne sais tout simplement pas quoi faire avec le script avs un fois créer je ne sais pas ou mettre les fichiers videos .. et quoi lancer dans quel ordre ..
merci infiniment
@Thierry : Pour avisynth, il y a des exemples dans la documentation qui est fournie avec, ainsi que sur le forum avisynth de doom9 : forum.doom9.org/forumdisp... Un fichier avisynth ne se lance pas, il est équivalent à un fichier vidéo, il se manipule de la même manière et peut être ouvert avec un player vidéo (media player classic, par exemple). Le plus simple est de placer les fichiers vidéos d'origine dans le même répertoire que le fichier avs.
That is known that money makes people autonomous. But how to act when one does not have money? The only one way is to receive the <a href="bestfinance-blog.com"... or just secured loan.
Ajouter un commentaire