automatic translation maschinelle Übersetzung

Add to Technorati Favorites
urzhiata | index

      créer une mosaïque de vidéos avec avisynth

Voici un tutoriel pour assembler plusieurs vidéos sous la forme d'une mosaïque et enregistrer le résultat sous forme de vidéo. Pour ça, nous utiliserons avisynth pour réaliser le script de montage et ffmpeg pour créer la vidéo finale (deux logiciels libres). Pour l'installation de ces deux logiciels, voir les 2 billets : installation de ffmpeg et utiliser ffmpeg avec avisynth).



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
mosaique video à 4 cases

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

mosaique video à 9 cases



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 :

mosaique video

# 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!)




      the tone generation

the Tone Generation The Tone Generation, une série de 10 émissions consacrées aux musiques électroniques de l'époque analogique. Mis au point par Ian Helliwell à partir de sa collection personnelle de disques, chaque émission est consacrée à un pays (Grande-Bretagne, France, Allemagne, Italie, Hollande & Belgique, Scandinavie, etc.).

Ian Helliwell est réalisateur de films super 8 et musicien, il réalise ses propres instruments électroniques aux noms évocateurs : générateurs sonores « Hellitron », « Megatherm », « Hellioptical », ou les synthétiseurs « Hellisizer 1000 » et « Hellisizer 2000 » (un article sur ses recherches : experiments with sound and images)

Toutes les émissions : the tone generation

La première émission est dédiée à la Grande Bretagne, et fait une large place aux compositeurs de l'atelier radiophonique de la BBC, comme Daphné Oram et Delia Derbyshire :


powered by ODEO

[via simonsound]

      interlude : « Energie » de Thorsten Fleisch

« Energie » est un court-métrage expérimental de Thorsten Fleisch réalisé en 2007. Les images sont réalisées en photographiant les décharges électriques de 30000 volts émises par une bobine de Tesla. (musique de Jens Thiele)



Les bobines de Tesla et leurs arcs électriques ont leur afficionados tout autour du monde qui font des étincelles dans leur garage : teslacoils.at, tesladownunder.com

D'autres films sont visibles sur le site de Thorsten Fleisch (Fleischfilm) : Kosmos, Gestalt, Friendly Fire, etc.

On retrouve ce court et de nombreux autres sur le DVD (disponible en kiosque en ce moment) édité par la revue repérages pour l'édition 2008 du festival de nouvelles images Némo.


      Tenori-On, soirée de lancement

Tenori-On

Le mercredi 9 avril à la Maison de la Villette aura lieu la soirée de lancement du tenori-on, l'instrument créé par Toshio Iwai et Yamaha.
Au programme : une présentation et une démonstration par Toshio Iwai, puis des performances live de :

Robert Lippok (To Rococo Rot)
Pole
Sutekh
I am Robot and Proud
Nathan Michel
Krikor
Trax dj team

10 invitations sont à disposition des lecteurs d'urzhiata, pour ceux qui sont intéressés, envoyez un mail à l'adresse (voir à droite de ce billet), ou par la page contact), en précisant bien l'adresse email qui recevra l'invitation. Tout ça avant la fin de la semaine!

[edit] Toutes les invitations sont distribuées!

De 20h00 à 2h00, mercredi 9 avril 2008,
Maison de la Villette,
211, avenue Jean Jaures
75019 Paris

      codelab

codelab

Codelab est un forum consacré aux pratiques expérimentales de création (image vidéo, son, musique) qui utilisent des langages de programmation (processing, chuck, supercollider, livecode, etc.), de programmation visuelle (pure-data / gem, vvvv, etc.) ou l'expérimentation électronique (construction d'interfaces et d'instruments, circuit-bending, etc.)

Ce forum est un espace de discussion francophone, de partage d'idées et d'entraide ouvert à ceux qui utilisent ces techniques et à ceux qui souhaitent les découvrir.

