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.

Image

Informação chave do projeto

Indústrias

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

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

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

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 produzir centenas de ficheiros — cinco resoluções de vídeo, cinco bitrates de áudio por faixa de áudio, além de miniaturas e pré-visualizações. Tivemos de organizar tudo isso de forma limpa e carregar rapidamente.

Múltiplas Streams de Áudio por Ficheiro de Vídeo

Múltiplas Streams de Áudio por Ficheiro de Vídeo

Alguns vídeos vêm com várias faixas de áudio em diferentes línguas. O sistema teve de detetar todas automaticamente, converter cada uma separadamente, e criar uma playlist mestre que referencia cada faixa com a etiqueta linguística correta.

Confiabilidade da Filae Lógica de Repetição

Confiabilidade da Filae Lógica de Repetição

Com SQS, precisa-se gerir corretamente duplicações, timeouts de visibilidade e trabalhos falhados. Se um trabalho falhar, a mensagem deve regressar à fila para nova tentativa. Se o mesmo ficheiro for colocado em fila duas vezes, não devemos processá-lo novamente.

Gestão no Kubernetes

Gestão no Kubernetes

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

Isolamento Multi-Projeto no S3

Isolamento Multi-Projeto no S3

O serviço funciona 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 baseadas em série sem quebrar nada.

Seleção Automática de Codec

Seleção Automática de Codec

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 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

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

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

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

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

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

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.


Image

Resultados em números

Cobertura de Qualidade de Vídeo

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.

Threads de Upload Paralelos

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.

Duração Segmentada HLS

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.

Níveis de Taxa de Bits de Áudio por Faixa

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.

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

Obtenha um sistema de conversão HLS totalmente automatizado que escala com o seu conteúdo - e nós ajudamos a encontrar a arquitetura ideal 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