Como colocar legenda em vídeo com SRT usando o Rendi

Veja como colocar legenda em vídeo com um arquivo SRT e a API do Rendi, do envio ao controle de qualidade do MP4, sem manter o FFmpeg na sua infraestrutura.

Friday, September 11, 2026Omid Saffari
Como colocar legenda em vídeo com SRT usando o Rendi

Este fluxo mostra como colocar legenda em vídeo: transforme um vídeo aprovado e um arquivo SRT revisado em um MP4 legendado sem adicionar um worker de vídeo à sua própria infraestrutura. O Rendi recebe o filtro de legendas convencional do FFmpeg como um job de API, fornece um ID de comando e disponibiliza uma saída armazenada quando a renderização termina com sucesso. O limite importante é simples: o processo grava nos pixels as legendas que já existem. Ele não transcreve a fala nem decide se o texto está correto.

Como colocar legenda em vídeo: resposta direta

Grave o SRT no vídeo quando todo espectador precisar ver as mesmas legendas, independentemente do que o player fizer com as faixas de legenda. Mantenha o SRT separado quando o público precisar desativar as legendas, trocar de idioma ou usar os controles de acessibilidade do player.

Com o Rendi, o fluxo prático é este:

  1. Confira juntos o vídeo final e o SRT.
  2. Disponibilize os dois arquivos em URLs que o Rendi consiga acessar ou primeiro envie os arquivos locais ao Rendi.
  3. Envie o comando de legendas do FFmpeg documentado pela plataforma.
  4. Consulte o ID do comando periodicamente ou deixe um webhook receber o resultado final.
  5. Verifique os metadados do MP4 e assista à saída inteira antes de enviar novos jobs.

Essa ordem faz diferença. Mesmo quando o encoder conclui o trabalho, a entrega pode sair ruim se uma legenda entrar antes da hora, um nome estiver errado ou o texto ficar escondido pela interface da plataforma.

Fluxo arquitetural em que VIDEO e SRT entram na etapa POST, seguida por SUCCESS e uma saída MP4
O Rendi transforma duas entradas revisadas em um job assíncrono do FFmpeg e disponibiliza o MP4 final depois do status SUCCESS.

O papel do Rendi neste fluxo

O Rendi é a sala de máquinas, não o editor. Você envia a mesma instrução do FFmpeg que executaria localmente, mas por uma API HTTP. Pense na requisição como uma ordem de serviço: os aliases de entrada informam onde estão os materiais, a string do FFmpeg descreve a operação e o alias de saída dá nome à peça pronta.

O schema atual da requisição exige ffmpeg_command e output_files. As chaves de entrada começam com in_, as de saída começam com out_, e esses mesmos nomes reaparecem no comando entre chaves duplas. Quando o envio é aceito, a resposta traz um command_id, que funciona como o protocolo do job.

No caminho mais simples, o vídeo e o SRT ficam em URLs HTTP públicas ou assinadas por tempo limitado, com o nome do arquivo no final. Um caminho local no seu notebook não é uma URL de entrada. O Rendi também oferece um fluxo multipart de upload direto para arquivos locais, com suporte a arquivos de até 5 TB, mas essa é uma etapa de preparação à parte.

Legendas fixas e faixas selecionáveis são saídas diferentes

Legendas gravadas passam a fazer parte de cada frame decodificado. Isso torna a aparência previsível, mas também torna a decisão permanente. Corrigir a grafia de uma palavra exige renderizar outro vídeo, e o espectador não consegue ocultar as legendas.

Já uma faixa de legenda selecionável permanece separada da imagem. O próprio exemplo de legendas do Rendi recomenda mov_text para uma faixa opcional em MP4 e não usa o filtro de vídeo. Assim, o espectador mantém o controle e o texto não fica incorporado à imagem.

Comparação arquitetural entre legendas gravadas em uma placa de vídeo e legendas selecionáveis mantidas em uma faixa separada
Gravada significa SEMPRE ATIVA. Selecionável significa PODE DESATIVAR. Defina o comportamento da entrega antes de renderizar.

