Serviço de Conversão de Media
Visão geral do caso
Este é um serviço de conversão de media baseado na cloud que converte ficheiros de vídeo e áudio para o formato de streaming HLS com suporte a bitrate adaptativo. O sistema monitora uma fila SQS para novos ficheiros, lança um trabalho Kubernetes para cada um e produz um conjunto completo de playlists m3u8 e segmentos .ts prontos para qualquer leitor de vídeo moderno.
Suporta múltiplas resoluções para vídeo, vários níveis de bitrate para áudio, e lida com vídeos com várias faixas de áudio — incluindo diferentes idiomas ou comentários. O serviço funciona para vários projetos simultaneamente e organiza as saídas em pastas separadas no S3 baseadas no projeto ou editor.
Objetivo: Construir um serviço totalmente automatizado que converte qualquer ficheiro de vídeo ou áudio para o formato HLS sem intervenção manual - operando em múltiplos projetos, lidando com diversos tipos de conteúdo e escalando para zero quando inativo.
Informações chave do projeto
Indústrias
Media e Entretenimento, Plataformas de Streaming de Vídeo, Serviços OTT e de Radiodifusão, Publicação Digital, Redes de Distribuição de Conteúdo — qualquer negócio que precise entregar conteúdo de vídeo ou áudio a utilizadores finais em diferentes dispositivos e em variadas condições de rede.
Serviços
Processamento de fila SQS com polling longo e gestão de timeout de visibilidade, transcodificação media e análise de stream com FFmpeg & FFprobe, orquestração de trabalhos Kubernetes com volumes efémeros e afinidade de nós, pipeline de upload paralelo para S3 com limpeza pré-upload.
Soluções
Vídeo HLS multi-resolução — 1080p, 720p, 480p, 360p, 240p com bitrate adaptativo, áudio HLS multi-bitrate — níveis de 32, 64, 96, 128, 192 kbps por faixa de áudio, deteção automática de todas as streams de áudio com metadados de idioma, thumbnails ao segundo 2, pré-visualização MP4 em baixa resolução, cópias MP3 e WAV.
Tecnologias
AWS SQS, S3, Kubernetes, FFmpeg, FFprobe, H.264, AAC/HE-AAC, HLS/m3u8, NVIDIA NVENC, Intel Quick Sync, EC2 Auto Scaling, Docker, Helm
Os desafios
O processo
Todo o pipeline funciona sem intervenção humana — desde o momento que um ficheiro chega ao S3 até à saída final HLS estar pronta para reprodução. Cada etapa passa perfeitamente para a seguinte, com salvaguardas incorporadas contra falhas, duplicados e contenção de recursos. Abaixo está como o sistema movimenta um ficheiro através do ciclo completo de conversão.
Polling da fila
O gestor de trabalhos corre no Kubernetes e faz polling da fila SQS com polling longo. Quando chega uma mensagem, analisa o bucket S3 e a chave do objeto para identificar o ficheiro fonte.
Prevenção de duplicados
Antes de criar um novo trabalho, o gestor verifica se já existe um trabalho Kubernetes para o mesmo ficheiro. Caso exista, a mensagem é re-enfileirada com atraso para prevenir processamento duplo.
Criação de trabalho Kubernetes
Um novo pod é criado a partir de um template com os limites de recursos corretos, afinidade de nós para instâncias baseadas em ARM e volumes efémeros para ficheiros temporários, input, output, e logs.
Conversão de vídeo e áudio
O FFmpeg converte o vídeo em cinco resoluções HLS (1080p→240p) com segmentos de 4 segundos. Cada faixa de áudio é detetada e convertida em cinco níveis de bitrate — de 32 a 192 kbps.
Geração de playlist mestre
Um único ficheiro mestre m3u8 referencia todas as resoluções de vídeo e faixas de áudio com metadados de idioma — possibilitando streaming adaptativo e troca de idioma em qualquer leitor moderno.
Upload, limpeza e autoscaling
Todos os ficheiros são enviados para o S3 em paralelo via um pool de 500 threads. Segmentos HLS antigos são limpos antes de chegar o novo conjunto. O autoscaler reduz os nós a zero quando a fila fica vazia.
Soluções
As principais funcionalidades da solução
Vídeo com Bitrate Adaptativo - 5 níveis —240p (300 kbps) → 1080p (5000 kbps) numa playlist. Seleção de qualidade automática baseada na velocidade de ligação.
Áudio Multi-faixa com Etiquetas de Idioma — Deteta e converte todas as faixas de áudio, incluindo comentários e descrições, mantendo os metadados de idioma.
Deteção automática de Codec — Utiliza aceleração NVIDIA / Intel / AMD, ou fallback por software se não houver GPU.
Autoescala com custo zero em repouso — Os nós EC2 diminuem até zero quando a fila está vazia. Os trabalhos ativos estão protegidos contra terminação prematura.
Isolamento Multi-Projeto S3 — Cada projeto tem seu próprio caminho de saída S3. Suporta estruturas de pastas baseadas tanto em publicador como em séries.
Resultados em números
1080p
Cinco níveis de bitrate adaptativo de 240p a 300 kbps até full HD 1080p a 5000 kbps — o reprodutor altera a qualidade automaticamente com base na velocidade da conexão.
500x
Centenas de ficheiros de saída — segmentos, playlists, thumbnails, pré-visualizações — são enviados para o S3 simultaneamente através de um pool de threads, mantendo o tempo de entrega mínimo.
4sec
Segmentos HLS de 4 segundos equilibram a velocidade de alteração adaptativa com a eficiência do buffering — o reprodutor reage às mudanças de rede dentro de um único limite de segmento.
5x
Cada faixa de áudio — incluindo comentário e descrição — tem até cinco níveis de qualidade de 32 kbps (HE-AAC) a 192 kbps (LC-AAC) com normalização de volume.