Commandes FFmpeg utilisées

Compétences élémentaires

# 0.  Choisir le bureau comme espace de travail.
#
#     ... afin de retrouver facilement les fichiers.
#     * sous macOS et Linux:

cd ~/Desktop

#     * sous Windows:

cd Desktop

#     Générer les fichiers de travail.


# 1.  L'ensemble de Mandelbrot est une fractale qui permet de détecter aisément
#     des erreurs de codage. Ceci nous donne le fichier vidéo d'exercice.
#
#     Il est essentiel de respecter scrupuleusement la syntaxe! Le nom du
#     paramètre est précédé par un tiret (-) et sa valeur est séparée par un
#     espace.
#
#     Paramètres:
#     -lafvi    choisir en entrée la fonction Mandelbrot incluse dans FFmpeg
#     -t        durée en secondes (on peut aussi utiliser un timecode)
#     -c:v      choisir le codec video rawvideo, c'est-à-dire de la vidéo non
#               compressée en 8 bit
#     -pix_fmt  choisir l'encodage YUV 4:2:2 des pixels [Y'CBCR 4:2:2 est la
#               désignation correcte]
#               chemin, nom et extension du fichier de sortie (noter qu'il n'y
#               a pas de -o)

ffmpeg -lavfi mandelbrot -t 10 -c:v rawvideo -pix_fmt uyvy422 mandelbrot.avi

#     Visualiser le fichier.

ffplay mandelbrot.avi


# 2.  La note la nous donne le fichier audio d'exercice.
#
#     Paramètres:
#     -lafvi  choisir en entrée la fonction sinusoïdale include dans FFmpeg
#     -t      durée en secondes (on peut aussi utiliser un timecode)
#             chemin, nom et extension du fichier de sortie (pas de -o)

ffmpeg -lavfi aevalsrc="sin(440*2*PI*t)" -t 10 la.wav

#     Écouter le fichier.

ffplay la.wav


# 3.  Joindre les fichiers image et son générés.
#
#     Paramèters:
#     -i  chemin, nom et extension du premier fichier d'entrée
#     -i  chemin, nom et extension du deuxième fichier d'entrée
#         chemin, nom et extension du fichier de sortie (pas de -o)

ffmpeg -i mandelbrot.avi -i la.wav mandela.avi mandela.avi

#     Visualiser le fichier.

ffplay mandela.avi


# 4.  Extraire des fichiers leurs métadonnées techniques.
#
#     Paramèters:
#     -show_format   extraire du fichier les métadonnées du conteneur
#     -show_streams  extraire du fichier les métadonnées de chaque codec
#     -print_format  choisir le format de sortie

ffprobe mandela.avi

ffprobe -show_format mandela.avi

ffprobe -show_streams mandela.avi

ffprobe -show_format -show_streams mandela.avi

ffprobe -show_format -show_streams -print_format flat mandela.avi

ffprobe -show_format -show_streams -print_format json mandela.avi

ffprobe -show_format -show_streams -print_format xml mandela.avi

#     Cf. avpres.net/FFmpeg/probe_json


# 5.  Modifier le conteneur
#
#     Paramèters:
#     -c  dans cet exemple nous choisissons de copier («copy») le codec

ffmpeg -i mandelbrot.avi -c copy mandelbrot.mov


# 6.  Calculer l'empreinte numérique de chaque image du fichier vidéo
#
#     Paramètres:
#     -f  calculer l'empreinte numérique MD5 à l'aider de la fonction framemd5

ffmpeg -i mandelbrot.avi -f framemd5 mandelbrot_avi_framesmd5.txt

ffmpeg -i mandelbrot.mov -f framemd5 mandelbrot_mov_framesmd5.txt

#     Vérifier que les deux empreintes numériques soient bien identiques:
#     * sous macOS et Linux:

diff mandelbrot_avi_framesmd5.txt mandelbrot_mov_framesmd5.txt

#     * sous Windows:

fc mandelbrot_avi_framesmd5.txt mandelbrot_mov_framesmd5.txt


# 7.  Visualiser des fichiers image (DPX, TIFF, etc.)
#
#     L'expression régulière %06d décrit des chiffres (d = digit) de longueur 6,
#     précédés, si nécessaire, par des 0. Ceci permet de traiter en ordre
#     croissant de nombreux fichiers fichiers contenus dans un dossier.
#     L'expression régulière doit évidemment correspondre au schéma de nommage.

ffplay DUFAY_TIFF/Dufay_%06d.tif

#     Cf. avpres.net/FFmpeg/play_sq

Compétences générales

#     NOTE: La barre oblique inversée (\) est utilisée pour indiquer que la
#     commande continue à la ligne suivante. Les commandes complexes sont
#     données sur plusieurs lignes, afin qu'elles soient plus lisibles.