A regra é direta: use um master de revisão com legendas fixas ou um arquivo para redes sociais quando a prioridade for a consistência visual. Preserve o SRT original e ofereça uma faixa selecionável ou um arquivo sidecar sempre que acessibilidade, busca, tradução ou escolha do espectador forem importantes.

Revise o SRT antes de gastar uma renderização

A renderização mais barata é aquela que você não precisa repetir. Revise o SRT junto à versão final exata do vídeo, não a uma exportação anterior. Confira a ordem das entradas, os horários de início e fim, a grafia de nomes e números, as quebras de linha intencionais e uma amostra representativa de caracteres acentuados ou não latinos. Procure legendas que entrem em conflito com os lower thirds ou fiquem perto demais da borda inferior.

Não misture mentalmente a transcrição por IA com esta etapa. O reconhecimento de fala pode gerar um rascunho do SRT em um ponto anterior do fluxo, mas o arquivo só deve chegar aqui depois que uma pessoa ou um processo confiável de revisão tiver aprovado o texto e a sincronização. Neste fluxo, o papel do Rendi é renderizar.

Envie ao Rendi um job com estilo definido

Este exemplo em Node.js usa o vídeo e o SRT públicos de demonstração do Rendi, portanto basta ter RENDI_API_KEY para executá-lo. O payload segue os nomes de campos e as regras de alias da OpenAPI ativa do Rendi. Os valores de force_style produzem texto branco com contorno preto e margem inferior, enquanto libx264 e AAC geram o MP4 descrito na receita de legendas do Rendi.

JavaScript
const headers = {
  "X-API-KEY": process.env.RENDI_API_KEY,
  "Content-Type": "application/json",
};

const submit = await fetch("https://api.rendi.dev/v1/run-ffmpeg-command", {
  method: "POST",
  headers,
  body: JSON.stringify({
    input_files: {
      in_video: "https://storage.rendi.dev/sample/big_buck_bunny_720p_16sec.mp4",
      in_srt: "https://storage.rendi.dev/sample/subtitles.srt",
    },
    output_files: { out_1: "subtitled.mp4" },
    ffmpeg_command:
      "-i {{in_video}} -vf \"subtitles={{in_srt}}:force_style='FontSize=22,PrimaryColour=&H00FFFFFF,OutlineColour=&H00000000,BorderStyle=1,Outline=2,Shadow=0,MarginV=36'\" -c:v libx264 -crf 20 -c:a aac -b:a 192k {{out_1}}",
  }),
});

if (!submit.ok) throw new Error(await submit.text());
const { command_id } = await submit.json();

for (;;) {
  const poll = await fetch(
    `https://api.rendi.dev/v1/commands/${command_id}`,
    { headers: { "X-API-KEY": process.env.RENDI_API_KEY } },
  );
  const job = await poll.json();
  if (job.status === "SUCCESS") {
    console.log(job.output_files.out_1);
    break;
  }
  if (job.status === "FAILED") throw new Error(job.error_message);
  await new Promise((resolve) => setTimeout(resolve, 2000));
}

O filtro de legendas altera os frames, portanto é necessário recodificar o vídeo. Você pode ajustar estilo, codec e qualidade, mas trate cada mudança como uma nova saída que precisa ser revisada. O guia oficial de FFmpeg do Rendi também documenta fontes personalizadas por meio de fontsdir e FontName. Teste exatamente a fonte e o conjunto de glifos antes de aplicá-los a uma biblioteca inteira.

O que foi realmente testado

Em 11 de setembro de 2026, o endpoint, os campos da requisição, as regras de alias, os valores de status e os campos de resposta acima foram conferidos no arquivo OpenAPI ativo do Rendi. O filtro de legendas exato também foi executado localmente com o FFmpeg 8.0.1 usando o vídeo e o SRT públicos de demonstração do Rendi. O resultado foi um MP4 de 16 segundos, com resolução de 1280 por 720, vídeo H.264 e áudio AAC; um frame aos cinco segundos exibia claramente a legenda esperada.

