Bhinish Dhiman

Couper une vidéo sans réencodage : où tombe vraiment la coupe

Traduit de l’original en anglais. Lire l’original

Une coupe par simple copie commence sur une image clé. Par pas de 0.1 seconde sur six fichiers, le début demandé a été atteint exactement dans 0.5% à 9.2% des cas ; l'écart moyen était de 4.06 s avec les réglages par défaut de x264, de 0.96 s avec une image clé toutes les 2 s et de 0.46 s toutes les 1 s. Les images en trop restent dans le fichier ; une liste d'édition les masque.

Tous les outils de coupe sans perte annoncent que la coupe se cale sur une image clé. Aucun ne dit de combien elle se décale, sur un fichier comme ceux que vous avez réellement. Nous l’avons mesuré sur six.

Deux notions

Une image clé est une image stockée en entier. Chaque image située entre deux images clés est stockée sous forme de différence par rapport à ses voisines : un décodeur qui commence ailleurs n’a donc rien sur quoi appliquer ces différences. Une coupe par copie déplace les paquets encodés dans un nouveau conteneur sans les décoder ; elle ne peut pas commencer au milieu d’une différence, si bien que le début réel de la copie est la dernière image clé située au point demandé ou avant.

La mesure

Nous avons généré cinq fichiers avec FFmpeg 6.0 et enregistré un sixième avec Chromium : un extrait de 60 secondes encodé avec les réglages par défaut de x264 à 30 fps (une image clé toutes les 250 images) ; le même extrait avec des images clés forcées toutes les 1 s et toutes les 2 s ; un diaporama de 42 secondes de quatorze photos, avec la détection de changement de scène de x264 activée ; ce diaporama en VP9 dans un WebM, avec un intervalle de 240 images ; et un enregistrement de 9 secondes de deux pages de ce site, tel que l’écrit Playwright. Pour chaque fichier, nous avons demandé à EncodedPacketSink.getKeyPacket() de mediabunny (l’appel qui fournit le chiffre qu’affiche notre outil de coupe) l’image clé précédant chaque point, de 0 jusqu’à la fin, par pas de 0.1 s, et nous avons relevé l’écart. Au total, 2 730 requêtes, le 1er octobre 2026.

Fichier Intervalle entre images clés Écart moyen Médiane 90e centile Maximum Exact Plus de 1 s
x264 par défaut, 30 fps 8.33 s 4.06 s 4.03 s 7.47 s 8.30 s 0.5% 86.5%
Image clé toutes les 1 s 1.00 s 0.46 s 0.50 s 0.90 s 1.00 s 9.2% 0%
Image clé toutes les 2 s 2.00 s 0.96 s 1.00 s 1.80 s 2.00 s 4.5% 49.0%
Diaporama, changement de scène toutes les 3 s 3.00 s 1.46 s 1.50 s 2.70 s 3.00 s 2.9% 65.7%
VP9 WebM, intervalle de 240 images 8.00 s 3.83 s 3.80 s 7.10 s 8.00 s 1.2% 85.2%
Enregistrement d’écran Chromium, VP8 5.12 s 2.29 s 2.28 s 4.30 s 5.10 s 1.1% 76.7%

L’écart moyen vaut la moitié de l’intervalle entre images clés, comme il se doit pour un point choisi au hasard de façon uniforme. Le chiffre à retenir est celui de la dernière colonne : sur un fichier aux réglages par défaut de x264, ce que produisent la plupart des exports sur ordinateur, plus de quatre coupes sur cinq commencent plus d’une seconde avant le point choisi.

Ce que contient le fichier, et ce qu’affiche un lecteur

Nous avons ensuite lancé la copie elle-même, avec la même configuration Conversion que l’outil, en demandant le passage de 10.0 s à 15.0 s du fichier aux réglages x264 par défaut. L’image clé la plus proche se trouvait à 8.333 s. Le fichier produit contenait 200 images, soit 6.67 secondes de vidéo, mais il portait aussi une liste d’édition, une instruction MP4 qui indique au lecteur où commence la présentation. FFmpeg en a décodé 150 images et indiqué 5.00 s. L’élément vidéo de Chromium a indiqué une durée de 5.000 s. Quand on lui demandait d’ignorer la liste d’édition, FFmpeg décodait les 200 images et indiquait 6.67 s.

La réponse à « où tombe la coupe » a donc deux volets. Les octets commencent à l’image clé : 1.67 s d’images que vous n’avez pas demandées se trouvent dans le fichier, et c’est pourquoi celui-ci est plus lourd que la part que vous avez gardée. La présentation, elle, commence là où vous l’avez demandé, dans tout lecteur qui respecte les listes d’édition, ce qui, dans notre test, incluait Chromium et FFmpeg. Un lecteur ou un logiciel de montage qui les ignore affiche les 1.67 s en trop et semble avoir coupé au mauvais endroit.

Face au réencodage

Copie seule Décodage puis réencodage
Point de départ Image clé ; présentation recadrée par la liste d’édition N’importe quelle image
Image Octets identiques Perte de génération, pire au second passage
Durée pour un extrait 1080p Limitée par la lecture du fichier Limitée par son encodage
Encodeur nécessaire Aucun Un encodeur vidéo fonctionnel
Images en trop dans le fichier Jusqu’à un intervalle entre images clés Aucune

Ce qui détermine le chiffre pour votre fichier

L’intervalle entre images clés est fixé par le logiciel qui a encodé le fichier. Les exports destinés au streaming sont généralement réglés sur une ou deux secondes, parce qu’un lecteur qui se positionne dans un flux subit exactement la même contrainte qu’un outil de coupe. La valeur par défaut de x264 est de 250 images, et les logiciels d’enregistrement d’écran utilisent souvent des intervalles encore plus longs, car un bureau immobile se compresse si bien que les images clés paraissent coûteuses. Après coup, un outil de coupe ne peut rien y faire, sinon mesurer et le dire : c’est pourquoi notre outil recherche l’image clé réelle correspondant au point que vous avez choisi et affiche l’écart avant que vous appuyiez sur le bouton.