# 8.  Générer un fichier mezzanine au format ProRes 422 HQ à partir du master de
#     conservation au format TIFF.
#
#     Paramètres:
#     -f          forcer l'utilisation de image2 pour une meilleure qualité de
#                 l'image
#     -framerate  fixer la cadence à 24 images par seconde
#                 NOTE: Les deux paramètres précédents doivent précéder le
#                 fichier d'entrée, puisqu'ils sont appliqués à cette entrée
#     -i          chemin, nom et extension of the input file
#                 L'expression régulière %06d décrite ci-dessus.
#     -c:v        choisir le codec vidéo ProRes
#     -profile:v  le profil vidéo 3 de ProRes correspond à 422 HQ
#     -filter:v   filtrer le flux vidéo:
#                 * mettre à l'échelle
#                   Nous préférons utiliser l'algorithme de Lanczos, qui est
#                   plus lent, mais donne un meilleur résultat, plutôt que
#                   l'algorithme bilinéaire par défaut.
#                 * insérer le format 4:3 dans le format 16:9, en ajoutant
#                   latéralement des bandes noires (pillar-box)

ffmpeg \
    -f image2 \
    -framerate 24 \
    -i DUFAY_TIFF/Dufay_%06d.tif \
    -c:v prores_ks \
    -profile:v 3 \
    -filter:v "scale=1440:1080:flags=lanczos, pad=1920:1080:240:0" \
    Dufay_ProRes.mov

#     Cf. avpres.net/FFmpeg/sq_ProRes


# 9.  Créer un fichier d'accès H.264 à partir du master de conservation en TIFF
#
#     Paramètres:
#     -c:v     choisir le codec vidéo H.264, en utilisant la librairie libx264
#     -preset  choisir le configuration veryslow, afin que la qualité soit
#              meilleure
#     -qp      un paramètre de quantisation de 18 donne une compression non
#              détectable à l'oeil nu («visually lossless»)

ffmpeg \
    -f image2 \
    -framerate 24 \
    -i DUFAY_TIFF/Dufay_%06d.tif \
    -c:v libx264 \
    -preset veryslow \
    -qp 18 \
    -filter:v "scale=1440:1080:flags=lanczos, pad=1920:1080:240:0" \
    -pix_fmt yuv420p \
    Dufay_H264_1.mp4

#     Cf. avpres.net/FFmpeg/sq_H264


# 10. Créer un fichier d'accès H.264 à partir du fichier mezzanine en
#     ProRes 422 HQ
#
#     -an  empêche la creation d'une piste sonore vide («audio no»)

ffmpeg \
    -i Dufay_ProRes.mov \
    -c:v libx264 \
    -preset veryslow \
    -qp 18 \
    -pix_fmt yuv420p \
    -an \
    Dufay_H264_2.mp4

#     Cf. avpres.net/FFmpeg/im_H264

Compétences étendues

# 11. Fichier de différence (fichier delta)
#
#     utiliser divers filtres, appliqués à différentes entrées («complex
#     filter»):
#     * le fichiers d'entrée sont numérotés à partir de zéro
#     * les différents filtres sont séparés par des points-virgules
#     * les éléments d'un même filtre sont séparés par des virgules
#     * les noms des entrées et sorties de filtre sont mis entre parenthèses
#       carrées

ffmpeg \
    -i Dufay_H264_1.mp4 \
    -i Dufay_H264_2.mp4 \
    -filter_complex \
        "[1]format=yuva444p, \
            lut=c3=128, \
            negate[1_with_alpha_channel]; \
        [0][1_with_alpha_channel]overlay" \
    Dufay_H264_delta.mp4

#     Cf. avpres.net/FFmpeg/delta


# 12. Écran divisé («split screen»)

ffmpeg \
    -i Dufay_H264_1.mp4 \
    -i Dufay_H264_2.mp4 \
    -filter_complex \
        "[0]crop=iw/2:ih:0:0, \
            pad=iw*2:ih*1[left]; \
        [1]crop=iw/2:ih:iw/2:0[right]; \
        [left][right]overlay=w" \
    Dufay_H264_split.mp4

#     Cf. avpres.net/FFmpeg/split

Exercices

Compétences élémentaires

  • créer un fichier d'accès H.264 à partir du fichier mezzanine Dufay_ProRes.mov, en utilisant le paramètre -qp 40
  • créer un fichier d'accès H.264 à partir du fichier mezzanine Dufay_ProRes.mov, en utilisant -crf 18 (= constant rate factor) au lieu de -qp 18 (= quantisation parameter)
  • créer un fichier d'accès H.264 à partir du fichier mezzanine Dufay_ProRes.mov, en utilisant le paramètre -crf 40

Compétences générales

  • réaliser des écrans divisés des fichiers d'accès H.264 avec:
    • -qp 18 et -qp 40
    • -crf 18 et -crf 40
    • -qp 23 et -crf 23
  • réaliser des fichiers de différence des fichiers d'accès H.264 avec:
    • -qp 18 et -qp 40
    • -crf 18 et -crf 40
    • -qp 23 et -crf 23

Compétences étendues

  • réaliser un écran divisé horizontalement
  • ajouter une fine ligne noire entre les deux parties d'un écran divisé
  • réaliser un écran divisé comportant 4 parties disposées en 2 x 2 avec les fichiers d'accès H.264 avec -qp 23, -crf 23, -qp 18 et -crf 18. Que peut-on conclure?

2019-07-14