Nenhum job foi enviado à nuvem do Rendi porque este ambiente não continha uma chave de API do serviço. O código foi conferido contra o schema e a operação do FFmpeg foi verificada localmente, mas não há aqui qualquer alegação de execução na nuvem.

Consulte jobs curtos; use webhooks nos mais longos

O endpoint de status do Rendi pode retornar QUEUED, PROCESSING, PREPARED_FFMPEG_COMMAND, FAILED ou SUCCESS. Não confunda um POST aceito com um vídeo pronto. Aguarde um estado final, exponha error_message em caso de falha e só leia a saída depois do sucesso.

O Rendi recomenda polling para jobs com previsão de conclusão em cerca de 30 segundos ou menos e o uso de webhook para trabalhos mais longos. O webhook carrega os mesmos dados do comando concluído que o polling. Em produção, torne o handler de conclusão idempotente, responda rápido e mantenha o polling como caminho de recuperação caso a entrega do webhook venha a falhar.

Para saídas confidenciais, defina is_private: true em um plano pago e solicite uma URL pré-assinada durante o polling. O armazenamento público é o padrão. Um arquivo privado não tem URL pública permanente, e o link de download solicitado pode valer por no máximo 7 dias.

Inspecione a saída antes de processar em lote

O status SUCCESS comprova que o FFmpeg terminou. Não comprova que as legendas ficaram boas. Verifique tanto a resposta legível por máquina quanto a imagem em si.

Primeiro, confirme se output_files.out_1 existe e se o respectivo storage_url abre. Compare duração, dimensões, codec e formato de arquivo retornados com a entrega pretendida. Depois, assista ao vídeo inteiro e dê atenção especial à primeira e à última legenda, à troca mais rápida, às quebras de linha, aos nomes, aos números e às legendas próximas de cortes ou elementos gráficos sobrepostos.

Só depois dessa revisão o mesmo preset de estilo deve entrar em uma fila. Armazene juntos a revisão do vídeo de origem, a revisão do SRT, o comando FFmpeg, o ID de comando do Rendi, o ID do arquivo de saída e a decisão do revisor. Esse registro transforma um amontoado de renderizações em um sistema de produção.

O cálculo de custo depende de bytes, não de minutos

O Rendi contabiliza o tamanho somado das mídias de entrada e saída. No exemplo de preços da empresa, uma entrada de 1 GB mais uma saída de 0.5 GB consomem 1.5 GB de processamento. Sob essa ilustração exata, a franquia de 50 GB do plano Free cobre 33 jobs completos e deixa 0.5 GB, enquanto os 250 GB do plano Pro de entrada cobrem 166 jobs completos e deixam 1 GB.

Equação arquitetural de consumo de bytes em que uma entrada de 1 GB mais uma saída de 0.5 GB resultam em 1.5 GB usados, ao lado das franquias de 50 GB do Free e 250 GB do Pro
O Rendi mede os bytes que lê e grava. A duração do vídeo, sozinha, não revela o custo.

Essas quantidades de jobs são apenas o resultado aritmético do exemplo do Rendi, não um benchmark de legendas. Um MP4 com legendas gravadas pode ficar maior ou menor conforme a origem, as configurações de codec e a saída. Meça a soma real de entrada e saída antes de projetar o volume.

O Free custa $0 por mês, inclui 50 GB de processamento e limita cada comando a 1 minuto de execução. O Pro de entrada custa $25 por mês, inclui 250 GB e eleva o limite do comando para 10 minutos. A análise completa dos preços do Rendi aborda as configurações maiores de CPU e de execução sem limite, por isso não há motivo para repetir toda a matriz aqui.

