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.

Image

Información clave del proyecto

Industrias

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

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

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

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 salidade una sola entrada

Muchos formatos de salidade una sola 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 esto limpiamente y cargarlo rápidamente.

Múltiples pistas de audio por archivo de video

Múltiples pistas de audio por archivo de video

Algunos videos vienen con varias pistas de audio en diferentes idiomas. El sistema tuvo que detectarlas automáticamente, convertir cada una por separado y crear una lista de reproducción maestra que referencia cada pista con la etiqueta de idioma correcta.

Confiabilidad de la colay lógica de reintentos

Confiabilidad de la colay lógica de reintentos

Con SQS se necesitan manejar duplicados, tiempos de visibilidad y trabajos fallidos adecuadamente. Si un trabajo falla, el mensaje debe volver a la cola para reintento. Si el mismo archivo se encola dos veces, no debemos 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 limpieza adecuada para que los trabajos no se acumulen ni bloqueen entre sí.

Aislamiento de múltiples proyectos en S3

Aislamiento de múltiples proyectos en S3

El servicio se ejecuta para varios proyectos a la vez. Cada uno necesita su propia ruta de salida en S3, y tuvimos que soportar tanto estructuras de carpetas basadas en editor como en series sin romper nada.

Selección automática de códecs

Selección automática de códecs

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

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

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

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

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

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

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

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.


Image

Resultados en cifras

Cobertura de calidad de vídeo

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.

Hilos de carga paralelos

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.

Duración segmentada 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 cambios de red dentro de un solo límite de segmento.

Niveles de tasa de bits de audio por pista

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.

¡Construye una canalización multimedia escalable para tu plataforma!

Obtén un sistema de conversión HLS totalmente automatizado que escala con tu contenido - y te ayudaremos a encontrar la arquitectura óptima para tu 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