Table des matières
FFMPEG
Informations
Information sur le contenu d'une vidéo
ffmpeg -i fichier
Liste des codecs
Liste des codecs
- Liste tous les codecs (Audio, vidéo, sous-titres) disponibles en encodage et/ou décodage.
ffmpeg -codecs
- Liste uniquement les codecs (Audio, vidéo, sous-titres) disponibles pour l'encodage.
ffmpeg -encoders
- Liste uniquement les codecs (Audio, vidéo, sous-titres) disponibles pour le décodage.
ffmpeg -decoders
Liste les formats
- Liste tous les formats de fichier (Audio, vidéo, sous-titres) disponibles en multiplexage et/ou démultiplexage.
ffmpeg -formats
- Liste uniquement les formats de fichier (Audio, vidéo, sous-titres) disponibles pour le multiplexage.
ffmpeg -muxers
- Liste uniquement les formats de fichier (Audio, vidéo, sous-titres) disponibles pour le démultiplexage.
ffmpeg -demuxers
Copie
Copie d'une partie d'une vidéo (sans réencodage)
Permet de changer de container ou de prendre qu'une partie de la vidéo sans passer par un réencodage.
Exemple copie de la vidéo input.mkv dans output.mkv en commençant à partir de 3 mn et pour une durée de 10 mn et 1/2 seconde.
ffmpeg -i input.mkv -c copy -ss 00:03:00 -t 00:10:00.5 output.mkv
Copie de la partie vidéo sans l'audio
ffmpeg -i input.mkv -vcodec copy -an output.mkv
Copie de différents streams (audio/sous titres)
- Identifier les streams avec la commande
ffmpeg -i input.mkv
- Lancer la copie sur les streams désirés
ffmpeg -i input.mkv -map 0:0 -map 0:1 -map 0:2 -map 0:6 -map 0:7 -c copy output.mkv
Transformation
Réencodage
Réencodage de la partie vidéo
ffmpeg -i input.mkv -vcodec hevc -acodec copy output.mkv
Réencodage de la partie audio
ffmpeg -i input.mkv -vcodec copy -acodec libmp3lame output.mkv
en précisant le bitrate :
ffmpeg -i input.mkv -vcodec hevc-acodec libmp3lame -b:a 64k output.mkv
Encodage à partir d'un DVD
Identification des streams à récupérer
A partir du répertoire VIDEO_TS lister les streams disponibles :
ffmpeg -i VTS_01_1.VOB
Noter les streams souhaités (stream vidéo 0:1 et stream audio 0:2 par exemple).
Récupération des streams dans un seul fichier
A partir du répertoire VIDEO_TS récupérer les streams souhaités de tous les fichiers VTS_xx_y.VOB :
ffmpeg -i "concat:VTS_01_1.VOB|VTS_01_2.VOB|....|VTS_xx_y.VOB" -map 0:1 -map 0:2 -f mpeg -c copy fichier.mpeg
Encodage final
Réencodage classique avec la commande :
ffmpeg -i fichier.mpeg -vcodec <codec video> -acodec <codec audio> <fichier de sortie>
Rotation d'une vidéo
-vf "transpose=dir=x"
avec x :
- 0 : 90° antihoraire et miroir vertical
- 1 : 90° horaire
- 2 : 90° anti horaire
- 3 : 90° horaire et miroir vertical
Pour une rotation à 180° on fera 2 fois 90° :
-vf "transpose=dir=2:transpose=dir=2"
Effet miroir sur une vidéo
ffmpeg -i input.mp4 -vf "hflip" output.mp4 # miroir horizontal ffmpeg -i input.mp4 -vf "vflip" output.mp4 # miroir vertical
Changement de résolution
format HD
-vf scale=1920:1080
Modification vitesse
L'accélération est déterminé par le rapport entre le débit d'image de la source (souvent 25 fps) et le débit de lecture. Le débit d'écriture dans le fichier de sortie n'intervient pas dans le ratio.
Accélérer par 20
ffmpeg -r 500 -i input.mkv -r 25 output.mkv
Ici on lit à 500 fps une source à 25 fps donc on accélère par 500/25 = 20 fois. Le fait d'écrire la vidéo à 25 fps (ou autre) n'intervient pas dans le ratio.
Ralentir par 5
ffmpeg -r 5 -i input.mkv -r 25 output.mkv
Ici on lit à 5 fps une source à 25 fps donc on accélère par 5/25 = 0,2 fois, on ralenti donc d'un facteur 5.
Inverser une vidéo
Appliquer le filtre d'inversion vidéo :
ffmpeg -i input.mp4 -vf reverse output.mp4
Vidéo en split-screen
Mosaïque de vidéos
Concaténation de vidéos
Sans réencodage
Créer un fichier “liste.txt” contenant la liste des fichiers avec le chemin :
file '/chemin/video1.mkv' file '/chemin/video2.mkv' ... file '/chemin/videox.mkv'
Puis lancer la commande :
ffmpeg -f concat -safe 0 -i liste.txt -c copy output.mkv
Sous titrage d'une vidéo
Intégration sous-titres dans la vidéo
On peut intégrer un fichier de sous-titres au format SRT (SubRip). Le fichier doit être correctement formaté avec des marqueurs de temps.
ffmpeg -i input.mp4 -vf "subtitles=subtitles.srt" output.mp4
Personnalisation sous-titres
ffmpeg -i input.mp4 -vf "subtitles=subtitles.srt:force_style='FontName=Arial,FontSize=24,PrimaryColour=&H00FFFF&,Alignment=2'" output.mp4
Ajout d'une piste de sous titres
ffmpeg -i input.mkv -f srt -i sous-titres.srt -map 0:0 -map 0:1 -map 1:0 -c:v copy -c:a copy -c:s srt output.mkv
Chapitrage d'une vidéo
Créer fichier chapitres
Créer un fichier au format OGG texte en évitant les accents et caractères spéciaux dans les titres :
CHAPTER01=00:00:00.000 CHAPTER01NAME=Titre du premier chapitre CHAPTER02=00:09:19.000 CHAPTER02NAME=Titre du chapitre ... CHAPTER12=01:55:50.320 CHAPTER12NAME=Titre du chapitre