A comparação relevante é operacional. O Kapwing Pro é anunciado por $16 por membro ao mês na cobrança anual ou $24 na mensal. Um editor visual é mais fácil para um trabalho avulso e ocasional. O Rendi faz mais sentido quando finalizar legendas é uma etapa repetível do sistema, acionada por ativos aprovados e acompanhada sem exigir que outra pessoa abra um editor.

Sete fluxos de trabalho que mais se beneficiam

A melhor aplicação não é qualquer caso em que alguém adiciona legendas. É a equipe que já tem um SRT aprovado e repete continuamente a renderização final.

PosiçãoQuem ganhaFluxo exatoPor que compensa
1Uma equipe de conteúdo para redes sociais que publica clipes recorrentesAprovar a transcrição, aplicar um estilo de legenda salvo, renderizar um MP4 depois de cada corte final e encaminhar o resultado para revisãoElimina tarefas repetidas de upload, estilização, exportação e download, mantendo visualmente consistentes todas as versões destinadas às plataformas
2Uma agência de localização que entrega masters de revisãoCombinar o SRT aprovado de cada idioma com a mesma origem, gravar MP4s de revisão separados e conservar os arquivos de legenda originaisOs clientes conferem sincronização e posicionamento exatamente como o público verá, enquanto a agência preserva ativos de idioma editáveis
3Uma empresa de cursos com uma biblioteca crescente de aulasAcionar uma versão derivada com legendas depois da aprovação do master da aula e do SRT e, então, comparar duração e dimensões retornadasTransforma a finalização de legendas em uma etapa controlada de lançamento, no lugar de uma tarefa manual no editor para cada aula
4Um estúdio de podcast que produz trechos em vídeoEnviar clipes aprovados e SRTs corrigidos da fila de reaproveitamento para um único preset de legendasOs editores concentram a atenção em ganchos e cortes, não em repetir a exportação final de legendas
5Uma equipe de suporte que mantém demonstrações de produtoRenderizar novamente as demos legendadas sempre que mudar um roteiro aprovado ou uma gravação de interfaceTorna cada revisão rastreável pela origem, revisão da legenda, ID de comando e saída aprovada
6Uma agência de automação que trabalha com n8n, Make ou ZapierEnviar o job do Rendi a partir do fluxo, aguardar por polling ou webhook e repassar a URL armazenada à próxima etapa aprovadaAcrescenta processamento de mídia sem executar o FFmpeg dentro de um ambiente restrito de automação
7Uma equipe de mídia que recupera acervo antigoEncontrar o clipe de origem correto, anexar um SRT aprovado e criar uma versão com legendas fixas para revisão ou redes sociaisLiga a recuperação à entrega sem confundir busca com renderização; a análise do Reelback aborda a parte de recuperação

Três produtos que valem a pena construir

1. Um finalizador de legendas em lote que protege a marca

Esta é a oportunidade mais forte. Crie um portal enxuto para equipes de conteúdo e agências: URL de vídeo aceita, SRT aprovado, preset de estilo nomeado, página de revisão e MP4 para download. O produto vende repetibilidade e aprovação, não mais um editor de uso geral.

Cerca de 1,900 buscas mensais nos EUA são feitas por add subtitles to a video, enquanto o Kapwing Pro parte de $16 por membro ao mês na cobrança anual. A demanda é ampla o suficiente para adquirir usuários, e o fluxo recorrente das equipes é específico o bastante para sustentar um produto focado.

A menor versão comercializável precisa de entradas por URL assinada, validação de SRT, alguns presets de marca bloqueados, envio ao Rendi, tratamento de webhook, metadados de saída e aprovação ou rejeição humana. O problema é a diferenciação. É fácil copiar um formulário em torno de uma única chamada ao FFmpeg. O valor duradouro precisa vir do histórico de aprovações, de regras de marca reutilizáveis, da correspondência entre revisões e de uma recuperação confiável em caso de falha.

2. Uma API de renderização de legendas voltada à automação

Ofereça um endpoint estável a agências que não querem expor seus clientes à sintaxe do FFmpeg. O cliente envia uma URL de vídeo, uma URL de SRT, o nome do preset e uma URL de callback. Seu serviço traduz o preset em um comando revisado e devolve um resultado de job normalizado.