Pour que l'utilisation du forum soit adaptée à l'image, au son, à la vidéo et au code, différentes fonctions sont en place :

- insertion d'éléments audio et vidéo dans les messages avec affichage intégré
- hébergement de fichiers sur le forum : images, son et vidéo
- ajout de pièces jointes,
- coloration syntaxique du code,
- URL courtes et faciles à retenir,
- fils RSS pour le suivi des discussions, ou suivi par email,
- pas de publicité (ni bannières, ni google ads, ni pop-ups).

Pour participer au forum et profiter de ces fonctions, il est nécessaire de s'inscrire, les visiteurs occasionnels du site peuvent poster des messages dans le forum hello-world sans être inscrit.

Un forum annonces est également disponible pour y présenter les manifestations, workshops, concerts, associations, etc. en rapport avec le sujet du forum.

codelab

      ajouter un titre et un générique à une video

Ce tutoriel décrit comment ajouter un titre sur les premières images d'une vidéo ainsi qu'un générique à la fin sans passer par un logiciel de montage, en utilisant les logiciels libres ffmpeg et avisynth. Il faut les installer au préalable (pour l'installation, voir les 2 billets : installation de ffmpeg et utiliser ffmpeg avec avisynth).


étape 1 : ajouter un titre sur les premières images de la vidéo

fichier avisynth (à enregistrer sous le nom "titres.avs")
# attention! en cas de copier-coller, il ne doit pas y avoir de retour à la ligne
# après "last_frame=45," dans les lignes suivantes

video_originale = AviSource("video.avi")
v1 = Subtitle(video_originale, "ffmpeg", x=160, y=75, first_frame=0, last_frame=45, 
   font="verdana", size=36, text_color=$000000, halo_color=$ffffff, align=2)
v2 = Subtitle(v1, "&", x=160, y=125, first_frame=0, last_frame=45, 
   font="verdana", size=36, text_color=$000000, halo_color=$ffffff, align=2)
v3 = Subtitle(v2, "avisynth", x=160, y=175, first_frame=0, last_frame=45, 
   font="verdana", size=36, text_color=$000000, halo_color=$ffffff, align=2)
v3

La vidéo utilisée pour l'exemple est à 15 images par seconde, et fait 320 x 240 pixels. En 3 étapes on ajoute les 3 lignes du titre, pour chacune la commande subtitle est accompagnée des paramètres suivants : le nom du clip sur lequel inscrire le texte, le texte à écrire, les coordonnées où « accrocher » le texte et l'alignement par rapport à ce point (align=2, pour du texte centré), les caractéristiques de la police (font, size, text_color et halo_color) ainsi que l'intervalle pendant lequel le texte sera affiché (première image : first_frame, et dernière : last_frame). Le texte restera affiché pendant 45 images ce qui correspond à 3 secondes à 15 images/secondes. La toute dernière ligne renvoie la vidéo résultant de ces opérations. La durée globale restant identique, il n'y a pas à se préoccuper du son.

étape 2 : ajouter un générique à la fin

Le générique est composé de 2 images qui restent chacune affichées pendant 2 secondes.
fichier avisynth (à enregistrer sous le nom "titres.avs")
# attention! en cas de copier-coller, il ne doit pas y avoir de retour à la ligne
# après "last_frame=45," dans les lignes suivantes

video_originale = AviSource("video.avi")
v1 = Subtitle(video_originale, "ffmpeg", x=160, y=75, first_frame=0, last_frame=45, 
   font="verdana", size=36, text_color=$000000, halo_color=$ffffff, align=2)
v2 = Subtitle(v1, "&", x=160, y=125, first_frame=0, last_frame=45, 
   font="verdana", size=36, text_color=$000000, halo_color=$ffffff, align=2)
v3 = Subtitle(v2, "avisynth", x=160, y=175, first_frame=0, last_frame=45, 
   font="verdana", size=36, text_color=$000000, halo_color=$ffffff, align=2)
v4 = blankclip(video_originale, length=30, color=$ff8800)
v5 = Subtitle(v4, "2007", font="verdana", size=48, text_color=$ffffff, 
   halo_color=$bb3300, align=5)
v6 = Subtitle(v4, "http://urzhiata.emoc.org", font="verdana", size=24, 
   text_color=$ffffff, halo_color=$bb3300, align=5)
video_resultat = v3 + v5 + v6
video_resultat

En supplément de l'étape précédente, un nouveau clip est créé par blankclip, avec les mêmes caractéristiques que la vidéo originale (premier paramètre), pour une durée de 30 images (2 secondes à 15 images/secondes) et avec une couleur de fond orangée ($ff8800). Il est utilisé 2 fois comme fond pour placer les textes du générique, puis la vidéo est construite à partir des 3 éléments. Si la vidéo est sonore, les parties ajoutées ne comporteront pas de son.

étape 3 : créer la vidéo avec ffmpeg

Cette commande ffmpeg va créer un fichier flash vidéo avec les caractéristiques par défaut, le fichier avisynth joue le rôle de vidéo de départ :
ffmpeg -i titres.avs -f flv titres.flv


variante : utiliser des images de la vidéo en images de fond

On peut utiliser une image de la vidéo en image fixe de fond pour le générique, dans le fichier avisynth ci-dessus il faudrait remplacer la ligne v4 par la suivante, ce qui aura pour effet de répéter 45 fois l'image 160 de la vidéo, en ramenant le son à 0.
v4 = Trim(video_originale,160,160).Loop(45,160,160).Normalize(0)



      ajouter un logo sur une vidéo

Ce tutoriel permet d'ajouter un logo sur une vidéo, sans passer par un logiciel de montage, en utilisant les logiciels libres ffmpeg et avisynth. Il faut donc les avoir installé au préalable (pour l'installation, voir les 2 billets : installation de ffmpeg et utiliser ffmpeg avec avisynth). Cette méthode est particulièrement adaptée au traitement par lot de fichiers, par un fichier batch, afin d'ajouter un logo à toutes les vidéos d'un répertoire.

