Service de Conversion Médias

Présentation du cas

Ceci est un service de conversion des médias basé sur le cloud qui transforme des fichiers vidéo et audio au format de streaming HLS avec prise en charge du débit adaptatif. Le système écoute une file SQS pour les nouveaux fichiers, lance un job Kubernetes pour chacun, et produit un ensemble complet de playlists m3u8 et de segments .ts prêts pour tout lecteur vidéo moderne.


Il supporte plusieurs résolutions vidéo, plusieurs niveaux de débit audio, et gère les vidéos avec plusieurs pistes audio — y compris différentes langues ou commentaires. Le service fonctionne simultanément pour plusieurs projets et organise les sorties dans des dossiers séparés sur S3 selon le projet ou l'éditeur.

Objectif : Construire un service entièrement automatisé qui convertit tout fichier vidéo ou audio au format HLS sans intervention manuelle - fonctionnant sur plusieurs projets, gérant divers types de contenu, et s’adaptant à zéro en période d’inactivité.

Image

Informations clés sur le projet

Secteurs

Secteurs

Médias & Divertissement, Plateformes de Streaming Vidéo, Services OTT & Diffusion, Édition numérique, Réseaux de distribution de contenu — toute entreprise qui doit livrer du contenu vidéo ou audio aux utilisateurs finaux sur différents appareils et dans des conditions réseau variables.

Services

Services

Traitement de la file SQS avec scrutation longue et gestion du délai de visibilité, transcodage et analyse de flux média avec FFmpeg & FFprobe, orchestration des tâches Kubernetes avec volumes éphémères et affinité de nœud, pipeline d’upload parallèle sur S3 avec nettoyage préalable.

Solutions

Solutions

Vidéo HLS multi-résolution — 1080p, 720p, 480p, 360p, 240p avec débit adaptatif, Audio HLS multi-débits — niveaux 32, 64, 96, 128, 192 kbps par piste audio, Détection automatique de toutes les pistes audio avec métadonnées de langue, Vignettes à 2 secondes, aperçu MP4 basse résolution, copies MP3 et WAV.

Technologies

Technologies

AWS SQS, S3, Kubernetes, FFmpeg, FFprobe, H.264, AAC/HE-AAC, HLS/m3u8, NVIDIA NVENC, Intel Quick Sync, Auto Scaling EC2, Docker, Helm

Les défis

De nombreux formats de sortie�à partir d’une seule entrée

De nombreux formats de sortie�à partir d’une seule entrée

Un seul fichier vidéo peut produire des centaines de fichiers — cinq résolutions vidéo, cinq débits audio par piste audio, plus des vignettes et aperçus. Nous avons dû organiser tout cela proprement et le télécharger rapidement.

Multiples pistes audio par fichier vidéo

Multiples pistes audio par fichier vidéo

Certaines vidéos possèdent plusieurs pistes audio en différentes langues. Le système devait toutes les détecter automatiquement, convertir chacune séparément et créer une playlist principale référencant chaque piste avec la bonne balise de langue.

Fiabilité de la file d'attente�et logique de nouvelle tentative

Fiabilité de la file d'attente�et logique de nouvelle tentative

Avec SQS il faut gérer correctement les doublons, les délais de visibilité et les tâches échouées. Si une tâche échoue, le message doit revenir dans la file pour une nouvelle tentative. Si le même fichier est mis en file deux fois, nous ne devons pas le traiter deux fois.

Gestion sur Kubernetes

Gestion sur Kubernetes

Chaque tâche de conversion utilise beaucoup de CPU et de mémoire. Nous avons dû configurer des volumes éphémères, des règles d’affinité de nœuds, et un nettoyage adéquat pour que les tâches ne s’entassent pas ni se bloquent entre elles.

Isolation multi-projet sur S3

Isolation multi-projet sur S3

Le service fonctionne pour plusieurs projets en même temps. Chacun nécessite son propre chemin de sortie sur S3, et nous avons dû supporter à la fois des structures de dossiers basées sur l’éditeur et sur la série sans rien casser.

Sélection automatique du codec

Sélection automatique du codec

Toutes les machines ne disposent pas d’accélération GPU. Le système devait détecter quels codecs étaient disponibles — NVIDIA, Intel Quick Sync, AMD, ou simplement logiciel — et choisir automatiquement le meilleur.

Le process

