Aller au contenu

Comment fonctionne oCompress

Ce qui se passe quand vous déposez un fichier, comment vérifier que rien n’est envoyé, et ce que signifient vraiment les compressions sans perte et avec perte.

En bref

Quand vous ouvrez une page d’outil, votre navigateur télécharge la page et un petit programme, le compresseur. Quand vous ajoutez un fichier, le navigateur le lit, le compresseur le traite sur votre propre processeur, et le résultat vous est remis sous forme de téléchargement. À aucun moment le fichier n’est envoyé sur le réseau. Le processus complet se déroule ainsi :

  1. Chargement. La page et l’interface de l’outil se chargent en premier. Le moteur d’un type de fichier (images, vidéo et audio, ou documents) n’est récupéré que lorsque vous ajoutez un fichier correspondant : vous ne téléchargez donc jamais de code dont vous ne vous servez pas.
  2. Lecture. Votre navigateur donne à la page accès aux seuls fichiers que vous avez choisis, à rien d’autre sur votre appareil.
  3. Compression. Le travail s’exécute dans un Web Worker, un fil d’exécution en arrière-plan du navigateur : la page reste réactive et vous pouvez annuler à tout moment.
  4. Enregistrement. Le fichier compressé est créé en mémoire (les grosses vidéos dans le stockage privé du navigateur) et enregistré via le téléchargement habituel de votre navigateur, un par un ou dans un ZIP.

Ce qui s’exécute dans votre navigateur

Les navigateurs modernes savent exécuter du code compilé à une vitesse proche du natif grâce à WebAssembly, et ils donnent aux pages web accès aux encodeurs vidéo matériels de l’appareil via une interface appelée WebCodecs. oCompress utilise les deux :

  • Images : MozJPEG pour le JPEG, OxiPNG et un quantificateur de palette pour le PNG, l’encodeur WebP de la bibliothèque libwebp de Google, libavif pour l’AVIF, SVGO pour le SVG, ainsi que des décodeurs et encodeurs dédiés pour le GIF et le TIFF. Les codecs JPEG, PNG, WebP et AVIF sont compilés en WebAssembly.
  • Vidéo et audio : WebCodecs avec la bibliothèque Mediabunny pour lire et écrire des conteneurs comme le MP4 et le WebM. L’encodage utilise l’encodeur matériel de votre puce graphique lorsqu’il est disponible, c’est pourquoi il peut être rapide même dans un navigateur. Les fichiers MP3 sont écrits par l’encodeur LAME et les fichiers FLAC par libFLAC, tous deux compilés en WebAssembly et chargés uniquement en cas de besoin.
  • Documents : notre propre code, bâti sur des bibliothèques PDF et ZIP open source, ouvre les PDF et les fichiers Office, recompresse les images qu’ils contiennent avec les codecs d’image et écrit un nouveau fichier.

Toutes les bibliothèques que nous fournissons sont open source : la plupart sous des licences permissives comme MIT, BSD et Apache 2.0, Mediabunny sous MPL 2.0, et l’encodeur MP3 LAME sous LGPL, sous forme de fichier séparé et remplaçable. Consultez la liste des bibliothèques avec leurs versions et licences.

Comment vérifier que rien n’est envoyé

Inutile de nous croire sur parole. Deux tests simples :

  • Passez hors ligne. Ouvrez une page d’outil, compressez un fichier pour que le moteur soit chargé, puis coupez le Wi-Fi ou les données mobiles et compressez un autre fichier du même type. Cela fonctionne, car rien n’a besoin du réseau.
  • Observez le réseau. Dans Chrome, Edge ou Firefox, appuyez sur F12, ouvrez l’onglet Réseau et compressez un fichier. Vous verrez le code du compresseur se charger depuis notre site, ainsi que des requêtes de mesure d’audience et de publicité, mais aucune requête transportant votre fichier. Une photo de 10 Mo apparaîtrait comme un envoi de 10 Mo ; il n’y en a aucun.

La page envoie bien des événements d’utilisation anonymes à Google Analytics, du type « un JPG de quelques mégaoctets a été compressé ». Ces événements contiennent l’outil, le type de fichier ainsi que la taille, le gain et la durée de traitement sous forme de fourchettes approximatives, jamais le nom du fichier ni son contenu.

La compression sans perte : même contenu, moins d’octets

