Servizio Convertitore Media
Panoramica del caso
Questo è un servizio di conversione media basato su cloud che prende file video e audio e li trasforma in formato streaming HLS con supporto per bitrate adattivo. Il sistema monitora una coda SQS per nuovi file, avvia un job Kubernetes per ognuno, e produce un set completo di playlist m3u8 e segmenti .ts pronti per qualsiasi player video moderno.
Supporta più risoluzioni per i video, più livelli di bitrate per l'audio e gestisce video con tracce audio multiple — comprese diverse lingue o commenti. Il servizio funziona per più progetti simultaneamente e organizza gli output 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 tipi di contenuto diversi, e scalando a zero quando inattivo.
Informazioni chiave del progetto
Settori
Media & Intrattenimento, Piattaforme di streaming video, Servizi OTT e broadcasting, Pubblicazione digitale, Reti di distribuzione contenuti — qualsiasi attività che necessita di fornire contenuti video o audio agli utenti finali su diversi dispositivi e varie condizioni di rete.
Servizi
Elaborazione della coda SQS con long polling e gestione del timeout di visibilità, transcodifica media e analisi streaming con FFmpeg & FFprobe, orchestrazione di job Kubernetes con volumi effimeri e affinità nodi, pipeline di caricamento parallelo su S3 con pulizia pre-caricamento.
Soluzioni
Video HLS multi-risoluzione — 1080p, 720p, 480p, 360p, 240p con bitrate adattivo, Audio HLS multi-bitrate — livelli 32, 64, 96, 128, 192 kbps per ogni traccia audio, Rilevamento automatico di tutti i flussi audio con metadati linguistici, Thumbnails al secondo 2, anteprima MP4 a bassa risoluzione, copie MP3 e WAV.
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
Il processo
L'intera pipeline funziona senza intervento umano — dal momento in cui un file arriva su S3 fino a quando l'output HLS finale è pronto per la riproduzione. Ogni fase passa ordinatamente alla successiva, con salvaguardie integrate per guasti, duplicati e concorrenza delle risorse. Di seguito come il sistema muove un file attraverso l'intero ciclo di conversione.
Interrogazione coda
Il gestore dei job 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
Prima di creare un nuovo job, il gestore verifica l'esistenza di un job Kubernetes per lo stesso file. Se trovato, il messaggio viene rimesso in coda con un ritardo per evitare doppie elaborazioni.
Creazione job Kubernetes
Viene creato un nuovo pod da un modello con limiti di risorse corretti, affinità nodi per istanze ARM e volumi effimeri per file temporanei, input, output e log.
Conversione video e audio
FFmpeg converte video in cinque risoluzioni HLS (1080p→240p) con segmenti da 4 secondi. Ogni traccia audio è rilevata e convertita in cinque livelli di bitrate — da 32 a 192 kbps.
Generazione 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 player moderno.
Caricamento, pulizia e autoscaling
Tutti i file sono caricati su S3 in parallelo tramite un pool di 500 thread. I vecchi segmenti HLS sono puliti prima che arrivi il nuovo set. L'autoscaler riduce i nodi a zero quando la coda è vuota.
Soluzioni
Caratteristiche principali della soluzione
Video con bitrate adattivo - 5 livelli —240p (300 kbps) → 1080p (5000 kbps) in un'unica 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 della lingua.
Rilevamento codec automatico — Utilizza l’accelerazione NVIDIA / Intel / AMD, o fallback software se non è presente una GPU.
Autoscaling a costo zero in inattività — I nodi EC2 si riducono a zero quando la coda è vuota. I lavori attivi sono protetti da terminazioni premature.
Isolamento S3 multi-progetto — Ogni progetto ha il proprio percorso di output S3. Supporta strutture di cartelle basate sia sull’editore che sulla serie.
Risultati in numeri
1080p
Cinque livelli di bitrate adattivo da 240p a 300 kbps fino al full HD 1080p a 5000 kbps — il player cambia qualità automaticamente in base alla velocità di connessione.
500x
Centinaia di file di output — segmenti, playlist, miniature, anteprime — vengono caricati su S3 simultaneamente tramite un pool di thread, mantenendo il tempo di consegna minimo.
4sec
I segmenti HLS di 4 secondi bilanciano la velocità di commutazione adattiva con l’efficienza del buffering — il player reagisce ai cambiamenti della rete all’interno di un singolo segmento.
5x
Ogni traccia audio — inclusi commenti e descrizioni — dispone di fino a cinque livelli di qualità da 32 kbps (HE-AAC) a 192 kbps (LC-AAC) con normalizzazione della loudness.