Ffmpeg

De Linuxmemo.

(Différences entre les versions)
(Actuces)
(Information sur la video)
Ligne 25 : Ligne 25 :
*liste les stream
*liste les stream
*liste les codecs
*liste les codecs
 +
===Encoder la vidéo===
==Conversion==
==Conversion==

Version du 30 décembre 2017 à 21:56

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.

"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

Information sur la video

ffmpeg -i file.avi
ou
avprobe file.avi
ou
ffprobe file.avi
  • liste les stream
  • liste les codecs

Encoder la vidé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