Servicio de Conversión de Medios
Resumen del caso
Este es un servicio de conversión de medios basado en la nube que toma archivos de video y audio y los convierte en formato de streaming HLS con soporte de tasa de bits adaptable. 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.
Soporta múltiples resoluciones para 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 editor.
Objetivo: Construir un servicio totalmente automatizado que convierta cualquier archivo de video o audio a formato HLS sin intervención manual, trabajando 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 Streaming de Video, Servicios OTT y de Radiodifusión, Publicación Digital, Redes de Entrega de Contenido — cualquier negocio que necesite distribuir contenido de video o audio a usuarios finales en diferentes dispositivos y con condiciones variadas de red.
Servicios
Procesamiento de cola SQS con sondeo largo y gestión de tiempo de visibilidad, transcodificación y análisis de flujo de medios con FFmpeg y FFprobe, orquestación de trabajos en Kubernetes con volúmenes efímeros y afinidad de nodos, carga paralela en S3 con limpieza previa a la carga.
Soluciones
Video HLS multi-resolución — 1080p, 720p, 480p, 360p, 240p con tasa de bits adaptable, Audio HLS multi-tasa de bits — niveles de 32, 64, 96, 128, 192 kbps por pista de audio, detección automática de todas las pistas de audio con metadatos de idioma, miniaturas a los 2 segundos, vista previa en 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
Todo el proceso funciona sin intervención humana, desde el momento que un archivo llega a S3 hasta que la salida final en HLS está lista para reproducirse. Cada paso se cede limpiamente al siguiente, con mecanismos incorporados para fallos, duplicados y competencia por recursos. A continuación, cómo el sistema mueve un archivo a través del ciclo completo de conversión.
Sondeo de cola
El administrador de trabajos se ejecuta en Kubernetes y hace sondeo largo en la cola SQS. Cuando llega un mensaje, analiza el bucket y la clave del objeto de S3 para identificar el archivo fuente.
Prevención de duplicados
Antes de crear un trabajo nuevo, el administrador verifica si ya existe un trabajo de Kubernetes para el mismo archivo. Si lo encuentra, el mensaje se vuelve a encolar con retardo para evitar el doble procesamiento.
Creación de trabajo en Kubernetes
Se crea un nuevo pod a partir de una plantilla con límites de recursos correctos, afinidad de nodo para instancias basadas en ARM y volúmenes efímeros para archivos temporales, entrada, salida y logs.
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 en cinco niveles de tasa de bits — de 32 a 192 kbps.
Generación de lista maestra
Un único archivo maestro m3u8 referencia todas las resoluciones de video y pistas de audio con metadatos de idioma, permitiendo streaming adaptable y cambio de idioma en cualquier reproductor moderno.
Carga, limpieza y escalado automático
Todos los archivos se cargan en 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 los nodos a cero cuando la cola queda vacía.
Soluciones
Las características clave de la solución
Video con tasa de bits adaptable - 5 niveles —240p (300 kbps) → 1080p (5000 kbps) en una lista de reproducción. Selección automática de calidad basada en la velocidad de conexión.
Audio multipista con etiquetas de idioma — Detecta y convierte todas las pistas de audio, incluyendo comentarios y descripciones, mientras conserva los metadatos de idioma.
Detección automática de codec — Utiliza aceleración NVIDIA / Intel / AMD, o una alternativa por software si no hay GPU.
Autoscaling sin costo en reposo — Los nodos EC2 se reducen a cero cuando la cola está vacía. Los trabajos activos están protegidos contra la terminación prematura.
Aislamiento S3 para múltiples proyectos — Cada proyecto tiene su propia ruta de salida S3. Soporta estructuras de carpetas basadas tanto en el editor como en la serie.
Resultados en números
1080p
Cinco niveles de bitrate adaptativo desde 240p a 300 kbps hasta full HD 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 a S3 vía un grupo de hilos, manteniendo el tiempo de entrega al 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 los cambios de red dentro de un solo límite de segmento.
5x
Cada pista de audio — incluyendo comentarios y descripción — obtiene hasta cinco niveles de calidad desde 32 kbps (HE-AAC) hasta 192 kbps (LC-AAC) con normalización de volumen.