Toute la chaîne s’exécute sans intervention humaine — depuis le moment où un fichier arrive sur S3 jusqu’à la sortie finale HLS prête à la lecture. Chaque étape transmet proprement à la suivante, avec des protections intégrées pour les échecs, les doublons et la contention des ressources. Voici comment le système fait passer un fichier à travers tout le cycle de conversion.

Inspection de la file

Inspection de la file

Le gestionnaire de tâches s’exécute sur Kubernetes et scrute la file SQS avec scrutation longue. Lorsqu’un message arrive, il analyse le bucket S3 et la clé d’objet pour identifier le fichier source.

Prévention des doublons

Prévention des doublons

Avant de créer une nouvelle tâche, le gestionnaire vérifie si une tâche Kubernetes existe déjà pour le même fichier. Si oui, le message est remis en file avec un délai pour éviter un double traitement.

Création de tâche Kubernetes

Création de tâche Kubernetes

Un nouveau pod est créé à partir d’un modèle avec les bonnes limites de ressources, affinité de nœud pour instances ARM, et volumes éphémères pour fichiers temporaires, entrée, sortie, et logs.

Conversion vidéo & audio

Conversion vidéo & audio

FFmpeg convertit la vidéo en cinq résolutions HLS (1080p→240p) avec segments de 4 secondes. Chaque piste audio est détectée et convertie en cinq niveaux de débit — de 32 à 192 kbps.

Génération de la playlist principale

Génération de la playlist principale

Un seul fichier maître m3u8 référence toutes les résolutions vidéo et pistes audio avec métadonnées de langue — permettant la diffusion adaptative et le changement de langue dans tout lecteur moderne.

Téléversement, nettoyage & autoscaling

Téléversement, nettoyage & autoscaling

Tous les fichiers sont téléversés sur S3 en parallèle via un pool de 500 threads. Les anciens segments HLS sont nettoyés avant que le nouveau jeu arrive. L'autoscaler réduit les nœuds à zéro lorsque la file est vide.

Solutions

Les fonctionnalités clés de la solution

  • Vidéo à débit adaptatif - 5 niveaux —240p (300 kbps) → 1080p (5000 kbps) dans une seule playlist. Sélection automatique de la qualité basée sur la vitesse de connexion.

  • Audio multi-pistes avec balises de langue — Détecte et convertit toutes les pistes audio, y compris les commentaires et les descriptions, tout en conservant les métadonnées linguistiques.

  • Détection automatique du codec — Utilise l'accélération NVIDIA / Intel / AMD, ou une solution logicielle de secours si aucun GPU n'est disponible.

  • Autoscaling avec coût à l'inactivité zéro — Les nœuds EC2 se réduisent à zéro lorsque la file d'attente est vide. Les tâches actives sont protégées contre une terminaison prématurée.

  • Isolation S3 multi-projet — Chaque projet a son propre chemin de sortie S3. Prend en charge les structures de dossiers basées à la fois sur l'éditeur et la série.


Image

Résultats en chiffres

Couverture de la qualité vidéo

1080p

Cinq niveaux de débit binaire adaptatif de 240p à 300 kbps jusqu'à Full HD 1080p à 5000 kbps — le lecteur change automatiquement la qualité en fonction de la vitesse de connexion.

Fils de téléchargement parallèles

500x

Des centaines de fichiers de sortie — segments, listes de lecture, vignettes, aperçus — sont téléchargés simultanément vers S3 via un pool de threads, minimisant le temps de livraison.

Durée segmentée HLS

4sec

Des segments HLS de 4 secondes équilibrent la vitesse de commutation adaptative avec l'efficacité du tampon — le lecteur réagit aux changements du réseau dans la limite d'un seul segment.

Niveaux de débit audio par piste

5x

Chaque piste audio — y compris les commentaires et la description — bénéficie de jusqu'à cinq niveaux de qualité allant de 32 kbps (HE-AAC) à 192 kbps (LC-AAC) avec normalisation de la sonie.

Construisez une chaîne média évolutive pour votre plateforme !

Obtenez un système de conversion HLS entièrement automatisé qui évolue avec votre contenu - et nous vous aiderons à trouver l'architecture optimale pour votre projet.

Message not sent.
Message not sent.
×
Vous ne savez pas par où commencer ? Nous vous aiderons à définir les prochaines étapes !
Consentement au traitement des données personnelles
×
Vous avez un défi ? Notre équipe le transformera en solution.
Consentement au traitement des données personnelles