automatic translation maschinelle Übersetzung

Add to Technorati Favorites
urzhiata | index

      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.


      diffuser des vidéos sur le web

Jusqu'aujourd'hui, intégrer de la vidéo sur un site web était plutot complexe, il fallait se confronter aux problèmes liés aux différentes plateformes, à la compatibilité des formats, à la taille importante des fichiers et aux faibles vitesses de connexion. Aujourd'hui des solutions assez simples existent, utilisant un player flash pour la diffusion et des outils gratuits pour la mise au point de la vidéo. Les séquences au format FLV sont alors visibles sur mac, windows, linux ou unix à condition d'installer le plugin flash. C'est la solution choisie par les sites de partage vidéo comme youtube ou dailymotion.

Pour diffuser sa video avec cette solution, il faut commencer par la transformer au format FLV 1.1, une solution gratuite et simple consiste à utiliser Riva Encoder, qui intègre une série de réglages courants. Si ces réglages ne suffisent pas, il faut encoder la vidéo en deux étapes avec les outils en ligne de commande ffmpeg et flvmdi (flv meta-data injector). La première étape consiste à transformer la vidéo au format FLV 1.0 avec ffmpeg, puis la passer en FLV 1.1 en ajoutant des métadonnées avec flvmdi, ce qui permettra d'avoir une barre de défilement dans le player.

Une fois la vidéo encodée, il faut choisir un player vidéo pour l'intégrer dans la page, parmi ceux existants celui de Neolao est très complet, il permet de diffuser les séquences, y compris à partir de playlists, tout en offrant la possibilité de modifier complètement l'aspect visuel du player. Comme alternative à ce player, on peut également choisir celui développé par Jeroen Wijering.

Voilà l'exemple d'une séquence (sans son) transcodée avec ffmpeg + flvmdi et le code html permettant de l'insérer dans la page :





commande ffmpeg :

ffmpeg -i spiders_4.avi -an -ss 00:00:35 -t 00:00:15 -f flv -s 320x240 spiders_extrait.flv

Voila comment se décompose la ligne de commande :

-i spiders_4.avi : fichier de départ (spiders_4.avi)
-an : désactiver l'audio
-ss 00:00:35 : commencer la transformation à partir de la 35e seconde
-t 00:00:15 : durée à prélever
-f flv : format de sortie
-s 320x240 taille souhaitée de la vidéo
spiders_extrait.flv : nom du fichier résultant


commande flvmdi :

flvmdi spiders_extrait.flv "/ehttp://urzhiata.emoc.org" /x

Ce qui signifie :

spiders_extrait.flv : fichier à traiter
"/e http://urzhiata.emoc.org" : ajouter un champ aux metadonnées avec l'adresse du site d'origine de la vidéo
/x : créer un fichier xml contenant le contenu des métadonnées
(Ces deux options ne sont pas nécessaires)


code html :

<object type="application/x-shockwave-flash" data="http://www.emoc.org/video/player_flv.swf" width="320" height="240">
    <param name="movie" value="http://www.emoc.org/video/player_flv.swf" />
    <param name="FlashVars" value="config=http://www.emoc.org/video/spiders_extrait_config.txt" />
    <param name="wmode" value="transparent" />
</object>


Le fichier spiders_extrait_config.txt contient tous les paramètres du player (couleurs, etc.), ainsi que l'url de la séquence vidéo et l'url de l'image utilisée en titre.

Voila! N'hésitez pas à faire des commentaires ou à poser des questions si ce n'est pas clair! Et 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 série d'images

Voici une méthode pour décomposer une vidéo en images fixes (png ou jpeg). On peut s'en servir également pour reconstituer une sorte de synopsis à partir d'une séquence, en extrayant une image selon une fréquence donnée...

Pour obtenir notre séquence d'image, on utilise ffmpeg, le couteau suisse de la conversion audio-video, utilisable en ligne de commande. Un truc bien pratique pour utiliser ce type d'utilitaire est d'installer cmdhere.exe téléchargeable parmi les powertoys du site de microsoft. Une fois installé, le choix "open command window here" est ajouté au menu contextuel des dossiers. Un autre truc à retenir, c'est qu'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)

Pour cet exemple, une fois téléchargé et décompressé ffmpeg, on copie les fichiers dans notre répertoire de travail "C:\video", avec la vidéo, c'est la aussi que nous placerons les images extraites. Ensuite on ouvre une fenêtre de commandes dans ce répertoire

