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



      comment installer ffmpeg avec windows XP

ffmpeg est un utilitaire pour la transformation des fichiers audio-video utilisable en ligne de commande. Bien qu'avec windows, on soit plutôt habitué à utiliser des logiciels à travers des interfaces graphiques, ffmpeg dispose d'un éventail de possibilités très intéressantes, rapides à mettre en oeuvre, et utilisables dans des fichiers batch pour des traitements pars lot. Il est disponible en open-source (donc gratuit) et évolue régulièrement. Comment s'y prendre pour l'installer et l'utiliser?

Télécharger une version de ffmpeg
Les versions récentes de ffmpeg, précompilées pour Windows sont téléchargeables sur ce site : ffmpeg pour windows. Il faut récupérer la plus récente, c'est un fichier compressé au format 7z, format ouvert que l'on peut décompresser en utilisant 7zip, logiciel open-source qui compresse et décompresse également de nombreux autres formats.

Décompresser le fichier de ffmpeg
Une fois décompressé, 3 fichiers sont extraits, à copier dans le répertoire C:/Windows/System32/ pour qu'ils puissent être utilisables depuis n'importe quel dossier :
ffmpeg.exe est le programme principal qui permet de passer les vidéos d'un format à un autre, d'extraire du son, des images fixes, etc. (voir des exemples dans la rubrique pratique)
ffplay.exe est un lecteur simple pour afficher des vidéos
pthreadGC2.dll est une librairie de fonctions utilisées pour faire fonctionner l'ensemble (cf dll sur wikipedia)

Utiliser la ligne de commande
Pour utiliser ffmpeg, il faut d'abord ouvrir une invite de commande, ce qui peut se faire de différentes manières : soit à partir de "démarrer", puis "programme/accessoires/invite de commande"

soit "démarrer/exécuter"
ouvrir une invite de commande, phase 1

puis entrer "cmd" dans la fenêtre qui s'ouvre
ouvrir une invite de commande, phase 2

Pour un usage régulier et bien plus pratique de la ligne de commande, on peut installer l'utilitaire cmdhere.exe téléchargeable parmi les powertoys du site de microsoft. Une fois installé, l'option open command window here est ajouté au menu contextuel des dossiers, ce qui évite d'avoir à se déplacer dans les dossiers. Un autre truc bien pratique : on peut rappeler les dernières commandes tapées, en utilisant la "fléche haut", ce qui évite de retaper les mêmes lignes ou presque en faisant des essais et même faire un copier-coller avec le bouton droit de la souris (ctrl-v ne marchera pas).

Obtenir l'aide et la documentation

Les différentes commandes de ffmpeg sont décrites dans une aide intégrée. Pour l'afficher, on utilise la commande suivante : ffmpeg -h
Les différents codecs et formats de fichiers sont affichables avec : ffmpeg -formats
Il est possible de réunir les deux dans un fichier texte pour avoir une documentation imprimable, en entrant ffmpeg -h > doc.txt puis ffmpeg -formats >> doc.txt (les deux chevrons indiquant que le résultat sera mis à la suite du fichier créé précédemment)

Maintenant vous avez tous éléments pour utiliser ffmpeg!

Dans la rubrique « pratique » de ce site, quelques exemples d'utilisation de ffmpeg :
extraire le son d'un fichier vidéo
transformer une vidéo flv en avi
extraire des images d'une vidéo toutes les X secondes
etc.




Si cet article vous a été utile, aidez à le faire connaître en deux clics : en lui ajoutant une "mark" sur tutmarks (en cliquant sur le chiffre dans le rond bleu!)


      créer une vidéo à partir d'images

Comment réunir une série d'images sous forme de vidéo? ffmpeg permet simplement, à partir d'une suite de fichiers images numérotés, de créer une séquence vidéo dans de nombreux formats. Voila la ligne de commande à utiliser :

pour fabriquer une vidéo au format flash FLV :

ffmpeg -r 25 -an -b 360k -i image-%04d.png -s 360x288 -f flv video.flv

