Servizio di Conversione Media

Panoramica del caso

Questo è un servizio di conversione media basato sul cloud che prende file video e audio e li trasforma in formato di streaming HLS con supporto per bitrate adattivo. Il sistema ascolta una coda SQS per nuovi file, avvia un lavoro Kubernetes per ciascuno e produce un set completo di playlist m3u8 e segmenti .ts pronti per qualsiasi lettore video moderno.


Supporta più risoluzioni per video, più livelli di bitrate per audio e gestisce video con più tracce audio — incluse lingue diverse o commenti. Il servizio funziona contemporaneamente per più progetti e organizza le uscite in cartelle separate su S3 basate sul progetto o sull'editore.

Obiettivo: Costruire un servizio completamente automatizzato che converte qualsiasi file video o audio in formato HLS senza intervento manuale - operando su più progetti, gestendo diversi tipi di contenuto e scalando a zero quando inattivo.

Image

Informazioni chiave sul progetto

Settori

Settori

Media e Intrattenimento, Piattaforme di Streaming Video, Servizi OTT e Broadcasting, Editoria Digitale, Content Delivery Network — qualsiasi attività che necessita di fornire contenuti video o audio agli utenti finali su diversi dispositivi e condizioni di rete variabili.

Servizi

Servizi

Elaborazione della coda SQS con long polling e gestione del timeout di visibilità, transcodifica media e analisi dei flussi con FFmpeg & FFprobe, orchestrazione dei lavori Kubernetes con volumi effimeri e affinità dei nodi, pipeline di caricamento parallelo su S3 con pulizia pre-caricamento.

Soluzioni

Soluzioni

Video HLS multi-risoluzione — 1080p, 720p, 480p, 360p, 240p con bitrate adattivo, Audio HLS multi-bitrate — livelli da 32, 64, 96, 128, 192 kbps per traccia audio, Rilevamento automatico di tutti i flussi audio con metadati linguistici, Miniature a 2 secondi, anteprima MP4 a bassa risoluzione, copie MP3 e WAV.

Tecnologie

Tecnologie

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

Le sfide

Molti formati di output da un singolo input

Molti formati di output da un singolo input

Un singolo file video può produrre centinaia di file — cinque risoluzioni video, cinque bitrate audio per traccia audio, più miniature e anteprime. Dovevamo organizzare tutto ciò in modo ordinato e caricarlo rapidamente.

Più flussi audio per file video

Più flussi audio per file video

Alcuni video hanno più tracce audio in lingue diverse. Il sistema doveva rilevarle tutte automaticamente, convertirle separatamente e creare una playlist master che fa riferimento a ogni traccia con il tag linguistico corretto.

Affidabilità della coda e logica di ritentativo

Affidabilità della coda e logica di ritentativo

Con SQS bisogna gestire duplicati, timeout di visibilità e lavori falliti correttamente. Se un lavoro fallisce, il messaggio deve tornare nella coda per il ritentativo. Se lo stesso file viene messo in coda due volte, non dobbiamo elaborarlo di nuovo.

Gestione su Kubernetes

Gestione su Kubernetes

Ogni lavoro di conversione usa molta CPU e memoria. Dovevamo configurare volumi effimeri, regole di affinità dei nodi e una corretta pulizia affinché i lavori non si accumulassero o bloccassero tra loro.

Isolamento multi-progetto su S3

Isolamento multi-progetto su S3

Il servizio funziona per diversi progetti contemporaneamente. Ognuno ha bisogno del proprio percorso di output su S3, e dovevamo supportare sia strutture di cartelle basate su editori sia su serie senza rompere nulla.

Selezione automatica del codec

Selezione automatica del codec

Non tutte le macchine hanno accelerazione GPU. Il sistema doveva rilevare quali codec sono disponibili — NVIDIA, Intel Quick Sync, AMD o solo software — e scegliere automaticamente il migliore.

Il processo

L'intera pipeline funziona senza intervento umano — dal momento in cui un file arriva su S3 fino all'output HLS finale pronto per la riproduzione. Ogni passaggio passa pulitamente al successivo, con salvaguardie integrate per errori, duplicati e competizione per le risorse. Di seguito è illustrato come il sistema muove un file attraverso il ciclo completo di conversione.

