Service de Convertisseur Média

Aperçu du cas

Il s'agit d'un service de conversion de médias basé sur le cloud qui prend les fichiers vidéo et audio et les transforme en format de streaming HLS avec prise en charge du débit binaire 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 segments .ts prêts pour tout lecteur vidéo moderne.


Il prend en charge plusieurs résolutions vidéo, plusieurs paliers de débit pour l'audio, et gère les vidéos avec plusieurs pistes audio — y compris différentes langues ou commentaires. Le service fonctionne pour plusieurs projets simultanément 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 en format HLS sans intervention manuelle - fonctionnant sur plusieurs projets, gérant divers types de contenu, et évoluant à zéro lors des périodes d'inactivité.

Image

Informations clés sur le projet

Secteurs

Secteurs

Médias et divertissement, plateformes de streaming vidéo, services OTT et diffusion, édition numérique, réseaux de diffusion de contenu — toute entreprise devant fournir du contenu vidéo ou audio aux utilisateurs finaux sur différents appareils et conditions réseau variables.

Services

Services

Traitement de file SQS avec interrogation longue et gestion du délai de visibilité, transcodage media FFmpeg & FFprobe et analyse de flux, orchestration des jobs Kubernetes avec volumes éphémères et affinité des nœuds, pipeline de téléchargement parallèle S3 avec nettoyage avant upload.

Solutions

Solutions

Vidéo HLS multi-résolution — 1080p, 720p, 480p, 360p, 240p avec débit adaptatif, audio HLS multi-débit — paliers de 32, 64, 96, 128, 192 kbps par piste audio, détection automatique de tous les flux 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, EC2 Auto Scaling, 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û tout organiser proprement et télécharger rapidement.

Multiples flux audio par fichier vidéo

Multiples flux audio par fichier vidéo

Certaines vidéos ont plusieurs pistes audio en différentes langues. Le système devait toutes les détecter automatiquement, convertir chacune séparément, et construire une playlist master référant chaque piste avec la bonne étiquette de langue.

Fiabilité de la file�et logique de réessai

Fiabilité de la file�et logique de réessai

Avec SQS, il faut gérer correctement les doublons, le délai de visibilité, et les jobs échoués. Si un job échoue, le message doit revenir dans la file pour réessai. Si un même fichier est mis en file deux fois, nous ne devons pas le traiter à nouveau.

Gestion sur Kubernetes

Gestion sur Kubernetes

Chaque job de conversion utilise beaucoup de CPU et de mémoire. Nous avons dû configurer des volumes éphémères, des règles d'affinité des nœuds, et un nettoyage approprié pour que les jobs ne s'accumulent pas ou ne se bloquent pas entre eux.

Isolation multi-projets sur S3

Isolation multi-projets sur S3

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

Sélection automatique des codecs

Sélection automatique des codecs

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

Le processus

Toute la chaîne s'exécute sans intervention humaine — du moment où un fichier arrive sur S3 jusqu'à ce que la sortie HLS finale soit prête à être lue. Chaque étape est proprement transmise à la suivante, avec des protections intégrées contre les échecs, doublons, et conflits de ressources. Voici comment le système fait passer un fichier à travers tout le cycle de conversion.

Interrogation de la file

Interrogation de la file

Le gestionnaire de jobs s'exécute sur Kubernetes et interroge la file SQS avec longue interrogation. Quand un message arrive, il analyse le bucket S3 et la clé de l'objet pour identifier le fichier source.

Prévention des doublons

Prévention des doublons

Avant de créer un nouveau job, le gestionnaire vérifie s'il existe déjà un job Kubernetes pour le même fichier. Si trouvé, le message est remis en file avec un délai pour éviter un double traitement.

Création de job Kubernetes

Création de job 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 et audio

Conversion vidéo et audio

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

Génération de la playlist master

Génération de la playlist master

Un seul fichier master m3u8 référence toutes les résolutions vidéo et pistes audio avec métadonnées de langue — permettant le streaming adaptatif et le changement de langue dans tout lecteur moderne.

Téléchargement, nettoyage et autoscaling

Téléchargement, nettoyage et autoscaling

Tous les fichiers sont téléchargés sur S3 en parallèle via un pool de 500 threads. Les anciens segments HLS sont nettoyés avant l'arrivée du nouvel ensemble. L'autoscaler met les nœuds à zéro une fois la file vidée.

Solutions

Les principales fonctionnalités de la solution

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

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

  • Détection automatique du codec — Utilise l'accélération NVIDIA / Intel / AMD, ou un repli logiciel en l'absence de GPU.

  • Mise à l'échelle automatique sans coût à l'inactivité — Les nœuds EC2 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 sur 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’à du HD complet 1080p à 5000 kbps — le lecteur change automatiquement la qualité en fonction de la vitesse de connexion.

Threads de téléchargement parallèles

500x

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

Durée segmentée HLS

4sec

Segments HLS de 4 secondes équilibrent la vitesse de commutation adaptative avec l'efficacité du tampon — le lecteur réagit aux changements réseau à l'intérieur d'une seule limite de segment.

Niveaux de débit audio par piste

5x

Chaque piste audio — y compris les commentaires et descriptions — bénéficie jusqu’à cinq niveaux de qualité de 32 kbps (HE-AAC) à 192 kbps (LC-AAC) avec normalisation du volume.

Construisez une chaîne de médias é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