La compression sans perte repère la redondance, ce qui est stocké plusieurs fois ou peut être prédit, et l’écrit de façon plus compacte. Le décodage inverse exactement le processus. Trois idées se retrouvent dans presque tous les formats sans perte :

  • La prédiction. Les pixels voisins d’une image ou les échantillons consécutifs d’un audio sont généralement proches. Stocker la petite différence avec une prédiction au lieu de la valeur complète laisse des nombres le plus souvent proches de zéro. Les filtres PNG et le prédicteur linéaire du FLAC fonctionnent ainsi.
  • La répétition. Les séquences répétées sont remplacées par une courte référence à la copie précédente. C’est la partie LZ77 de DEFLATE, utilisée dans le ZIP, le PNG et les fichiers Office.
  • Le codage entropique. Les valeurs fréquentes reçoivent des codes courts et les valeurs rares des codes longs (codage de Huffman ou arithmétique).

La compression sans perte a une limite naturelle : un bruit aléatoire ne peut pas être prédit, si bien qu’une photo granuleuse ou un enregistrement bruité ne diminue jamais beaucoup sans perte. C’est aussi pourquoi compresser un fichier déjà compressé, comme un JPEG dans un ZIP, ne fait presque rien gagner.

La compression avec perte : supprimer ce qui ne vous manquera pas

Les codecs avec perte vont plus loin en éliminant des informations que l’œil et l’oreille humains perçoivent à peine. Le JPEG et le WebP stockent la couleur à une résolution plus faible que la luminosité et arrondissent les détails fins à haute fréquence. Le MP3, l’AAC et l’Opus suppriment les sons masqués par des sons plus forts. Les codecs vidéo comme le H.264 stockent de temps en temps une image complète et, entre deux, surtout les mouvements et les changements.

Le réglage de qualité ou de débit détermine la quantité d’informations éliminées. Avec des réglages modérés, la perte est très difficile à remarquer ; si l’on pousse trop loin, des artefacts typiques apparaissent : blocs et halos dans les images, son métallique ou comme sous l’eau dans l’audio, traînées dans les scènes vidéo rapides.

Ce que les outils garantissent, et ce qu’ils ne garantissent pas

  • Vous n’obtenez jamais un fichier plus lourd. Si le résultat n’est pas plus petit, l’outil vous rend l’original et vous indique qu’il est déjà optimal.
  • Les documents et les fichiers audio donnent des octets identiques pour un même fichier avec les mêmes réglages ; les encodeurs vidéo matériels peuvent différer de quelques octets d’un passage à l’autre.
  • Le texte des documents reste du texte ; les pages ne sont jamais transformées en images.
  • Les métadonnées d’image comme la position GPS sont supprimées par défaut, tandis que le profil colorimétrique et la rotation sont conservés. Les métadonnées vidéo comme le lieu, l’appareil et les dates sont elles aussi supprimées par défaut ; l’audio conserve ses tags et sa pochette, sauf si vous désactivez cette option.

Ce que nous ne pouvons pas promettre, c’est un pourcentage précis. Le gain dépend entièrement de la façon dont le fichier a été créé : une photo de téléphone ou un PDF scanné a généralement beaucoup de marge, un fichier déjà optimisé en a peu. L’outil affiche la taille exacte avant et après pour chaque fichier.

Les limites de la compression dans un navigateur

Un onglet de navigateur est un environnement isolé à la mémoire limitée, ce qui fixe les limites de ce qui est faisable. L’outil accepte les images jusqu’à 200 Mo et 100 mégapixels, les fichiers PDF et Office jusqu’à 300 Mo, et la vidéo et l’audio jusqu’à 4 Go sur ordinateur (1 Go sur téléphone), même si les longues vidéos 4K peuvent malgré tout ne pas tenir dans la mémoire d’un onglet. La vitesse dépend de votre matériel : lors de nos tests sur un PC Windows rapide sous Chrome, une minute de vidéo 1080p a pris environ 20 secondes et une photo de 24 mégapixels environ 2,5 secondes ; les téléphones peuvent être bien plus lents. La vidéo et la plupart des conversions audio nécessitent WebCodecs, que fournissent les versions actuelles de Chrome, Edge et Opera, Firefox 130+ et Safari 26+ ; le WAV et l’AIFF peuvent devenir du MP3, du FLAC ou du WAV même sans lui.

Quelques formats n’ont aucun décodeur dans les navigateurs, comme le WMA, l’AVI et le WMV, et les anciens fichiers Office binaires ne peuvent pas être réécrits sans risque. Pour ceux-là, l’outil explique les options plutôt que de produire un fichier potentiellement endommagé. Quand une tâche est trop lourde pour un navigateur, un logiciel de bureau comme HandBrake pour la vidéo ou LibreOffice pour les documents est la recommandation honnête.