ZiaConvert
PubliéOutils · Convertisseur vidéo, audio et image
Un convertisseur qui assume de ne rien convertir lui-même : tout le travail revient à des outils éprouvés, et la valeur ajoutée est dans l'orchestration — router, mesurer, annuler proprement, ne jamais mentir sur ce qui va se passer.
- Stack
- C#
- stars
- 0
- Push
- il y a 17 jours
- Topics
- 0
Impact
Le remux sans réencodage transforme une conversion de plusieurs minutes en quelques secondes quand le conteneur cible accepte les codecs source. Les décisions coûteuses — accélération matérielle disponible, taille finale attendue, durée d'un agrandissement — sont mesurées sur la machine au lieu d'être devinées.
Highlights
- Copie de flux sans réencodage dès que le conteneur cible accepte les codecs source, avec détection automatique et repli explicite
- Accélération matérielle détectée par un vrai encodage de test au démarrage, et non en lisant la liste des encodeurs compilés dans FFmpeg — cette liste annonce souvent des encodeurs que le matériel ne sait pas exécuter
- Estimation de taille finale par échantillon réellement encodé plutôt que par formule
- File de conversions au parallélisme borné par famille de format, avec annulation individuelle ou globale et aucun fichier de sortie partiel
- Développement RAW via libraw sur dix formats de boîtier, et agrandissement par IA qui reconstruit du détail au lieu d'étirer les pixels
- Un seul contrat, IConversionEngine : ajouter un moteur ne demande aucune modification ailleurs dans l'application
Le parti pris
Réécrire un encodeur vidéo serait absurde : FFmpeg fait ça mieux que quiconque depuis vingt ans. ZiaConvert se place au-dessus et prend en charge ce que ces outils ne font pas — décider quelle route emprunter, suivre la progression, annuler sans laisser de déchets, et paralléliser sans saturer la machine.
Ce choix se paie : l'application dépend de binaires externes et hérite de leur licence. Elle est distribuée en GPL v3 parce qu'elle embarque un FFmpeg compilé avec libx264 et libx265.
Mesurer plutôt que deviner
- Accélération matérielleNVENC, QuickSync et AMF sont validés par un encodage de test réel, parce que FFmpeg annonce des encodeurs que le matériel ne sait pas forcément exécuter
- Taille finaleestimée sur un échantillon encodé : exacte pour un remux, extrapolée pour un réencodage à qualité constante
- Durée d'un agrandissement IAcalibrée par une mesure sur la machine, pas par une constante
- Vérification post-conversionla durée de sortie est recomparée à la source, et un écart anormal est signalé sans jamais transformer une conversion réussie en échec
Échouer clairement plutôt que basculer en silence
Le mode strict --remux-only refuse de réencoder si le remux est impossible, au lieu de partir sur un réencodage complet sans prévenir. C'est ce qui permet de ré-emballer un rip DVD en MPEG-2/AC3 avec la certitude de n'avoir touché ni à l'image ni au son.
Ce que ça sait faire
- Changement de cadence en deux modes distincts : duplication d'images (instantanée, sans fluidité réelle) ou interpolation par analyse de mouvement
- GIF animé avec palette calculée sur le contenu, en une seule passe
- Découpe, extraction audio, normalisation de volume EBU R128
- Choix de piste audio et sous-titres par index, pour garder la bonne langue sur un rip multipiste
- Sous-titres externes intégrés à un mkv sans réencoder l'image ni le son
- Préréglages fournis et personnalisés qui remplissent les champs au lieu de les masquer
Architecture
src/
├── ZiaConvert.Core/ modèles, routage, file d'attente — aucune dépendance à un moteur
├── ZiaConvert.Engines/ FFmpeg, ImageMagick, Real-ESRGAN
├── ZiaConvert.App/ interface Avalonia
└── ZiaConvert.Cli/ ligne de commande
public interface IConversionEngine
{
string Name { get; }
EngineAvailability CheckAvailability();
bool CanHandle(ConversionRequest request);
IAsyncEnumerable<ConversionProgress> ExecuteAsync(
ConversionRequest request, CancellationToken cancellationToken = default);
}Distribution
- Installateur Windows classique, avec raccourcis, désinstalleur et ajout optionnel de zia au PATH
- Mise à jour automatique : l'application interroge la dernière release GitHub au démarrage et s'installe en un clic
- Exécutables signés quand un certificat est présent, sans jamais le versionnerle build reste possible sans, simplement non signé
- Tests d'intégration qui pilotent réellement FFmpeg, pas un bouchon
Stack
- C# 12
- .NET 10
- Avalonia
- FFmpeg
- ImageMagick
- Real-ESRGAN
- libraw
- Inno Setup
Updated on 2026-08-02