Polling della coda

Polling della coda

Il gestore di lavori gira su Kubernetes e interroga la coda SQS con long polling. Quando arriva un messaggio, analizza il bucket S3 e la chiave dell'oggetto per identificare il file sorgente.

Prevenzione duplicati

Prevenzione duplicati

Prima di creare un nuovo lavoro, il gestore controlla se esiste già un lavoro Kubernetes per lo stesso file. Se trovato, il messaggio viene rimesso in coda con un ritardo per evitare doppi processamenti.

Creazione lavoro Kubernetes

Creazione lavoro Kubernetes

Viene creato un nuovo pod da un modello con limiti di risorse corretti, affinità dei nodi per istanze basate su ARM e volumi effimeri per file temporanei, input, output e log.

Conversione video e audio

Conversione video e audio

FFmpeg converte il video in cinque risoluzioni HLS (1080p→240p) con segmenti da 4 secondi. Ogni traccia audio viene rilevata e convertita in cinque livelli di bitrate — da 32 a 192 kbps.

Generazione della playlist master

Generazione della playlist master

Un singolo file m3u8 master fa riferimento a tutte le risoluzioni video e tracce audio con metadati linguistici — permettendo streaming adattivo e cambio lingua in qualsiasi lettore moderno.

Caricamento, pulizia e autoscaling

Caricamento, pulizia e autoscaling

Tutti i file vengono caricati su S3 in parallelo tramite un pool di 500 thread. I vecchi segmenti HLS vengono puliti prima che arrivi il nuovo set. L'autoscaler riduce i nodi a zero una volta che la coda si svuota.

Soluzioni

Le caratteristiche chiave della soluzione

  • Video a Bitrate Adattivo - 5 Livelli —240p (300 kbps) → 1080p (5000 kbps) in una singola playlist. Selezione automatica della qualità basata sulla velocità di connessione.

  • Audio Multi-Traccia con Tag Linguistici — Rileva e converte tutte le tracce audio, inclusi commenti e descrizioni, preservando i metadati linguistici.

  • Rilevamento Automatico del Codec — Utilizza l'accelerazione NVIDIA / Intel / AMD, oppure un fallback software se non c'è una GPU.

  • Autoscaling a costo zero quando inattivo — I nodi EC2 si riducono a zero quando la coda è vuota. I lavori attivi sono protetti da un'interruzione prematura.

  • Isolamento multi-progetto S3 — Ogni progetto ha il proprio percorso di output S3. Supporta sia le strutture di cartelle basate sul publisher che sulla serie.


Image

Risultati in numeri

Copertura qualità video

1080p

Cinque livelli di bitrate adattivo da 240p a 300 kbps fino a Full HD 1080p a 5000 kbps — il player cambia qualità automaticamente in base alla velocità di connessione.

Thread di caricamento parallelo

500x

Centinaia di file di output — segmenti, playlist, miniature, anteprime — vengono caricati su S3 simultaneamente tramite un pool di thread, mantenendo i tempi di consegna minimi.

Durata segmentata HLS

4sec

I segmenti HLS di 4 secondi bilanciano velocità di cambio adattativo ed efficienza del buffering — il player reagisce ai cambiamenti di rete entro il confine di un singolo segmento.

Livelli di bitrate audio per traccia

5x

Ogni traccia audio — inclusi commento e descrizione — può avere fino a cinque livelli di qualità da 32 kbps (HE-AAC) a 192 kbps (LC-AAC) con normalizzazione del volume.

Costruisci una pipeline media scalabile per la tua piattaforma!

Ottieni un sistema di conversione HLS completamente automatizzato che scala con i tuoi contenuti - e ti aiuteremo a trovare l'architettura ottimale per il tuo progetto.

Message not sent.
Message not sent.
×
Non sai da dove cominciare? Ti aiuteremo a definire i prossimi passi!
Consenso al trattamento dei dati personali
×
Hai una sfida? Il nostro team la trasformerà in una soluzione.
Consenso al trattamento dei dati personali