FFMPEG le couteau suisse pour la vidéo

FFMPEG le couteau suisse pour la vidéo

linux

Sous linux (mais ça marche sous MacOS et Windows), parmi les outils les plus fabuleux pour travailler sur les vidéos, FFMPEG est en haut de ma liste.

Il permet en quelques lignes de commande de convertir, d'encoder, d'extraire la piste son d'une vidéo ou d'un audio dans tous les sens. En voici quelques exemples qui me sont bien pratiques. Exemples piochés un peu partout sur la toile. Petit à petit on peut se construire nos propres commandes.

La syntaxe de la commande reste tout à fait classique de la forme ffmpeg_cmd

Je vous propose quelques "recettes" que j'utilise très souvent :

Obtenir des informations sur notre fichier vidéo

On tape la commande : ffmpeg -i ma-video.mp4

Réduire la taille d'une vidéo

ffmpeg -i input.avi -b 1000000 output.avi
ffmpeg -i input.avi -vcodec libx265 output.avi
ffmpeg -i entree.mp4 -vcodec libx264 -crf 24 sortie.mp4

Rotation horaire d'une vidéo

ffmpeg -i video.mp4 -vf "transpose=1" video_rotate.mp4

Avec 1 pour +90°, 2 pour -90°, 3 pour +90° et symétrie verticale

Convertir d'un encodage à un autre

Par exemple du avi au mp4 en qualité moyenne si aucune option n'est spécifiée :

ffmpeg -i video.avi video.mp4

avec la meilleure qualité on rajoute -crf 0 à 51 pour 0 la meilleure qualité à 51 la moins bonne.

ffmpeg -i video.avi -crf 0 video.mp4

Si on souhaite juste changer de container :

ffmpeg -i videoEntree.mkv -c copy videoSortie.mp4

Extraire l'audio d'une vidéo et obtenir un fichier audio en sortie

première façon avec le paramètre -vn

ffmpeg -i maVideo.mp4 -vn monAudioEnSortie.mp3 -vn va bloquer le flux vidéo en sortie et enregistrer notre audio dans le fichier monAudioEnSortie.mp3

deuxième façon avec le paramètre -map

ffmpeg -i maVideo.avi -map 0:a monAudioEnSortie.ogg

On utilise -map qui nous donne plus de possibilités pour définir les flux à copier de l'entrée vers la sortie. ici 0:a va dire à ffmpeg de mapper toutes les pistes audio de notre entrée (le 0) vers le fichier de destination.

exemple d'extraction de flux audio en sélectionnant un passage de la source et l'enregistrer dans un fichier audio

Pour connaître les flux contenus dans un fichier on lance la commande ffmpeg -i maVideo.mkv ce qui donne : ffmpeg_vieuw_flux

Dans cette exemple j'ai qu'un seul flux audio Input #0 et un flux video Stream #0. Dans des vidéos multi-langues, on aurait observer les différents flux. Je veux récupérer 3 secondes du flux audio à partir des 35 secondes du début, je pourrai faire :

ffmpeg -ss 00:00:35 -t 3 -i videoEntree.mkv -map 0:a:0 -c copy audioEnSortie.mp4

-ss : utilisé comme option en entrée (avant le -i), on cherche dans le fichier et on se positionne à 35 secondes du début de la video.

A savoir : la documentation nous dis qu'il n'est pas possible de se positionner précisément dans tous les cas. Il m'arrive d'être obligé de jouer à + ou - sur les secondes pour bien caler mon point de départ.

-t : exprime la durée exprimée en seconde que je souhaite récupérer.

-map : utilisé pour choisir les flux des entrées qu'on veut inclure dans les flux des sorties. Ici 0:a:0 indique que nous allons copier la première source audio dans le ficher de sortie.

Le premier 0 se réfère au premier input de notre fichier en entrée et inclurera tous les flux qu'il contient.

Le a c'est le "spécificateur de flux". dans ce cas c'est l'audio que l'on veut

Le dernier 0 indique la piste audio que je souhaite. Ici j'en ai qu'une mais j'aurais pu avoir plusieurs langues. Exemple :

  • en indice 0 : la première langue (français)
  • en indice 1 : la deuxième langue (anglais)
  • en indice 2 : la troisième langue (italien)

Si je souhaite extraire l'italien j'écrirais -map 0:a:2. Le premier 0 correspond au flux audio de mon fichier d'entrée, le a le choix du flux, l'audio dans ce cas, le dernier chiffre 2 le troisième flux qui correspond à l'italien.

-map est très puissante et permet beaucoup de choses en manipulant plusieurs fichiers en entrée et lui faire divers extractions, traitements. le wiki de ffmpeg donne plus de détails.

sources d'inspiration :

Previous Post Next Post