Service de conversion multimédia

Présentation du cas

C'est un service de conversion multimédia basé sur le cloud qui prend des fichiers vidéo et audio et les convertit au format de streaming HLS avec prise en charge du débit binaire adaptatif. Le système écoute une file d'attente SQS pour les nouveaux fichiers, lance un travail Kubernetes pour chacun d'eux, et produit un ensemble complet de playlists m3u8 et de segments .ts prêts pour tout lecteur vidéo moderne.


Il prend en charge plusieurs résolutions pour la vidéo, plusieurs niveaux de débit binaire pour l’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 en fonction du projet ou de l'éditeur.

Objectif : Construire un service entièrement automatisé qui convertit n'importe quel fichier vidéo ou audio en format HLS sans intervention manuelle - fonctionnant sur plusieurs projets, gérant divers types de contenu et s'adaptant à zéro lorsqu'il est inactif.

Image

Informations clés du projet

Secteurs

Secteurs

Médias et divertissement, plateformes de streaming vidéo, services OTT et de 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 variées.

Services

Services

Traitement de file d'attente SQS avec requête longue et gestion du délai de visibilité, transcodage multimédia FFmpeg & FFprobe et analyse de flux, orchestration de jobs Kubernetes avec volumes éphémères et affinité de nœud, pipeline de chargement parallèle S3 avec nettoyage avant chargement.

Solutions

Solutions

Vidéo HLS multi-résolution — 1080p, 720p, 480p, 360p, 240p avec débit binaire adaptatif, audio HLS multi-débits — niveaux 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 sortie8 partir d'une seule entrée

De nombreux formats de sortie8 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 des aperçus. Nous avons dû tout organiser proprement et télécharger rapidement.

Flux audio multiples par fichier vidéo

Flux audio multiples par fichier vidéo

Certaines vidéos comportent 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 maître qui référence chaque piste avec la bonne étiquette de langue.

Fiabilité de la file d'attente8 et logique de nouvelle tentative

Fiabilité de la file d'attente8 et logique de nouvelle tentative

Avec SQS, vous devez gérer correctement les doublons, les délais d'invisibilité et les jobs échoués. Si un job échoue, le message doit revenir dans la file d'attente pour nouvelle tentative. Si le même fichier est mis deux fois en file d'attente, on ne doit pas le traiter à nouveau.

Gestion sur Kubernetes

Gestion sur Kubernetes

Chaque travail 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œud et un nettoyage approprié pour que les jobs ne s'accumulent pas ou ne se bloquent pas mutuellement.

Isolation multi-projets sur S3

Isolation multi-projets sur S3

Le service fonctionne pour plusieurs projets à la fois. Chacun a besoin de 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 codec8

Sélection automatique du codec8

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

Le processus

L'ensemble du pipeline fonctionne 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 transférée à la suivante, avec des sécurités intégrées contre les erreurs, les doublons et les conflits de ressources. Voici comment le système fait passer un fichier à travers tout le cycle de conversion.

Interrogation de la file d'attente

Interrogation de la file d'attente

Le gestionnaire de jobs fonctionne sur Kubernetes et interroge la file d'attente SQS avec requête 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 un nouveau job, le gestionnaire vérifie s'il existe déjà un job Kubernetes pour le même fichier. Si c'est le cas, le message est remis en file avec un délai pour éviter un double traitement.

Création du job Kubernetes

Création du job Kubernetes

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

Conversion vidéo & audio

Conversion vidéo & 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 niveaux de débit — de 32 à 192 kbps.

Génération de la playlist maître

Génération de la playlist maître

Un seul fichier maître m3u8 référence toutes les résolutions vidéo et pistes audio avec les métadonnées de langue — permettant le streaming adaptatif 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 vers S3 en parallèle via un pool de 500 threads. Les anciens segments HLS sont nettoyés avant que le nouveau lot n'arrive. L'autoscaler réduit le nombre de nœuds à zéro une fois la file vide.

Solutions

Les caractéristiques clés de la solution

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

  • Audio multi-pistes 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 une solution logicielle de secours en l'absence de GPU.

  • Autoscaling sans coût d'inactivité — 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 Multi-Projet S3 — 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'au Full HD 1080p à 5000 kbps — le lecteur ajuste automatiquement la qualité en fonction de la vitesse de connexion.

Threads de téléversement parallèles

500x

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

Durée segmentée HLS

4sec

Les segments HLS de 4 secondes équilibrent la rapidité de commutation adaptative avec l'efficacité de mise en mémoire tampon — le lecteur réagit aux changements réseau dans la limite d'un segment unique.

Niveaux de débit audio par piste

5x

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

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