Serviço de Conversão de Media
Visão geral do caso
Este é um serviço de conversão de media baseado na nuvem que assume ficheiros de vídeo e áudio e converte-os para o formato de streaming HLS com suporte de bitrate adaptativo. O sistema escuta uma fila SQS para novos ficheiros, inicia 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, múltiplos níveis de bitrate para áudio, e gere 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 com base no projeto ou editor.
Objetivo: Construir um serviço totalmente automatizado que converta qualquer ficheiro de vídeo ou áudio para o formato HLS sem intervenção manual - funcionando em múltiplos projetos, lidando com diversos tipos de conteúdo, e escalando para zero quando inativo.
Informação chave do projeto
Indústrias
Media & Entretenimento, Plataformas de Streaming de Vídeo, Serviços OTT & de Radiodifusão, Publicação Digital, Redes de Distribuição de Conteúdo — qualquer negócio que precise fornecer conteúdo de vídeo ou áudio a utilizadores finais em diferentes dispositivos e condições de rede variadas.
Serviços
Processamento de Fila SQS com long polling e gestão de timeout de visibilidade, transcodificação e análise de streams de media com FFmpeg & FFprobe, orquestração de trabalhos Kubernetes com volumes efémeros e afinidade de nó, pipeline paralelo de upload 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, miniaturas ao segundo 2, pré-visualização MP4 de 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 corre sem intervenção humana — desde o momento em que um ficheiro aterra no S3 até a saída final HLS estar pronta para reprodução. Cada passo transfere claramente para o seguinte, com salvaguardas integradas para falhas, duplicados e competição por recursos. Abaixo está como o sistema movimenta um ficheiro ao longo do ciclo completo de conversão.
Interrogação da Fila
O gestor de trabalho corre no Kubernetes e interroga a fila SQS com long polling. Quando uma mensagem chega, 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. Se encontrado, a mensagem é re-enfileirada com atraso para evitar processamento duplo.
Criação de Trabalho Kubernetes
Um novo pod é criado a partir de um template com limites de recursos corretos, afinidade de nó para instâncias baseadas em ARM, e volumes efémeros para ficheiros temporários, entrada, saída e logs.
Conversão de Vídeo & Áudio
FFmpeg converte 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 — permitindo streaming adaptativo e troca de idioma em qualquer leitor moderno.
Upload, Limpeza & Autoscaling
Todos os ficheiros são carregados para o S3 em paralelo através de um pool de 500 threads. Segmentos HLS antigos são limpos antes do novo conjunto aterrar. O autoscaler reduz os nós a zero uma vez que a fila esvazia.
Soluções
As características chave da solução
Vídeo de Bitrate Adaptativo - 5 Níveis —240p (300 kbps) → 1080p (5000 kbps) numa única playlist. Seleção automática de qualidade baseada na velocidade da ligação.
Áudio Multi-Faixa com Etiquetas de Idioma — Deteta e converte todas as faixas de áudio, incluindo comentários e descrições, preservando 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.
Autoscaling com Custo Zero em Inatividade — Nós EC2 escalam até zero quando a fila está vazia. Trabalhos ativos são protegidos contra terminação prematura.
Isolamento Multi-Projeto em S3 — Cada projeto tem o seu próprio caminho de saída S3. Suporta estruturas de pastas baseadas tanto no editor como na série.
Resultados em números
1080p
Cinco níveis de taxa de bits adaptativa desde 240p a 300 kbps até full HD 1080p a 5000 kbps — o leitor muda a qualidade automaticamente com base na velocidade da ligação.
500x
Centenas de ficheiros de saída — segmentos, listas de reprodução, miniaturas, pré-visualizações — são carregados para o S3 simultaneamente via um pool de threads, mantendo o tempo de entrega mínimo.
4seg
Segmentos HLS de 4 segundos equilibram a velocidade de mudança adaptativa com a eficiência do buffer — o leitor reage às mudanças de rede dentro de um único segmento.
5x
Cada faixa de áudio — incluindo comentário e descrição — tem até cinco níveis de qualidade desde 32 kbps (HE-AAC) até 192 kbps (LC-AAC) com normalização de volume.