Servicio Convertidor de Medios
Resumen del caso
Este es un servicio de conversión de medios en la nube que toma archivos de video y audio y los convierte en formato de transmisión HLS con soporte de tasa de bits adaptativa. El sistema escucha una cola SQS para nuevos archivos, lanza un trabajo de Kubernetes para cada uno y produce un conjunto completo de listas de reproducción m3u8 y segmentos .ts listos para cualquier reproductor de video moderno.
Admite múltiples resoluciones de video, múltiples niveles de tasa de bits para audio y maneja videos con varias pistas de audio, incluyendo diferentes idiomas o comentarios. El servicio funciona para múltiples proyectos simultáneamente y organiza las salidas en carpetas separadas en S3 según el proyecto o el editor.
Objetivo: Construir un servicio totalmente automatizado que convierta cualquier archivo de video o audio a formato HLS sin intervención manual, funcionando en múltiples proyectos, manejando diversos tipos de contenido y escalando a cero cuando está inactivo.
Información clave del proyecto
Industrias
Medios y Entretenimiento, Plataformas de transmisión de video, OTT y servicios de radiodifusión, Publicación digital, Redes de entrega de contenido: cualquier negocio que necesite entregar contenido de video o audio a usuarios finales a través de diferentes dispositivos y condiciones variables de red.
Servicios
Procesamiento de cola SQS con sondeo prolongado y gestión de tiempo de visibilidad, transcodificación de medios y análisis de flujo con FFmpeg y FFprobe, orquestación de trabajos Kubernetes con volúmenes efímeros y afinidad de nodo, canal de carga paralela en S3 con limpieza previa a la carga.
Soluciones
Video HLS multiresolución: 1080p, 720p, 480p, 360p, 240p con tasa de bits adaptativa, audio HLS multitasas: niveles de 32, 64, 96, 128, 192 kbps por pista de audio, detección automática de todas las transmisiones de audio con metadatos de idioma, miniaturas en la marca de 2 segundos, vista previa MP4 de baja resolución, copias en MP3 y WAV.
Tecnologías
AWS SQS, S3, Kubernetes, FFmpeg, FFprobe, H.264, AAC/HE-AAC, HLS/m3u8, NVIDIA NVENC, Intel Quick Sync, EC2 Auto Scaling, Docker, Helm
Los desafíos
El proceso
Toda la cadena de procesos se ejecuta sin intervención humana — desde el momento en que un archivo llega a S3 hasta que la salida final HLS está lista para reproducción. Cada paso se transfiere limpiamente al siguiente, con salvaguardas incorporadas para fallos, duplicados y competencia por recursos. A continuación se muestra cómo el sistema mueve un archivo a través del ciclo completo de conversión.
Sondeo de la cola
El gestor de trabajos se ejecuta en Kubernetes y realiza sondeo prolongado en la cola SQS. Cuando llega un mensaje, analiza el bucket S3 y la clave del objeto para identificar el archivo fuente.
Prevención de duplicados
Antes de crear un nuevo trabajo, el gestor verifica si ya existe un trabajo en Kubernetes para el mismo archivo. Si lo encuentra, el mensaje se vuelve a encolar con retraso para evitar doble procesamiento.
Creación de trabajos en Kubernetes
Se crea un nuevo pod a partir de una plantilla con los límites de recursos correctos, afinidad de nodo para instancias basadas en ARM y volúmenes efímeros para archivos temporales, entrada, salida y registros.
Conversión de video y audio
FFmpeg convierte el video en cinco resoluciones HLS (1080p→240p) con segmentos de 4 segundos. Cada pista de audio se detecta y convierte a cinco niveles de tasa de bits — de 32 a 192 kbps.
Generación de lista de reproducción maestra
Un único archivo maestro m3u8 referencia todas las resoluciones de video y pistas de audio con metadatos de idioma, permitiendo transmisión adaptativa y cambio de idioma en cualquier reproductor moderno.
Carga, limpieza y autoescalado
Todos los archivos se cargan a S3 en paralelo mediante un grupo de 500 hilos. Los segmentos HLS antiguos se limpian antes de que llegue el nuevo conjunto. El autoescalador reduce nodos a cero una vez que la cola se vacía.
Soluciones
Las características clave de la solución
Video de tasa de bits adaptativa - 5 niveles —240p (300 kbps) → 1080p (5000 kbps) en una lista de reproducción. Selección automática de calidad según la velocidad de conexión.
Audio multicanal con etiquetas de idioma — Detecta y convierte todas las pistas de audio, incluyendo comentarios y descripciones, mientras preserva los metadatos del idioma.
Detección automática de códecs — Utiliza aceleración NVIDIA / Intel / AMD, o una alternativa por software si no hay GPU.
Escalado automático sin coste de inactividad — Los nodos EC2 se reducen a cero cuando la cola está vacía. Los trabajos activos están protegidos contra terminaciones prematuras.
Aislamiento de S3 para múltiples proyectos — Cada proyecto tiene su propia ruta de salida en S3. Soporta estructuras de carpetas basadas en editor y en series.
Resultados en cifras
1080p
Cinco niveles de tasa de bits adaptativa desde 240p a 300 kbps hasta HD completo 1080p a 5000 kbps — el reproductor cambia la calidad automáticamente según la velocidad de conexión.
500x
Cientos de archivos de salida — segmentos, listas de reproducción, miniaturas, vistas previas — se cargan simultáneamente en S3 a través de un pool de hilos, manteniendo el tiempo de entrega mínimo.
4seg
Segmentos HLS de 4 segundos equilibran la velocidad de cambio adaptativo con la eficiencia del almacenamiento en búfer — el reproductor reacciona a cambios de red dentro de un solo límite de segmento.
5x
Cada pista de audio — incluyendo comentarios y descripciones — obtiene hasta cinco niveles de calidad desde 32 kbps (HE-AAC) hasta 192 kbps (LC-AAC) con normalización de volumen.