This website is released under |
Commandes FFmpeg utiliséesCompé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
ExercicesCompétences élémentaires
Compétences générales
Compétences étendues
2019-07-14 |