FFmpeg

Voici un article vous présentant des exemples d'utilisation du programme FFmpeg.

A la base FFmpeg va vous servir à réaliser de la conversion de formats de fichiers vidéo. Exemple basique :

$ ffmpeg -i Fichier_In.mkv Fichier_Out.avi

Et pour les conversions vous pouvez vous lâcher sachant que la commande :

$ ffmpeg -formats

va vous lister les formats supportés par Ffmpeg.

Donc si vous souhaitez convertir une vidéo dans un format plus classique , la commande :

$ ffmpeg -i video.flv video.mpg

marchera trés bien.

Pour obtenir des informations sur un fichier vidéo l'option "-i" est faite pour vous :

$ ffmpeg -i Fichier_In.mkv 

ffmpeg version N-46474-gb697b29-   http://johnvansickle.com/ffmpeg/    Copyright (c) 2000-2015 the FFmpeg developers

  built with gcc 4.9.2 (Debian 4.9.2-10)

  configuration: --enable-gpl --enable-version3 --disable-shared --disable-debug --enable-runtime-cpudetect --enable-libmp3lame --enable-libx264 --enable-libx265 --enable-libwebp --enable-libspeex --enable-libvorbis --enable-libvpx --enable-libfreetype --enable-fontconfig --enable-libxvid --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-gray --enable-libopenjpeg --enable-libopus --enable-libass --enable-gnutls --enable-libvidstab --enable-libsoxr --cc=gcc-4.9

  libavutil      54. 23.101 / 54. 23.101

  libavcodec     56. 38.100 / 56. 38.100

  libavformat    56. 32.100 / 56. 32.100

  libavdevice    56.  4.100 / 56.  4.100

  libavfilter     5. 16.101 /  5. 16.101

  libswscale      3.  1.101 /  3.  1.101

  libswresample   1.  1.100 /  1.  1.100

  libpostproc    53.  3.100 / 53.  3.100

Input #0, matroska,webm, from 'Guide to photofiltre-Zz0CVQl9EFg.mkv':

  Metadata:

    COMPATIBLE_BRANDS: iso6avc1mp41

    MAJOR_BRAND     : dash

    MINOR_VERSION   : 0

    ENCODER         : Lavf56.40.101

  Duration: 00:09:28.04, start: 0.007000, bitrate: 587 kb/s

    Stream #0:0(und): Video: h264 (Main), yuv420p, 640x480, SAR 1:1 DAR 4:3, 25 fps, 25 tbr, 1k tbn, 50 tbc (default)

    Metadata:

      CREATION_TIME   : 2013-09-29 16:46:31

      LANGUAGE        : und

      HANDLER_NAME    : VideoHandler

      DURATION        : 00:09:27.920000000

    Stream #0:1(eng): Audio: opus, 48000 Hz, stereo, fltp (default)

    Metadata:

      LANGUAGE        : eng

      DURATION        : 00:09:28.041000000

Pour une version plus compacte ajoutez l'option "-hide-banner".

Pour décomposer une vidéo en image :

$ ffmpeg -i scriptreplay.mp4 image%d.jpg

Vous pouvez ensuite ajouter sur ces images une marque (watermark) :

#!/bin/sh

for i in $(ls *.jpg) 

do

  convert $i -font /usr/share/fonts/truetype/ubuntu-font-family/Ubuntu-B.ttf -pointsize 20 -draw "gravity south fill black  text 0,12 'JF Digonnet' fill white  text 1,11 'JF Digonnet' "  $(basename -s .jpg $i)_b.jpg

done

et enfin reconstruire la vidéo :

$ ffmpeg -f image2 -i image%d_b.jpg imagestovideo.mpg 

Si vous souhaitez extraire le son d'une vidéo, voici la commande :

$ ffmpeg -i video.flv -vn -ar 44100 -ac 2 -ab 192 -f mp3 audio.mp3

ou

$ ffmpeg -i video1.avi -vn -ar 44100 -ac 2 -ab 192 -f mp3 audio3.mp3

Si c'est du ogg que vous souhaitez obtenir en sortie, remplacez "mp3" par "ogg".

$ ffmpeg -i fichierin.mp4 -vn output.mp3

Pour mixer du son et de l'image :

$ ffmpeg -i audio.mp3 -i video.avi video_audio_mix.mpg

Si vous êtes musicien et que vous avez enregistré une chanson dans un fichier mp3, vous pouvez lui ajouter une image afin qu'il apparaisse quand le fichier sera joué :

$ ffmpeg -loop 1 -i mon_image.jpg -i ma_chanson.mp3 -c:v libx264 -c:a aac -strict experimental -b:a 192k -shortest fichierout.mp4

Pour ajouter des sous titres à une vidéo :

$ ffmpeg -i video.mp4 -i subtitles.srt -map 0 -map 1 -c copy -c:v libx264 -crf 23 -preset veryfast video-output.mkv

Si vous souhaitez monter des vidéos de différentes origines, vous aurez certainement à vous les mettre aux mêmes résolutions via la commande :

$ ffmpeg -i fichierin.mp4 -s 640x480 -c:a copy fichierout.mp4

Ensuite vous aurez peut être l'envie de remplacer la bande sonore par la votre . Il vous faudra alors supprimer la première via la commande :

$ ffmpeg -i fichierin.mp4 -an fichierout.mp4

Et pour assembler les différents morceaux vous pourrez utliser la commande suivante :

$ ffmpeg -f concat -i join.txt -c copy fichierout.mp4

sachant que dans le "join.txt" vous lister les vidéos à assembler.

Si votre vidéo est en en anglais vous pourrez ajouter des sous titres via la commande :

$ fmpeg -i fichierin.mp4 -i soustitre.srt -map 0 -map 1 -c copy -c:v libx264 -crf 23 -preset veryfast fichierout.mp4

Vérifiez ensuite le résultat par un :

$ ffplay fichierout.mp4

Sachez que cette commande joue aussi de la musique :

$ ffplay fichier.mp3

Si les sous titres sont trop lents vous pouvez les accélérer

$ ffmpeg -i inputvideo.mp4 -vf "setpts=0.5*PTS" outputvideo.mp4

ou les ralentir dans le cas contraire

$ ffmpeg -i inputvideo.mp4 -vf "setpts=4.0*PTS" outputvideo.mp4

Fait le 07/07/2016