Ffmpeg

De Linuxmemo.

(Différences entre les versions)
(Codecs)
(Encodage)
Ligne 14 : Ligne 14 :
  "avconv" est un lien symbolic de "ffmpeg".
  "avconv" est un lien symbolic de "ffmpeg".
 +
==Commandes==
 +
ffmpeg - fast audio and video encoder /decoder
 +
 +
ffplay - media player
 +
 +
ffprobe - show media files characteristics
 +
 +
ffserver - broadcast server for multimedia streaming using HTTP and RTSP protocols
 +
==Encodage==
==Encodage==
===Formats + Codecs + Filtres===
===Formats + Codecs + Filtres===

Version du 23 août 2018 à 15:01

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

https://fr.wikiversity.org/wiki/Formats_vid%C3%A9o

http://www.gouvenelstudio.com/homecinema/resolution.htm

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

Commandes

ffmpeg - fast audio and video encoder /decoder
ffplay - media player
ffprobe - show media files characteristics
ffserver - broadcast server for multimedia streaming using HTTP and RTSP protocols

Encodage

Formats + Codecs + Filtres

Formats

  • liste des formats (container)
ffmpeg -formats

Codecs

  • liste les codecs disponible pour l'encodage
ffmpeg -codecs

http://www.codecsdb.com/

Filtres

  • liste des filtre
ffmpeg -filters
ffmpeg --help filter=filter_name
  • Syntaxe du filtre (filtergraph)
-vf "filter ; filter,filter ; filter"

*Une Description de filtre (filtergraph) est composée de filtre seul ou d'un ou plusieurs "chaîne de filtre" séparé entre elle par un ";". 
(exp: "filtergraph" ou bien "filtergraph ; filtergraph" ...etc.)
*chaine de filtre (filterchain) est composée de filtre seul ou d'un ou plusieurs filtres séparé entre eux par une ",".
(exp: "filtre" ou bien "filtre,filtre" ...etc.)

https://ffmpeg.org/ffmpeg-filters.html

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 en fps (Frame(s) per second ou FPS sont couramment utilisés pour désigner le nombre d'images par seconde (sigle français : IPS))
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)

Tester l'encodage dans Vlc a la volé (sans création de fichier)

ffmpeg -i file.ts -s 1024x768 -c:v libxvid -c:a mp3 -f avi - | vlc -

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

  • mp3
ffmpeg -i file.mkv -map 0:2 -acodec libmp3lame -ar 44100 -ac 2 -ab 192k file_BO.mp3
  • ogg (.oga for audio only files)
ffmpeg -i "input.webm" -vn -acodec copy "output.oga"

https://en.wikipedia.org/wiki/Audio_file_format (.oga for audio only files, .ogv for video with or without sound (including Theora), and .ogx for multiplexed Ogg.)

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