Aller au contenu

Ffmpeg

Ffmpeg est un outil de manipulation de fichier audio et vidéo en ligne de commande.

Augmenter le volume d'une chanson ou d'un film

ffmpeg -i fichier-original.mkv -map 0 -scodec copy -vcodec copy -vol 1000 fichier-modifié.mkv

explications:

  • -map 0: permet de garder la structure des pistes audio

  • -scodec copy: permet de garder la structure des sous-titres si il y en a

  • -i: input (fichier original entrée)

  • -vcodec: choix du codec ici nous choisissons copy pour garder la qualité d'origine

  • -vol: volume de la piste audio voulu (tester avec 1000 c'est un bon début)

Ffmpeg réencoder une vidéo sans changer sa configuration (sous-titres ou audio)

L'exemple ici sera de réencoder un fichier vidéo du codec HEVC/H265 en H264:

ffmpeg -i inputfile -map 0 -acodec copy -scodec copy -vcodec libx264 output.mkv

Explications:

  • -i: fichier d'entrée (d'origine)

  • -map 0: permet de détecter les pistes audio présente dans le fichier d'entrée

  • -acodec: avec l'option copy permet de reprendre le codec audio d'origine

  • -scodec: avec l'option copy permet de reprendre les pistes de sous-titres d'origine

  • -vcodec: ici précisé libx264 ou H264 permet de préciser le codec vidéo qui sera utiliser

  • output.mkv est le nom du fichier en sortie, c'est à dire une fois réencoder

Compresser une vidéo sans trop perdre en qualité avec ffmpeg

Nous allons utiliser la commande ffmpeg comme suit:

ffmpeg -i fichier-entrée.mkv -map 0 -scodec copy -acodec copy -crf 17 fichier-sortie.mkv
  • -i: appeler le fichier d'entrée

  • -map0: garde la structure pistes audio

  • -scodec copy: garde la même structure et codec pour les sous-titres que l'original

  • -acodec copy: garde les même codecs audio que l'original

  • -crf (Constant Rate Factor): le facteur de compression

CRF (Constant Rate Factor):

Doit être compris entre 0 et 51; 0 représente: sans perte (lossless) et 51 le facteur le plus compressif. 23 est le facteur par défaut de compression Le choix 17-18 est intéressant, visuellement il est difficile de voir la différence par rapport au fichier orignal non compressé.

Plus d'infos sur le site officiel ffmpeg: https://trac.ffmpeg.org/wiki/Encode/H.264

Encoder en masse

On peut utiliser la boucle suivante:

for i in *.mkv; do ffmpeg -i "$i" "${i%.*}.mkv"; done

Inspiré du lien: https://stackoverflow.com/questions/5784661/how-do-you-convert-an-entire-directory-with-ffmpeg

Passer de 6 canaux audio à 2 canaux stéréo

Pour cela il suffit d'utiliser l'option -ac 2

exemple:

ffmpeg -i monfilm.mkv -map 0 -vcodec copy -scodec copy -ac 2 monfichier-modif.mkv

voir le site: [https://trac.ffmpeg.org/wiki/AudioChannelManipulation/ https://trac.ffmpeg.org/wiki/AudioChannelManipulation]

FLAC vers WAV

Rien de plus simple, il suffit de saisir la commande:

ffmpeg -i fichier-entrée.flac fichier-sortie.wav

Et voilà, c'est tout !

Passer une vidéo d'une échelle à l'autre (up/down scale)

Pour ça il suffit d'utiliser l'option -vf scale

ffmpeg -i input.mkv -vf scale=1920:1080 output.mkv

Voir le site officiel: [https://trac.ffmpeg.org/wiki/Scaling https://trac.ffmpeg.org/wiki/Scaling]

Changer le format des pixels

Il peut être utile de changer les 'pixels formats' dans le cas d'une conversion de H265 10bits à H264 8bits.

Pour cela il faudra utiliser l'argument: -pix_fmt yuv420p

ffmpeg -i Fichier-entrée.mkv -map 0 -scodec copy -vcodec h264 -pix_fmt yuv420p -acodec copy Fichier-sortie.mkv

Changer le bitrate vidéo ou audio

Pour cela on utilisera, pour le bitrate vidéo: -b:v et pour le bitrate audio: -b:a

fmpeg -i input.mp4 -b:v 1M -b:a 192k output.avi

Pour un film en H264, un bitrate de 3.5M (3500k)ou 4M (4000k) devrait être suffisant.

On peut préciser -maxrate 3500k dans le cas d'un bitrate constant.

Il ne faut pas utiliser l'option -vcodec copy

Changer le framerate FPS

Pour cela on utilisera l'option -filter:v fps=..

ffmpeg -i <input> -filter:v fps=30 <output>