-r 25 : définir le taux à 25 images/secondes
-an : desactiver l'audio
-b 360k : débit pour le flux vidéo, ici 360 kbits/secondes, à définir selon la taille du fichier que l'on souhaite
-i image-%04d.png : "modèle" pour les noms des fichiers image
-s 360x288 : définir les dimensions de la vidéo à obtenir
-f flv : fixer le format de sortie, ici flash vidéo FLV video.flv : nom du fichier vidéo à créer

Avec cette commande, les fichiers images doivent respecter un format bien précis et s'appeler image-0001.png, image-0002.png, etc. C'est ce qui est signifié par "%04d", bien sur on peut l'adapter (par exemple : %02d pour des fichiers de la forme image-02.png). La numérotation des fichiers image doit commencer à un et il ne peut pas y avoir de "trous". Parmi les formats d'image pris en charge par ffmpeg : jpg, tif, bmp, png, etc.

L'inverse est également possible : transformer une vidéo en série d'images



variante : modifier la durée d'affichage des images

Avec la commande précédente, chaque image est affichée pendant 1/25e de secondes. Pour modifier cette durée, il faut changer le nombre d'images par seconde de la vidéo source. Pour que chaque image reste visible une seconde, tout en conservant un taux de 25 images/seconde dans la vidéo finale on peut utiliser la commande suivante :

ffmpeg -r 1 -i image-%04d.png -an -b 360k -s 360x288 -r 25 -f flv video.flv

Pour qu'une image reste affichée 4 secondes, on utiliserait "-r 0.25", à l'inverse pour qu'une image reste un quart de seconde, il faudrait utiliser "-r 4". Cette modification concerne toutes les images de la vidéo, pour fixer séparément la durée d'affichage de chaque image, il faut utiliser ffmpeg avec avisynth


      transformer une video flv en avi

Avec ffmpeg, on peut facilement transformer une video ".flv" au format ".avi". Mais, il faut savoir que l'avi n'est pas un format à proprement dire, c'est un standard de fichier pour l'audiovisuel qui peut contenir de l'audio et de la vidéo compressés selon différents codecs. C'est un format conteneur. Voila la méthode, avec le minimum de paramètres :

ffmpeg -i fichiervideo.flv -f avi fichiervideo.avi

-i fichiervideo.avi : fichier à transformer
-f avi : forcer le format du fichier de destination fichiervideo.avi : nom du fichier de destination


On peut ajouter des paramètres pour obtenir des résultats plus précis :

ffmpeg -i fichiervideo.flv -vcodec rawvideo -s 320x240 -acodec pcm_s16le -ac 2 -f avi fichiervideo.avi

-i fichiervideo.avi : fichier à transformer
-vcodec rawvideo : enregistre les images dans un format non compressé
-s 320x240 : change la résolution
-acodec pcm_s16le : définit le codec audio, non compressé
-ac 2 : passe en stéréo
-f avi : forcer le format du fichier de destination fichiervideo.avi : nom du fichier de destination

Le résultat sera un fichier avi (très volumineux!), ou chaque image est une image-clé et du son au format wav non compressé. Ca peut être utile pour éditer la séquence (montage, etc.)


On peut aussi extraire uniquement la bande son :

ffmpeg -i fichiervideo.flv -vn -f wav fichierson.wav

-i fichiervideo.avi : fichier à transformer
-vn : désactiver la vidéo
-f wav : forcer le format du fichier de destination fichierson.wav : nom du fichier de destination

