Ceci est une ancienne révision du document !
Table des matières
FFMPEG & IMAGEMAGICK
FFMPEG = STREAM (audio ou video)
Cet outil est efficace car autonome : il ne nécessite pas d'autres soft ou autre pour fonctionner ou faire des choses intéressantes.
ffmpeg
ne fonctionne que sur des streams, qu'ils soient audio ou vidéo (ou pour les assembler/fabriquer/modifier…). Pour les images fixes, voir ci dessous ImageMagick
.
Ce chapitre recense qques lignes de commandes qui me sont utiles, mais juste avant, en qques mots comment ça marche :
ligne de commande typique
ffmpeg option_générales option_input -i input options_output output
parmis les options intéressantes, on retrouve :
# input, output -r fps # règle le taux de rafraichissement de la vidéo -s 1280x720 # règle la définition de la vidéo # output -c:v h264 # règle le codec de la vidéo de sortie -b:v 8M # règle le bitrate de la vidéo de sortie
Extraire une piste audio
On souhaite extraire la piste audio sans l'altérer:
# quel est le format du stream ? ffmpeg -i <mon_fichier> output.ext # note : l'extension .ext n'est pas reconnue, mais ffmpeg va afficher le contenu du fichier, ex : # ... # Duration: 00:06:26.45, start: 0.000000, bitrate: 153 kb/s # Stream #0:0[0x1](und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(progressive), 480x360 [SAR 1:1 DAR 4:3], 25 kb/s, 25 fps, 25 tbr, 90k tbn (default) # Metadata: # creation_time : 2015-09-14T10:01:24.000000Z # ... # Stream #0:1[0x2](und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 125 kb/s (default) # ... # Le stream 0:1 correspond donc à notre audio, et le format est aac / mp4 # Extraire le stream audio ffmpeg -i <mon_fichier> -map 0:1 -acodec copy <monFichierAudio.mp4> # -acodec codec force audio codec ('copy' to copy stream)
Time lapse
Mon activité (astro)photographique m'a amené à effectuer des timelapse. Ne voulant pas utiliser l'outil intégré àl'appareil car je souhaite conserver le format raw, je dois maintenant me retrousser les manches pour ré-assembler les photos en vidéo…
Préparation
A l'aide de son logiciel de développement de raw favori, on exporte l'ensemble des photos des la vidéos dans un dossier D:\temp
et en prenant soin de les renommer img-0001.jpg
. Il est important de commencer la numérotation à 0001
.
Mes lignes de commandes
# vidéo en HD pour regarder chez soi D:\Applis\ffmpeg\bin\ffmpeg -r 24 -i D:\temp\img-%04d.jpg -c:v libx264 -b:v 8M -s 1280x720 D:\temp\out.mkv # vidéo en HD pour le web (chrome - webm/VP8) D:\Applis\ffmpeg\bin\ffmpeg -r 24 -i D:\temp\img-%04d.jpg -c:v libvpx -b:v 8M -s 1280x720 D:\temp\out.webm # vidéo en HD pour le web (IE - mp4/h264) D:\Applis\ffmpeg\bin\ffmpeg -r 24 -i D:\temp\img-%04d.jpg -c:v h264 -b:v 8M -s 1280x720 D:\temp\out.mp4 # vidéo en SD pour le web (IE - mp4/h264) D:\Applis\ffmpeg\bin\ffmpeg -r 24 -i D:\temp\img-%04d.jpg -c:v h264 -b:v 2M -r 24 -s 640x360 D:\temp\out.mp4
Filtres vidéos
On peut traiter la qualité d'image, par exemple pour compenser une exposition. Cela peut être fait dans le cas d'un timelapse, ou d'une conversion de format d'une vidéo.
Les filtres sont invoqués avec l'option -vf
. On peut en ajouter plusieurs -vf “filtre1, fitre2”
.
Quelques filtres que j'ai utilisés:
[{https://ffmpeg.org/ffmpeg-filters.html#exposure|exposure]]
corriger l'exposition de chaque image en EVeq
pour gérer brightness, contrast… mais je n'ai pas vu de réglage autohisteq
applique une correction d'histogrammehflip
applique une inversion horizontal
# Exemples # correction d'exposition +1,5 EV ffmpeg -r 24 -i folder/image%08d.jpg -c:v libx264 -b:v 8M -s 1280x720 -vf "exposure=1.5" out.mkv # correction d'expo + hflip ffmpeg -r 24 -i folder/image%08d.jpg -c:v libx264 -b:v 8M -s 1280x720 -vf "exposure=1.5, hflip" out.mkv
Streaming live avec ffmpeg
Cas d'usage: on veut streamer une webcam sur un navigateur web distant. Ce sujet, un peu copieux, est présenté dans un article dédié.