Universal Compressor
2026
Universal Compressor est une application desktop qui compresse vos fichiers en local : images, vidéos, audio et documents, sans rien envoyer vers internet.
Construit sur Electron avec FFmpeg, Sharp et Archiver, l'application s'assure qu'aucune donnée ne quitte votre ordinateur. La confidentialité et la performance avant tout.
Fonctionnalités
- Traitement hors-ligne : toutes les compressions sont effectuées en local, sans upload ni cloud
- Large support de formats : images, audio, vidéo et documents
- Dossier de sortie personnalisé : choisissez le répertoire de destination
- Glisser-déposer : déposez simplement des fichiers sur l'interface
- Compression par lot : compressez plusieurs fichiers en un seul clic
- Thème sombre / clair : basculez selon vos préférences
Technologies
Application desktop construite avec Electron, utilisant FFmpeg pour la vidéo/audio et Sharp pour le traitement d'images.
Electron
React
TypeScript
Vite
Tailwind CSS
FFmpeg
Sharp
Extrait de code
Cette fonction calcule le bitrate idéal pour atteindre la taille voulue après compression. Elle lit les métadonnées du fichier via ffprobe, puis ajuste les bitrates vidéo et audio proportionnellement.
electron/main.ts
69const calculateBitrate = async (70 filePath: string,71 percentage: number,72 isVideo: boolean = true73): Promise<{ vBitrate: number; aBitrate: number }> => {74 return new Promise((resolve) => {75 ffmpeg.ffprobe(filePath, (err, metadata) => {76 if (err || !metadata?.format) {77 const stat = fs.statSync(filePath);78 const originalBitrate = (stat.size * 8) / 10;79 resolve({80 vBitrate: originalBitrate * (percentage / 100) * 0.8,81 aBitrate: 64000,82 });83 return;84 }85 const duration = metadata.format.duration || 1;86 const size = metadata.format.size || fs.statSync(filePath).size;87 const originalBitrate = (size * 8) / duration;88 const targetBitrate = originalBitrate * (percentage / 100);89 resolve({90 vBitrate: targetBitrate * 0.8,91 aBitrate: targetBitrate * 0.2,92 });93 });94 });95};