Aucun upload, 100 % local, sans compte

Article

Extraire des images vidéo pour des miniatures et des planches contact

Une vidéo est une suite d'images fixes. En extraire une donne une miniature, une couverture ou une planche contact. Le résultat est plus net et plus prévisible quand on comprend comment un codec vidéo stocke ses images et quels moments valent la peine d'être capturés.

Images et fréquence d'images

Un fichier vidéo est une séquence d'images fixes affichées suffisamment vite pour créer l'illusion du mouvement. Le nombre d'images par seconde est la fréquence d'images, exprimée en fps. Les valeurs courantes sont 24 fps pour le cinéma, 25 fps pour la diffusion PAL, 30 fps pour la vidéo web et 60 fps pour les enregistrements de jeux vidéo. À 24 fps, un film de deux heures contient environ 172 800 images individuelles. Chaque image correspond à un instant précis ; en extraire une fige cet instant sous forme d'image autonome. La fréquence d'images détermine aussi le nombre d'images obtenues par seconde lors d'une extraction en lot : à 30 fps, extraire chaque image d'une minute de vidéo donne 1 800 fichiers, ce qui est souvent bien plus que nécessaire. Extraire à une fréquence d'images plus basse, ou une image sur N avec les outils qui le permettent, est une façon pratique de réduire ce volume tout en couvrant la durée complète.

Une bande de chronologie montrant 24 images individuelles par seconde de footage, avec le numéro d'image et l'horodatage visibles sous chaque image.

Keyframes et images interpolées

Les codecs vidéo modernes ne stockent pas chaque image comme une image complète. Ils utilisent trois types d'images pour économiser de l'espace. Un I-frame, aussi appelé keyframe, est une image complète et autonome. Un P-frame ne stocke que les pixels qui ont changé depuis le dernier I-frame ou P-frame. Un B-frame stocke les changements par rapport à une image précédente et une image future, ce qui nécessite des images de chaque côté pour le reconstruire. Un P-frame ou un B-frame étant incomplet seul, le décoder requiert les images de référence environnantes. Si ces images contiennent du flou de mouvement ou une transition, l'image reconstruite hérite de ce flou. Un I-frame, en revanche, se décode indépendamment. Il est toujours net car il n'emprunte rien aux images voisines. Lors de l'extraction d'une image pour l'utiliser comme miniature, tomber sur un I-frame donne le résultat le plus propre possible. La plupart des codecs placent les I-frames aux coupes de scène, qui sont des points de départ naturellement nets.

Choisir le bon moment

Même un I-frame bien décodé peut donner une mauvaise miniature si le moment capturé est peu flatteur. Plusieurs facteurs réduisent la qualité. Le flou de mouvement apparaît quand la caméra ou le sujet bougent rapidement pendant l'exposition de l'image ; le tracé résultant rend l'image floue même si le décodage était propre. Les images de transition capturées en plein fondu enchaîné ou en fondu contiennent deux images superposées et fonctionnent rarement comme images autonomes. Les images sous-exposées ou surexposées, fréquentes au début d'une scène avant que l'exposition automatique se stabilise, perdent des détails dans les ombres ou les hautes lumières. Les meilleures miniatures viennent de moments d'action ou d'expression claire, d'un bon éclairage et d'une caméra stable. Faire défiler la vidéo avec un lecteur affichant les horodatages exacts permet d'identifier ces moments avant de les extraire. Une image qui rend bien en pause dans un lecteur rendra généralement bien en export.

Un lecteur vidéo en pause sur une image stable et bien éclairée d'un sujet en pleine action, avec un horodatage affiché dans le coin.

Export : résolution, format et extraction par intervalle

Lors de l'extraction d'une image, le fichier exporté doit correspondre à la résolution native de la vidéo. Agrandir introduit des artefacts d'interpolation ; réduire supprime des pixels qui pourraient être utiles. Une vidéo 1080p produit des images de 1920x1080 pixels, une vidéo 4K des images de 3840x2160. Pour le format, PNG préserve chaque pixel exactement et est le bon choix quand on a besoin d'une netteté maximale pour l'édition ou un agrandissement ultérieur. JPEG est plus léger et convient pour la prévisualisation ou le partage, mais il introduit des artefacts de compression autour des bords nets. Pour une planche contact, une grille de petites images représentatives couvrant toute la durée, extraire à une fréquence d'images fixe plutôt que de prélever chaque image est l'approche standard : demander 1 image par seconde depuis une source à 30 fps donne une image par seconde de vidéo, et une fréquence plus élevée comme 5 ou 10 fps donne un ensemble plus dense pour un examen rapproché. La fréquence exacte dépend du niveau de détail voulu par rapport au nombre d'images à gérer.

Faire ça en local avec video-extract-frames

L'outil video-extract-frames de Sunasty décode votre vidéo entièrement dans le navigateur en utilisant FFmpeg compilé en WebAssembly. On dépose un fichier, on choisit une fréquence d'extraction de 1 à 30 images par seconde, on sélectionne PNG ou JPEG, et l'outil décode les images à cette fréquence dans la mémoire du navigateur puis les propose en téléchargements individuels, plafonnés à 300 images par exécution. Le fichier vidéo ne quitte jamais l'appareil. Aucun octet n'est envoyé à un serveur à aucun moment du processus. C'est important pour les enregistrements contenant du contenu personnel ou sensible : un enregistrement familial, une interview ou des rushes bruts avant montage. Le navigateur charge la vidéo dans un système de fichiers virtuel en RAM, lance le décodage FFmpeg et retourne les images. La contrepartie est que le décodage est effectué en logiciel par le processeur plutôt que par un matériel dédié, donc une longue vidéo en haute résolution prend plus de temps qu'une application native. Pour extraire quelques images ou produire une planche contact depuis un court extrait, la vitesse est tout à fait pratique.

Outils mentionnés dans cet article

Questions fréquentes

Pourquoi mon image extraite est-elle floue ?

La cause la plus fréquente est d'avoir capturé un P-frame ou un B-frame lors d'un moment de mouvement. Ces images stockent des différences plutôt que des images complètes, et le flou de mouvement dans la source se retrouve dans le décodage. Essayez d'extraire le I-frame le plus proche, qui correspond à une coupe de scène ou à un keyframe périodique, pour un résultat plus net.

Faut-il exporter les images en PNG ou en JPEG ?

PNG si vous prévoyez de modifier l'image, de l'agrandir ou de l'utiliser dans un contexte où les artefacts de compression seraient visibles. JPEG si vous avez besoin d'un fichier plus léger pour un partage rapide ou une prévisualisation et que la légère perte de qualité est acceptable. Pour des miniatures affichées à une petite taille fixe, JPEG avec un réglage de qualité raisonnable convient généralement.

Comment faire une planche contact depuis une vidéo ?

Choisissez une fréquence d'extraction assez basse pour obtenir un nombre gérable d'images fixes, plutôt qu'un horodatage unique. Pour un extrait de deux minutes, 1 image par seconde donne environ 120 images, ce qui est assez dense pour en tirer une bonne grille ; la sortie est de toute façon plafonnée à 300 images par exécution. Il n'existe pas aujourd'hui de fréquence plus basse que 1 fps, donc pour une planche plus clairsemée, extrayez à 1 fps et ne gardez que les images voulues pour la grille finale.