automatic translation maschinelle Übersetzung

Add to Technorati Favorites
urzhiata | index

      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 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



      lire une vidéo à l'envers

Pour faire défiler une vidéo ".avi" (son + image) à l'envers, c'est avisynth qui offre la solution la plus simple : en créant un fichier texte de deux lignes. Le son et l'image sont inversés sans créer de nouveau fichier. Avisynth s'intercale entre la vidéo originale et le lecteur, et "filtre" le fichier original. Pour voir la vidéo, on ouvre le fichier ainsi créé dans son player habituel, pour moi cela a très bien fonctionné avec Media Player Classic, mais pas avec VLC. Pour créer un fichier ".avi" réel de la vidéo inversé, on peut utiliser la vidéo virtuelle d'avisynth dans virtualdub et sauver en ".avi".

Voila ce que doit contenir le fichier texte (video_a_l_envers.avs)

AVISource("C:\VIDEO\fichier_video.avi")
Reverse


Avisynth est capable de beaucoup plus (filtrage des images, redimensionnement, ajout de sous-titres, conversion de formats, nettoyage de l'image, etc.)
Télécharger les logiciels : avisynth, media player classic, virtualdub (les 3 sont des logiciels libres)