====== 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 ---- [[all:bibles:linux:commandes:ffmpeg|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 ---- [[all:bibles:linux:commandes:ffmpeg|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 -acodec ==== 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/]] ---- [[all:bibles:linux:commandes:ffmpeg|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 ---- [[all:bibles:linux:commandes:ffmpeg|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 ---- [[all:bibles:linux:commandes:ffmpeg|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 [[https://doc.ubuntu-fr.org/mkvtoolnix|MKVToolnix]] pour intégrer le chapitrage à la vidéo. ---- [[all:bibles:linux:commandes:ffmpeg|Haut de page]] ===== Sources ===== [[https://debian-facile.org/doc:media:ffmpeg]]\\ [[https://coderocks.fr/datarocks/cmdtools-ffmpeg/]] ---- [[all:bibles:linux:commandes:ffmpeg|Haut de page]]