étape 1 : créer le script avisynth

fichier avisynth (copier-coller dans le bloc-notes et enregistrer sous le nom "video.avs")
logo = ImageSource("logo.png")
video_originale = AviSource("video.avi")
video_resultat = overlay(video_originale,logo,250,170,logo,1)
video_resultat

L'image et la vidéo originale sont définies ligne 1 et 2 (la vidéo fait 320x240 pixels) puis elles sont mélangées pour créer la vidéo finale (ligne 3), le résultat est renvoyé ligne 4. C'est la commande overlay qui définit les paramètres pour la superposition du logo, dans l'ordre on trouve : le clip de base (vidéo_originale), l'image superposée (logo), le placement en X à partir du coin en haut à gauche, le placement en Y, l'image utilisée comme masque (ici il s'agit de la même image), puis l'opacité (de 0 à 1, 100% opaque dans ce cas)

urzhiata L'image d'origine du logo est au format png (60x60 pixels), elle sert également de masque, les pixels noirs sont alors interprétés comme totalement transparents, les blancs comme opaque et les gris seront à moitié transparents.




étape 2 : créer la vidéo avec ffmpeg

La ligne de commande suivante va créer une vidéo au format flash video à partir de la pseudo-vidéo avisynth, sans qu'une vidéo intermédiaire n'ait été nécessaire.
ffmpeg -i video.avs -f flv video.flv





variante : inscrire une ligne de texte sur la vidéo

La commande subtitle d'avisynth permet d'inscrire du texte sur une vidéo en utilisant les polices de caractères installées.
video_originale = AviSource("video.avi")
video_resultat = Subtitle(video_originale, "http://urzhiata.emoc.org", 
    font="verdana", size=18, text_color=$000000, halo_color=$ffffff, align=8)
video_resultat


