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

Haut de page

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

Haut de page

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
On peut mettre les streams dans l'ordre que l'on veut, par exemple pour avoir l'audio français avant l'anglais.

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

https://coderocks.fr/datarocks/cmdtools-ffmpeg-video/creer-des-videos-en-split-screen-avec-ffmpeg-820/

Mosaïque de vidéos

https://coderocks.fr/datarocks/cmdtools-ffmpeg-video/assembler-des-clips-video-en-une-mosaique-avec-ffmpeg-828/

Haut de page

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

Haut de page

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

Haut de page

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

Intégration à la vidéo

Utiliser un outil comme MKVToolnix pour intégrer le chapitrage à la vidéo.

Haut de page

Sources

https://debian-facile.org/doc:media:ffmpeg
https://coderocks.fr/datarocks/cmdtools-ffmpeg/

Haut de page