Ffmpeg

De Linuxmemo.

(Différences entre les versions)
(Information sur la video)
Ligne 26 : Ligne 26 :
  ou
  ou
  ffprobe file.avi
  ffprobe file.avi
-
*liste les stream
+
 
-
*liste les codecs
+
tbn = the time base in AVStream that has come from the container
 +
tbc = the time base in AVCodecContext for the codec used for a particular stream
 +
tbr = tbr is guessed from the video stream and is the value users want to see when they look for the video frame rate
 +
 
===Encoder la vidéo===
===Encoder la vidéo===
  -b configuration du débit binaire par défaut 200 kbps
  -b configuration du débit binaire par défaut 200 kbps

Version du 2 janvier 2018 à 14:53

Sources: https://wiki.debian.org/fr/ffmpeg

FFmpeg/Libav permet de multiplexer ou de-multiplexer dans différents formats:

   des flux vidéos compressés (ou pas),
   des flux audio compressés (ou pas),
   des sous-titres dans différents formats. 

Et de modifier, à l'aide de filtre, le contenu de chaque flux indépendamment.

insérer (muxer) ou extraire (demuxer) 
"avconv" est un lien symbolic de "ffmpeg".

Sommaire

Encodage

Formats + Codecs + Filtres

  • liste des formats (container)
ffmpeg -formats
  • liste les codecs disponible pour l'encodage
ffmpeg -codecs
  • liste des filtre
ffmpeg -filters
ffmpeg --help filter=filter_name

Information sur la video

ffmpeg -i file.avi
ou
avprobe file.avi
ou
ffprobe file.avi
tbn = the time base in AVStream that has come from the container
tbc = the time base in AVCodecContext for the codec used for a particular stream
tbr = tbr is guessed from the video stream and is the value users want to see when they look for the video frame rate

Encoder la vidéo

-b configuration du débit binaire par défaut 200 kbps
-sameq copie à l'identique le débit binaire
-s lxh configuration de la taille du cadre d'affichage (l est la largeur et h la hauteur) Resolutions
-aspect configuration du format d'affichage (4:3, 16:9 ou 1.3333, 1.7777)
-vcodec ou -c:v décision du choix du codec
-pass nombre de passage à l'encodage, une passe (-pass 1) ou deux passes (-pass 2)
-qmin détermine le seuil minimum du débit binaire variable (VBR)
-qmax détermine le seuil maximum du débit binaire variable (VBR)
-f sélectionne le nom du conteneur
-r définit le nombre d'images par seconde
ffmpeg -i file.ts -map 0:1 -s 1024x600 -map 0:2 -c:a copy file.avi

Il est important de mapper tous les flux a garder.

Encoder le son

-acodec ou -c:a détermine le choix du codec
-ar configuration de la fréquence d'échantillonnage (44100 Hz)
-ab configuration du débit binaire par défaut 64 kbps
-ac configure le nombre de canaux (mono-stéréo)

Conversion

Choix du format de sortie

C'est l’extension du fichier output qui détermine le type de la sortie

ffmpeg -i file.mkv -c copy output.avi
  1. ) lister les streams (pistes): ffmpeg -i file.mkv
  2. ) lister les streams que l'on garde avec -map: ffmpeg -i file.mkv -map 0:1 -map 0:2 -vcodec copy -acodec copy output.mkv

Changer de format sans toucher au flux

ffmpeg -i file.mkv -c copy file.mov
-c copy: copie à l'identique la totalité des flux
-c:v copy : copie à l'identique les pistes vidéos (ou -vcodec copy)
-c:a copy : copie à l'identique les pistes audio (ou -acodec copy)
-c:s copy : copie à l'identique les pistes sous-titres (ou -scodec copy)

Changer l'ordre des flux (mapping)

ffmpeg -i file.mkv -map 0:0 -map 0:2 -map 0:1 -map 0:4 -map 0:3 -c copy file-v2.mkv

Ajouter un flux

Le paramètre -map permet aussi d'ajouter un flux, dans l'exemple qui suit un sous-titre en espagnol (TOS-es.srt) en position 4 :

ffmpeg -i file.mkv -i TOS-es.srt -map 0:0 -map 0:1 -map 0:2 -map 1:0 -map 0:3 -map 0:4 -c:v copy -c:a copy -metadata:s:s:0 language=esp file-v2.mkv

Extraire un flux

En utilisant les possibilités du mapping il est très facile d'extraire un seul flux d'un fichier en comportant plusieurs :

ffmpeg -i file.mkv -map 0:2 -acodec copy file_BO.mkv

Dans cet exemple, on ne copie qu'une seule des pistes audio.

Extraire une piste audio en MP3

ffmpeg -i file.mkv -map 0:2 -acodec libmp3lame -ar 44100 -ac 2 -ab 192k file_BO.mp3

Extraire un sous-titre

ffmpeg -i file.mkv -map 0:4 -c:s srt file_FR.srt

Découpage

Extraire un segment

FFmpeg/Libav permet d'extraire, des morceaux d'un média, en précisant un point d'entrée avec -ss (-ss 00:06:46) et précisant un durée avec -t (-t 00:01:00). Cette fonction est très utile pour faire des tests d'encodage et pour valider sa commande. À noter que -ss et -t doivent être placés devant le premier input (-i).

ffmpeg -ss 00:06:46 -t 00:01:00 -i file.mkv -c copy file_extrait.mkv

Parfois la durée -t n'est pas prise en compte. On peut utiliser l'option -to en la plaçant au niveau du fichier de sortie

ffmpeg -ss 00:06:46 -i file.mkv -c copy -to 00:01:00 file_extrait.mkv

Actuces

  • choisir ses codecs
ffmpeg -i input.webm -c:v copy -c:a flac output.mkv
-c:v copy => codec:video copy l'originale
-c:a flac => codec:audio en flac
ou bien
-c:av copy -> en une seule option
  • supprimer des pistes audio ou vidéo (streams)
  • utiliser plusieurs "threads"
ffmpeg -threads 4 -i file.mkv -c copy file.avi
Outils personnels