Parmi les paramètres de subtitle, on trouve les caractéristiques de la police (taille, couleur, etc.) et align qui définit le placement du texte sur la vidéo, ici la valeur 8 indique que la vidéo est centrée en haut.



ajouter un logo sur un lot de vidéo

L'utilisation de ffmpeg + avisynth permet de traiter des vidéos par lot, on peut adapter ces scripts pour ajouter un logo sur tous les fichiers vidéo d'un répertoire en créant un fichier batch. Le batch ci-dessous ajoutera le logo sur toutes les vidéos d'un répertoire, pourvu qu'elles aient les mêmes dimensions, il pourrait être adapté en utilisant les fonctions d'avisynth qui détectent la résolution du fichier vidéo, et en adaptant la taille de l'image du logo.

fichier batch (à copier-coller dans le bloc-notes et enregistrer avec l'extension ".bat")
@ECHO OFF
FOR /F "usebackq delims==" %%y IN (`dir /b *.avi`) DO CALL :creer_fichier_avs %%~ny
FOR /F "usebackq delims==" %%y IN (`dir /b *.avs`) DO CALL :conversion_ffmpeg %%~ny
GOTO :fin

:creer_fichier_avs
ECHO creation du fichier avisynth pour %1.avi
ECHO logo = ImageSource("logo.png") > %1.avs
ECHO video_originale = AviSource("%1.avi") >> %1.avs
ECHO video_resultat = overlay(video_originale,logo,250,170,logo,1) >> %1.avs
ECHO video_resultat >> %1.avs
GOTO :eof

:conversion_ffmpeg
ECHO conversion de %1
ffmpeg -i %1.avs -f flv %1.flv
GOTO :eof

:fin
ECHO tous les fichiers ont ete traites...
Ce fichier batch procède en deux étapes : création d'un fichier avisynth pour chaque vidéo avi du répertoire, puis traitement de chaque fichier avisynth avec ffmpeg pour le transformer en flash video (flv). Chacune de ces étapes est réalisée par une sous-routine. Il faut placer ce fichier dans le répertoire avec les fichiers vidéos avi et le logo (logo.png) puis double cliquer, toutes les vidéos seront transformées en flv avec le logo incrusté!


      utiliser ffmpeg avec avisynth

Avisynth est un logiciel d'édition vidéo sous forme de scripts, il offre de nombreuses possibilités que ce soit pour l'amélioration des images, l'assemblage audio + vidéo, la superposition (sous-titres, logos), la composition, etc.
Les fichiers avisynth sont des scripts au format texte (avec l'extension ".avs"), des « pseudo-vidéos » qui peuvent être ouvertes avec un lecteur traditionnel (media player classic, VLC, Virtual Dub) mais également utilisés en entrée de ffmpeg, la version windows de ce dernier étant compilée avec le support avisynth.

En utilisant ffmpeg et avisynth, on peut donc simplement faire des montages dans un fichier texte et produire un fichier vidéo dans un des nombreux formats de sortie de ffmpeg. Ces deux outils fonctionnant en ligne de commande on peut également les utiliser pour des traitements par lot automatiques (ex : ajouter un logo à toutes les vidéos d'un répertoire)

Quelques utilisations de ces outils en détail :

- ajouter un logo sur une vidéo
- ajouter un titre et un générique à une vidéo
- créer une mosaïque de vidéos avec avisynth
- créer un diaporama en vidéo (prochainement)
- ajouter un sous-titre à une vidéo (prochainement)

Au préalable, il faut télécharger et installer avisynth : télécharger la version 2.5.7 d'avisynth et avoir installé ffmpeg (voir installation et utilisation de ffmpeg)

Liens :

Site officiel (en français) : avisynth
Forum avisynth en français (sur unite-video.com) : forum avisynth
Un autre forum en français (sur ripp-it.com) : forum filtres avisynth
Forum en anglais (sur doom9) : avisynth usage forum