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.

Image

Informações chave do projeto

Indústrias

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

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

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

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

Muitos formatos de saídaa partir de uma entrada

Muitos formatos de saídaa partir de uma entrada

Um único ficheiro de vídeo pode gerar centenas de ficheiros — cinco resoluções de vídeo, cinco taxas de bits por faixa de áudio, além de thumbnails e pré-visualizações. Tivemos de organizar tudo isso de forma limpa e enviar rapidamente.

Múltiplas streams de áudio por ficheiro de vídeo

Múltiplas streams de áudio por ficheiro de vídeo

Alguns vídeos contêm várias faixas de áudio em diferentes idiomas. O sistema teve de detetá-las automaticamente, converter cada uma separadamente e montar uma playlist principal que referencie todas as faixas com a etiqueta de idioma correta.

Confiabilidade da filae lógica de re-tentativa

Confiabilidade da filae lógica de re-tentativa

Com SQS é necessário gerir duplicados, timeouts de visibilidade e falhas de trabalhos adequadamente. Se um trabalho falhar, a mensagem deve voltar à fila para re-tentativa. Se o mesmo ficheiro for enfileirado duas vezes, não devemos processá-lo novamente.

Gestão no Kubernetes

Gestão no Kubernetes

Cada trabalho de conversão usa muitos recursos de CPU e memória. Tivemos de configurar volumes efémeros, regras de afinidade de nós e limpeza adequada para que os trabalhos não se acumulem ou bloqueiem uns aos outros.

Isolamento multi-projeto no S3

Isolamento multi-projeto no S3

O serviço opera para vários projetos ao mesmo tempo. Cada um precisa do seu próprio caminho de saída no S3, e tivemos de suportar estruturas de pastas baseadas em editor e em séries sem quebrar nada.

Seleção automática de codecs

Seleção automática de codecs

Nem todas as máquinas têm aceleração GPU. O sistema precisava detetar quais codecs estão disponíveis — NVIDIA, Intel Quick Sync, AMD, ou apenas software — e escolher automaticamente o melhor.

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

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

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

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

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

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

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.


Image

Resultados em números

Cobertura de Qualidade de Vídeo

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.

Threads de Upload Paralelos

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.

Duração Segmentada HLS

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.

Níveis de Bitrate de Áudio por Faixa

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.

Construa um pipeline de media escalável para a sua plataforma!

Obtenha um sistema totalmente automático de conversão HLS que escala com o seu conteúdo - e nós ajudamos a encontrar a arquitetura ótima para o seu projeto.

Message not sent.
Message not sent.
×
Não sabe por onde começar? Ajudamo-lo a definir os próximos passos!
Consentimento para o processamento de dados pessoais
×
Tem um desafio? A nossa equipa irá transformá-lo numa solução.
Consentimento para o processamento de dados pessoais