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.

Publicado em

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.

Publicado
Categoria
Build
Artigos relacionados
Alternativas ao Railway em 2026: qual plataforma escolher?

Alternativas ao Railway em 2026: qual plataforma escolher?

Compare alternativas ao Railway para serviços, Postgres, workers e cron. Veja preços, limites e um checklist para ensaiar a migração antes de mover o tráfego.22 de out. de 2026Build
Automação com IA no Gumloop: vale a pena?

Automação com IA no Gumloop: vale a pena?

Veja como o Gumloop pesquisa leads, interpreta documentos e prepara respostas com revisão humana. Entenda os preços, as integrações e os limites da ferramenta.22 de out. de 2026Build
Dados sintéticos: como gerar exemplos úteis para LLMs e testes

Dados sintéticos: como gerar exemplos úteis para LLMs e testes

Aprenda a gerar dados sintéticos para avaliar e treinar LLMs e testar software, com exemplos práticos, deduplicação, revisão humana e termos dos provedores.22 de out. de 2026Build
RLHF: como o feedback humano muda as respostas da IA

RLHF: como o feedback humano muda as respostas da IA

Entenda o que é RLHF, como o feedback humano muda o comportamento da IA, as diferenças para DPO e quais opções de fine-tuning uma pequena empresa pode usar.22 de out. de 2026Build
AI router: como escolher modelos e testar o roteamento

AI router: como escolher modelos e testar o roteamento

Entenda como rotear solicitações entre LLMs, compare opções e teste custo e qualidade com um exemplo de suporte, uma fórmula e casos reservados para avaliação.21 de out. de 2026Build
Cache semântico para LLMs: quando reutilizar uma resposta

Cache semântico para LLMs: quando reutilizar uma resposta

Entenda como o cache semântico reutiliza respostas de LLMs e como calibrar similaridade, validade e escopo para reduzir custos sem devolver a resposta errada.21 de out. de 2026Build
Pydantic AI ou LangChain: qual escolher para agentes em Python?

Pydantic AI ou LangChain: qual escolher para agentes em Python?

Compare Pydantic AI e LangChain com exemplos de triagem em Python. Entenda saídas tipadas, fluxos retomáveis, avaliações e o que muda na hora de migrar.21 de out. de 2026Build
Zed Editor vs Cursor: qual combina com seu jeito de programar?

Zed Editor vs Cursor: qual combina com seu jeito de programar?

Compare Zed Editor e Cursor em edição de código, agentes de IA, colaboração e preços em USD. Veja quando migrar, manter o Cursor ou usar os dois juntos.21 de out. de 2026Build
Newsletter

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

Semanal. Sem spam. Cancele quando quiser.