(Pour que tout ça fonctionne dans n'importe quel répertoire, il faut que ffmpeg soit copié dans C:/windows/system32/, voir aussi ce billet pour l'installation et l'utilisation de ffmpeg)




Si cet article vous a été utile, aidez à le faire connaître en deux clics : en lui ajoutant une "mark" sur tutmarks (en cliquant sur le chiffre dans le rond bleu!)


      transformer une vidéo en vignettes

Parfois, ça peut être utile d'avoir les scènes d'une séquence vidéo sous forme d'une série d'images, ffmpeg peut résoudre cela très simplement avec la commande suivante :

ffmpeg -i fichiervideo.avi -r 1 -s 160×120 -f image2 "fichiervideo-%4d.png"

-i fichiervideo.avi : fichier duquel on extrait les vignettes (fichier d'origine en n'importe quel format vidéo lisible par ffmpeg!)
-r 1 : nombre d'images par seconde
-s 160x120 : résolution des images
-f image2 : forcer le format du fichier de destination, ici en image de type png, l'expression '%04d' signifie que les fichiers seront enregistrés avec 4 chiffres croissants (sous la forme test-0001.png, test-0002.png, test-0003.png, etc.)

Cette version enregistre 1 images toutes les secondes, en modifiant le chiffre après "-r" on peut prendre une image toutes les 10 secondes (-r 0.1), 5 images par secondes (-r 5), etc. En enlevant "-s 160x120", les images seront enregistrées avec la résolution de la vidéo d'origine.

(Pour que tout ça fonctionne dans n'importe quel répertoire, il faut que ffmpeg soit copié dans C:/windows/system32/, voir aussi ce billet pour l'installation et l'utilisation de ffmpeg)



Pour extraire des vignettes de toutes les vidéos d'un répertoire, on peut utiliser un fichier batch contenant les lignes suivante :

for %%I in (*.*) do echo ffmpeg -i %%I -r 1 -f image2 "%%I-%%%%4d.png" >> vigfictemp.bat
call vigfictemp.bat
del vigfictemp.bat

Vous pouvez le télécharger ici : vignettes.bat. il suffit de le placer dans le répertoire avec les vidéos, de double-cliquer et des images seront capturées dans toutes les vidéos du répertoire. Pensez à ajouter la résolution de sortie, ou ajuster le nombre d'images par seconde pour l'adapter à ce que vous voulez. (un fichier ".bat" s'édite avec le bloc-notes, par exemple)


Si cet article vous a été utile, aidez à le faire connaître en deux clics : en lui ajoutant une "mark" sur tutmarks (en cliquant sur le chiffre dans le rond bleu!)


      extraire le son d'un fichier video

Comment récupérer la piste sonore d'un film numérique? (au format avi, mpeg, flv, et autres)

Encore une fois c'est ffmpeg qui va être utile pour extraire l'audio d'un fichier film, au format wav ou mp3, et cela en moins d'une minute. On peut aussi en profiter pour rééchantilloner la bande son.
(voir ce billet pour l'installation et l'utilisation de ffmpeg)

Voila les lignes de commande à utiliser :

ffmpeg -i fichiervideo.avi -vn -ar 44100 -ac 2 -f wav fichierson.wav

-i fichiervideo.avi : fichier duquel on extrait la bande son
-vn : desactiver la video
-ar 44100 : taux d'echantillonage, ici 44100Hz on peut bien sur le faire varier
-ac 2 : nombre de voies audio (ici, en stereo)
-f wav : forcer le format du fichier de destination, ici en wav

ffmpeg -i fichiervideo.avi -vn -ar 44100 -ac 2 -ab 192k -f mp3 fichierson.mp3

-i fichiervideo.avi : fichier duquel on extrait la bande son
-vn : desactiver la video
-ar 44100 : echantillonnage à 44100Hz (44100 samples par seconde)
-ac 2 : 2 voies audio (stereo)
-ab 192k : definit le bitrate audio (ici 192 kbps)
-f mp3 : forcer le format du fichier de destination en mp3

Une autre solution, sans ligne de commande, consiste à utiliser Virtual Dub pour extraire la piste audio (menu file/save wav), à condition que la vidéo d'origine soit dans un format reconnu par Virtual Dub, c'est à dire pas de flash video (.flv). Et enfin, pour les vidéos qui résistent à l'extraction depuis le fichier, on peut toujours les lire et enregistrer en temps réel le mixeur sonore de windows en utilisant audacity.