Ir para o conteúdo principal
Voltar aos artigos

Streamline: o processamento de vídeo precisa sobreviver à requisição que o iniciou

A referência aberta da Cloudflare separa execução de vídeo, controle e prévia. O desafio é manter sessões, limites e segredos fora da dependência da interface.

·3 min de leitura·11 visualizações

A Cloudflare publicou Streamline, um playground e uma implementação aberta de processamento de vídeo com Stream, Workers, Durable Objects e Containers.[16] O Media Engine executa num Container, com controlador HTTP em Go e FFmpeg como processador atual, enquanto Worker e Durable Object participam do controle e da prévia.[16] É uma referência de arquitetura, não apenas uma opção pronta de transcodificação.

O que muda para quem desenvolve

A aplicação pode desconectar e retornar enquanto a sessão continua até uma parada explícita ou duração máxima, e o desenho mantém atividade suficiente para evitar a suspensão do container no meio do processamento.[16] Minha leitura é que o trabalho longo precisa ter identidade e ciclo de vida próprios, separados da conexão que o iniciou.

Esse princípio é útil para exportações, relatórios e outras tarefas demoradas: a interface deve consultar e controlar a execução, não ser a única responsável por mantê-la viva. Recomendo estados explícitos, responsável pela sessão e limites que encerrem trabalho abandonado.

O modelo privado descrito vincula a sessão ao usuário e admite somente uma sessão ativa; o playground público utiliza controles por usuário e limites globais de admissão e concorrência.[16] Os dois desenhos não devem ser confundidos ao transformar uma referência em produto multiusuário.

Como aplicar

Proponho uma avaliação com vídeo próprio e curto. Inicie uma sessão, acompanhe a prévia, desconecte a interface e retorne para consultar o estado. Verifique parada explícita, encerramento por limite e liberação de recursos. Registre o comportamento observado, sem assumir que reconectar significa criar outro trabalho.

Numa implantação de teste multiusuário, inclua duas identidades sintéticas. Tente consultar e encerrar a sessão da primeira com a segunda. O resultado esperado deve ser definido na política da aplicação antes do teste. Acrescente um limite de concorrência pequeno e confira como novas solicitações são recusadas.

O projeto mantém chaves de entrada e saída do Stream em segredos ou configurações sem devolvê-las ao navegador.[16] Preserve essa separação ao adaptar a referência: a interface deve receber identificadores de destinos autorizados, não credenciais brutas de publicação.

Cuidados e limites

A versão atual processa mídia na CPU do Container; aceleração de hardware, WebRTC e outras primitivas aparecem como direções futuras.[16] Não prometa qualidade ou simultaneidade sem medir a carga desejada.

O desenvolvimento local usa Docker e conexão direta, sem Durable Object e sem os controles de acesso da implantação remota.[16] Funcionar localmente não valida a segurança do serviço publicado.

O rollout descrito inclui um bypass temporário e restrito que deve ser substituído por autenticação de serviço após a validação inicial.[16] Uma exceção de implantação não deve virar política permanente. O ganho arquitetural é separar controle, execução e segredos; o custo é operar e testar essas fronteiras de forma explícita.

Fonte

[16] Fonte: Cloudflare Blog

Continue lendo