Outils pour utilisateurs

Outils du site


ffmpeg

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
ffmpeg [2013/11/11 11:16] lucffmpeg [2025/04/22 19:00] (Version actuelle) luc
Ligne 1: Ligne 1:
 +====== FFMPEG ======
 +
 +FFMPEG = STREAM (audio ou video) 
 +
 +ffmpeg est fait pour gérer des streams, des flux audio et/ou video. Regarder du côté d'[[imagemagick]] pour les traitements sur des images fixes.
 +
 +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 =====
 +
 +<code bash>ffmpeg option_générales option_input -i input options_output output</code>
 +parmis les options intéressantes, on retrouve :
 +<code bash>
 +# 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
 +</code>
 +
 +===== Extraire une piste audio =====
 +On souhaite extraire la piste audio sans l'altérer:
 +<code bash>
 +# 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)
 +</code>
 +
 +===== 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 ====
 +
 +<code bash>
 +# 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
 +</code>
 +
 +===== 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 EV
 +  * ''[[https://ffmpeg.org/ffmpeg-filters.html#eq|eq]]'' pour gérer brightness, contrast... mais je n'ai pas vu de réglage auto
 +  * ''[[http://www.ffmpeg.org/ffmpeg-filters.html#histeq|histeq]]'' applique une correction d'histogramme
 +  * ''hflip'' applique une inversion horizontal
 +
 +<code bash>
 +# 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
 +
 +</code>
 +
 +===== 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 [[ffmpeg_live_streaming|article dédié]].
 +