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.

Image

Información clave del proyecto

Industrias

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

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

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

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

Muchos formatos de salidaa partir de una entrada

Muchos formatos de salidaa partir de una entrada

Un solo archivo de video puede producir cientos de archivos: cinco resoluciones de video, cinco tasas de bits de audio por pista de audio, además de miniaturas y vistas previas. Tuvimos que organizar todo eso de forma limpia y subirlo rápido.

Múltiples pistas de audio por archivo de video

Múltiples pistas de audio por archivo de video

Algunos videos tienen varias pistas de audio en diferentes idiomas. El sistema tenía que detectarlas todas automáticamente, convertir cada una por separado y crear una lista maestra que referencia cada pista con la etiqueta de idioma correcta.

Fiabilidad de la colay lógica de reintentos

Fiabilidad de la colay lógica de reintentos

Con SQS es necesario manejar adecuadamente los duplicados, los tiempos de visibilidad y los trabajos fallidos. Si un trabajo falla, el mensaje debe volver a la cola para reintento. Si el mismo archivo se encola dos veces, no deberíamos procesarlo nuevamente.

Gestión en Kubernetes

Gestión en Kubernetes

Cada trabajo de conversión usa mucha CPU y memoria. Tuvimos que configurar volúmenes efímeros, reglas de afinidad de nodo y una limpieza adecuada para que los trabajos no se acumulen ni se bloqueen entre sí.

Aislamiento multi-proyecto en S3

Aislamiento multi-proyecto en S3

El servicio funciona para varios proyectos simultáneamente. Cada uno necesita su propia ruta de salida en S3 y tuvimos que soportar estructuras de carpetas basadas en editor y en series sin romper nada.

Selección automática de codec

Selección automática de codec

No todas las máquinas tienen aceleración GPU. El sistema necesitaba detectar qué codecs están disponibles — NVIDIA, Intel Quick Sync, AMD o solo software — y seleccionar automáticamente el mejor.

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

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

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

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

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

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

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.


Image

Resultados en números

Cobertura de calidad de video

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.

Hilos de carga paralelos

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.

Duración segmentada de HLS

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.

Niveles de bitrate de audio por pista

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.

¡Cree una canalización de medios escalable para su plataforma!

Obtenga un sistema de conversión HLS totalmente automatizado que escala con su contenido, y le ayudaremos a encontrar la arquitectura óptima para su proyecto.

Message not sent.
Message not sent.
×
¿No está seguro de por dónde empezar? ¡Le ayudaremos a definir los próximos pasos!
Consentimiento para el procesamiento de datos personales
×
¿Tiene un desafío? Nuestro equipo lo convertirá en una solución.
Consentimiento para el procesamiento de datos personales