Burn subtitles into video registra 40 buscas mensais nos EUA e um CPC de $8.16. O volume é pequeno, mas a intenção é excepcionalmente específica. A pergunta de PAA “Como posso gravar permanentemente legendas SRT em um vídeo?” é praticamente o pedido do produto.

Um MVP precisa de autenticação, validação da requisição, mapeamento do job do Rendi, chaves de idempotência, verificação do webhook, estado seguro para novas tentativas e registros de uso. O problema é a distribuição. A busca, sozinha, não sustentará o negócio, e o Rendi já oferece a API subjacente. O wrapper precisa vencer por meio de integrações com agências, presets, observabilidade e suporte.

3. Uma pré-verificação de legendas com entrega em dois formatos

Crie uma etapa de revisão que confira um SRT em relação a um vídeo final e, a partir do par aprovado, gere um MP4 de revisão com legendas gravadas e um MP4 de entrega com faixa selecionável. O comprador é uma equipe de localização, treinamento ou operações de mídia que vive perdendo o controle de qual revisão da legenda corresponde a qual corte.

A pergunta real de PAA “Como adiciono legendas SRT a um vídeo?” aparece ao lado da confusão recorrente entre legendas permanentes e selecionáveis nos resultados atuais. O produto resolve as duas necessidades sem obrigar o operador a decidir sozinho os detalhes do contêiner.

O MVP precisa de análise dos blocos de legenda, comparação de duração, prévia da área segura, IDs de revisão, duas receitas controladas de FFmpeg e um registro de aprovação. O problema é que a validação básica de SRT é um recurso, não uma empresa. O histórico de revisão e os controles de entrega precisam gerar valor suficiente para que as equipes mantenham o produto no processo de lançamento.

Limites e uma avaliação honesta

O Rendi retira a infraestrutura do FFmpeg deste fluxo. Não elimina a responsabilidade editorial. Ele não corrige uma transcrição, conserta uma sincronização ruim, escolhe quebras de linha legíveis nem decide se legendas gravadas são o formato certo para acessibilidade.

Também não há como tornar a incorporação sem perdas. O filtro de legendas muda os frames do vídeo, por isso o material é recodificado. Qualidade, tempo de execução e tamanho da saída dependem do comando e da origem. O limite de segurança padrão da API é de 300 segundos, enquanto o plano define o máximo que pode ser solicitado. Um job longo ou computacionalmente pesado exige um plano cujo teto de execução comporte a codificação real.

Não use esse caminho para um único clipe casual se uma ferramenta gratuita no navegador já resolver o trabalho. Não grave as legendas na imagem quando o público precisar ativá-las e desativá-las. Não processe em lote um estilo que ainda não foi revisado. O Rendi se destaca quando a mesma regra aprovada de finalização precisa rodar de forma confiável em muitos ativos.

O próximo passo para segunda-feira

Separe um vídeo curto e aprovado e seu SRT final. Coloque os dois atrás de URLs acessíveis, execute o payload de exemplo com o estilo escolhido, confira os metadados retornados e assista ao MP4 inteiro na menor tela compatível. Só depois dessa revisão salve o comando aprovado como preset. Em seguida, conecte o preset ao ponto em que seu fluxo já marca o vídeo e as legendas como aprovados.

Como gravar permanentemente legendas SRT em um vídeo?

Use o filtro de vídeo subtitles do FFmpeg para renderizar o texto em todos os frames e depois codifique um novo vídeo. No Rendi, associe o vídeo de origem e o SRT a aliases in_, associe o nome do MP4 a um alias out_, envie o comando e aguarde SUCCESS antes de baixar e revisar o arquivo.

Como gravar legendas em um vídeo?

Comece pelo vídeo final e por um arquivo de legendas aprovado. Escolha um comando de incorporação quando o texto precisar ficar sempre visível. Use uma faixa selecionável quando o espectador tiver que controlá-la. No Rendi, o caminho documentado para gravar legendas usa -vf subtitles={{in_srt}} e recodifica o vídeo.