ffmpeg est capable de traiter un nombre de formats différents pour en avoir la liste il faut taper :

ffmpeg -formats

Pour extraire toutes les images de la vidéo dans le répertoire

ffmpeg -i video.avi -r 25 -f image2 "test-%4d.png"

-i : indique le fichier de départ (input file), le nom du fichier suit
-r : taux d'images par secondes (ici 25)
-f : forcer le format de sortie (sequence d'image)
puis le nom du fichier de sortie, 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.)

On peut avoir la liste des commandes de ffmpeg en tapant

ffmpeg -h

Pour extraire une image à un moment précis, on utilisera

ffmpeg -i video.avi -an -ss 00:00:03 -r 1 -vframes 1 -s 400×300 -f mjpeg -y image.jpg

Le temps est exprimé sous la forme HH:MM:SS.XXX, ou XXX représente les millisecondes Voila, c'est très rapide (une fois digérée l'utilisation de la ligne de commande!), ici l'export se fait en png car l'export jpeg en série donne des résultats bizarres (la qualité diminue au fur et à mesure), je n'ai pas trouvé pour l'instant d'explication à ce problème. Le poids des fichiers png peut poser problème selon la taille de la vidéo. On peut les traiter tous en lot, en utilisant irfanview par exemple (voir le billet concernant le traitement par lot d'images)

ffmpeg : site officiel de ffmpeg, documentation, on peut télécharger la version précompilée pour windows ici : ffmpeg pour windows

Dans le tutoriel sur chuck, il y a les infos pour débuter avec la ligne de commande, je vous invite à y jeter un oeil, si cela vous paraît obscur... N'hésitez pas à me poser des questions, j'essaierais d'y répondre...

L'inverse est également possible : créer une vidéo à partir d'images


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


      traitement par lot d'images

Quand il faut répéter de nombreuses fois la même opération, c'est bien utile d'avoir le logiciel adéquat pour le faire automatiquement. J'ai recherché un moyen pour transformer des dizaines d'images au format de gimp (.xcf), un préalable obligatoire avant d'utiliser les outils d'animation du gimp animation package. Au fil de la recherche, 3 solutions ont émergé, bien qu'une seule finalement s'acquitte de la tache.

Irfanview est un visualiseur d'images plein de qualités (en freeware), mais il est capable de bien plus : sauvegarde dans un nouveau format, application d'effets visuels, lecture et écriture des méta-données, acquisition twain (scanner, etc) et traitement par lot (batch conversion) : avec découpe, redimensionnement, etc. si nécessaire. Mais, dans mon cas, ce n'est pas suffisant car irfanview ne gère pas le format xcf. (Irfanview)

Imagemagick : encore une boite à outils pleine de ressources : conversion dans de nombreux formats et manipulation graphique de l'image : composition, filtres, rotations, transformations... Sa spécificité est de fonctionner en ligne de commande, sans interface graphique, pas très "convivial" mais sobre et efficace. On peut l'utiliser pour du traitement par lot nécessitant plusieurs opérations répétitives en écrivant un fichier batch. Imagemagick lit et affiche le format xcf mais ne l'écrit pas! (Imagemagick)

La solution est apparue sous la forme d'un plugin pour gimp, le David Batch Processor. De plugin permet d'appliquer différentes transformations sur une série d'images : renversement, flou, modifications colorimétriques, redimensionnement, découpe, netteté, renommage, enregistrement en xcf et 10 autres formats! Voila la solution! (David Batch Processor)

Précision : dans le cas d'une animation, la première étape consiste à avoir toutes les images au format xcf et nommées de manière régulière (image_000001.xcf, image_000002.xcf, etc.) Ensuite il est possible de leur appliquer (calque par calque) les modifications que l'on veut avec Gimp-GAP.

Pour avoir un aperçu des capacités d'imagemagick voir de nombreux exemples ici sur cette page.

mise à jour : Après quelques jours d'utilisation, je m'aperçois finalement que la solution est bien plus simple que tout ça, elle se trouve (naturellement...) dans le menu images > video de gimp, il suffir de faire frames > convert, de choisir le nombre de fichier à convertir et le nouveau format, et voila! Les solutions proposées au-dessus sont donc inutiles, à part pour garnir une trousse à outils numériques.