Como colocar legendas SRT em um vídeo?

Você pode gravar o SRT nos pixels ou anexá-lo como uma faixa de legenda separada. A gravação mantém a aparência fixa em qualquer lugar, mas não pode ser desativada. Uma faixa opcional continua editável e selecionável. O Rendi documenta tanto o filtro subtitles para incorporação quanto mov_text para uma faixa selecionável em MP4.

Como gravar legendas em um vídeo com o HandBrake?

O HandBrake oferece uma interface de desktop para adicionar um SRT externo e marcá-lo para incorporação. É uma escolha sensata para trabalhos manuais ocasionais. O Rendi atende a outra necessidade: enviar a operação equivalente do FFmpeg por uma API quando a renderização faz parte de um sistema automatizado.

Se quiser incorporar à sua empresa um pipeline de mídia revisado como este, conheça os sistemas de produção com IA.

Última atualização
11 de set. de 2026
Categoria
Build

Prefira este site no Google

Adicionar omidsaffari.com como fonte preferida na Busca do Google

Marque omidsaffari.com como fonte preferida e o Google destaca o site para você em Top Stories, AI Overviews e AI Mode.

Artigos relacionados
Como testar plugins do Claude Code e medir sua contribuição

Como testar plugins do Claude Code e medir sua contribuição

Veja como testar plugins do Claude Code com evals nativos, comparar resultados com um controle sem plugin e limitar custos antes de levar o teste ao CI.12 de set. de 2026Build
IA de voz no Cloudflare: encontre a origem da latência

IA de voz no Cloudflare: encontre a origem da latência

Aprenda a usar o turnmetrics do Cloudflare para localizar atrasos, silêncios e falhas em cada etapa de um agente de IA de voz antes de trocar fornecedores.12 de set. de 2026Build
Agentes de IA da OpenAI: Agents API ou Agents SDK?

Agentes de IA da OpenAI: Agents API ou Agents SDK?

Compare a OpenAI Agents API e o Agents SDK em controle de sessões, runtime, custos de sandbox e migração para escolher a base certa para seus agentes de IA.11 de set. de 2026Build
FFmpeg online: quanto custa usar a API da Rendi em 2026

FFmpeg online: quanto custa usar a API da Rendi em 2026

Veja quanto custa usar FFmpeg online com a Rendi, compare processamento, armazenamento e limites de execução e escolha o plano certo para sua automação.11 de set. de 2026Build
Codex CLI com worktrees: guia prático para trabalhar em paralelo

Codex CLI com worktrees: guia prático para trabalhar em paralelo

Aprenda a usar worktrees no Codex CLI 0.154.0 para isolar tarefas, revisar mudanças e integrar commits sem mexer na árvore de trabalho principal.10 de set. de 2026Build
Como usar Claude Code com um teto real de esforço

Como usar Claude Code com um teto real de esforço

Veja como usar Claude Code com um teto de esforço, aplicar a regra certa por projeto e comparar qualidade, tokens e custo antes de escalar a equipe.10 de set. de 2026Build
agent-browser: como gravar a tela do navegador de 1 a 60 fps

agent-browser: como gravar a tela do navegador de 1 a 60 fps

Aprenda a gravar a tela do navegador com agent-browser em 1 a 60 fps, escolher MP4 ou WebM e gerar evidências de teste claras para toda a equipe.8 de set. de 2026Build
VPS barato na UltaHost? Veja o preço real da renovação

VPS barato na UltaHost? Veja o preço real da renovação

Descubra se a UltaHost oferece um VPS barato na renovação, compare planos e prazos e veja como painéis pagos e regras de reembolso afetam o custo.7 de set. de 2026Build
Newsletter

Uma carta, todo domingo.Sistemas que funcionam, não hot takes.

Semanal. Sem spam. Cancele quando quiser.