Educação

Como adicionar legendas com o FFmpeg (Guia de linha de comandos)

por LoudSpeaker Marketing 12 min ler
Neste artigo

Adicionar legendas a um vídeo não devia exigir uma licenciatura em ciências da computação — mas muitas vezes é essa a sensação quando se está a olhar para um terminal de linha de comandos pela primeira vez. O FFmpeg, a ferramenta gratuita e de código aberto para processamento de vídeo, oferece funcionalidades poderosas para legendas sem custos de licenciamento de software. Quer precise de gravar legendas diretamente na sua filmagem ou de incorporar faixas de legendas que possam ser ativadas ou desativadas, o FFmpeg trata de ambas as situações com alguns comandos bem elaborados. Para quem prefere evitar completamente a linha de comandos, legendas automáticas As ferramentas podem transformar um fluxo de trabalho manual em apenas alguns cliques — mas compreender o FFmpeg dá-lhe controlo total sobre a incorporação e a renderização de legendas.

Principais conclusões

  • O FFmpeg suporta dois tipos de legendas: legendas «soft», que são faixas que podem ser ativadas ou desativadas, e legendas «hard», que são gravadas de forma permanente no vídeo
  • Os ficheiros SRT utilizam uma formatação simples de carimbos de data e hora, enquanto os ficheiros ASS/SSA permitem uma formatação avançada com tipos de letra, cores, posicionamento e efeitos
  • O processamento de legendas integradas requer a recodificação do vídeo, o que é mais lento e exige mais recursos do processador
  • Muitas vezes, é possível adicionar legendas embutidas durante a cópia dos fluxos de vídeo e áudio originais, evitando a recodificação do vídeo
  • O FFmpeg 8.0 introduziu um filtro de áudio opcional chamado «Whisper» para transcrição automática, mas a compatibilidade com o av1 depende da forma como o binário do FFmpeg foi compilado e requer um modelo compatível
  • O SRT oferece ampla compatibilidade com diversas ferramentas de legendas, reprodutores e plataformas
  • Os ficheiros ASS/SSA oferecem um controlo abrangente do estilo, incluindo efeitos de texto animados e realce ao estilo karaoke
  • As legendas «soft» permitem preservar a qualidade original do vídeo quando o fluxo de vídeo é copiado sem recodificação

Compreender os formatos de legendas: SRT, VTT e ASS/SSA

Antes de se debruçar sobre os comandos do FFmpeg, é necessário compreender com o que está a trabalhar. Os ficheiros de legendas existem em vários formatos, cada um com finalidades diferentes e oferecendo níveis variáveis de controlo.

O que é um ficheiro SRT?

O SRT, ou SubRip Text, é um dos formatos de legendas mais utilizados devido à sua simplicidade. A estrutura segue um padrão simples:

1

00:00:01,000 –> 00:00:03,500

Esta é a primeira legenda.

2

00:00:03,500 –> 00:00:06,000

Este é o segundo subtítulo.

Cada entrada contém um número sequencial, um intervalo de data e hora e o texto apresentado. É possível criar e editar ficheiros SRT em qualquer editor de texto — o Bloco de Notas, o TextEdit ou o VS Code são todos compatíveis. O formato suporta quebras de linha básicas, mas tem capacidades de formatação nativas limitadas.

O formato que escolher influencia as possibilidades das suas legendas:

  • SRT (SubRip): Texto Plain com marcas de data e hora, ampla compatibilidade e opções de formatação limitadas
  • VTT (WebVTT): Um formato orientado para a Web, com definições de marcadores e estilo básico, normalmente utilizado com reprodutores de vídeo HTML5
  • ASS/SSA (Advanced SubStation Alpha): Controlo abrangente do estilo, incluindo tipos de letra, cores, posicionamento, sombras e animações

Para conteúdos nas redes sociais que exijam legendas com a identidade da marca, os ficheiros ASS oferecem a flexibilidade necessária para se adequarem à sua identidade visual. No que diz respeito a fluxos de trabalho de acessibilidade e a uma ampla compatibilidade, o formato SRT é frequentemente uma escolha prática.

Configurar o FFmpeg: Instalação e utilização básica

O FFmpeg é executado a partir da linha de comandos, o que significa que terá de introduzir comandos no Terminal no macOS ou no Linux, ou no Prompt de Comandos ou no PowerShell no Windows. A instalação varia consoante o sistema operativo:

Windows: Visite o Página de download do FFmpeg e siga uma das suas ligações para uma versão compatível do Windows. Descompacte os ficheiros e, em seguida, adicione a versão caixote do lixo pasta à sua variável de ambiente PATH.

Mac: Abra o Terminal e execute brew install ffmpeg se utilizar o gestor de pacotes Homebrew.

Linux: Executar sudo apt install ffmpeg no Ubuntu ou no Debian, ou sudo pacman -S ffmpeg em distribuições baseadas em Arch.

Verifique a sua instalação digitando:

ffmpeg -version

Uma configuração bem-sucedida apresenta informações sobre a versão e a configuração de compilação. No caso de legendas incorporadas, verifique se a configuração inclui –enable-libass, ou executar ffmpeg -filtros e confirmar que o legendas O filtro está listado.

Estrutura básica dos comandos do FFmpeg

Todos os comandos do FFmpeg seguem um padrão consistente:

ffmpeg -i input.mp4 [opções] output.mp4

O -i A opção «flag» especifica o ficheiro de entrada, as opções modificam o processamento e o argumento final indica o nome do ficheiro de saída. Compreender esta estrutura torna até os comandos mais complexos mais fáceis de ler.

Legendas embutidas: Como adicionar faixas de legendas externas a um vídeo

As legendas programáveis são armazenadas como faixas separadas dentro de um ficheiro de vídeo, permitindo aos espectadores ativá-las ou desativá-las. Esta abordagem permite preservar a qualidade original do vídeo, uma vez que o fluxo de vídeo não precisa de ser recodificado.

Integrar ficheiros SRT sem recodificar o vídeo

Um comando básico para legendas embutidas em ficheiros MP4 é:

ffmpeg -i video.mp4 -i subtitles.srt -c copy -c:s mov_text -metadata:s:s:0 language=eng output.mp4

Analisando isto:

  • -i vídeo.mp4: O seu vídeo original
  • -i legendas.srt: O seu ficheiro de legendas
  • -c cópia: Copiar fluxos de entrada compatíveis sem os recodificar
  • -c:s mov_text: Converta a faixa de legendas para um formato compatível com MP4 mov_text formato
  • -metadados:s:s:0 idioma=eng: Identifique a primeira faixa de legendas como «Inglês»

O processamento é normalmente muito mais rápido do que a renderização de legendas fixas, uma vez que o FFmpeg consegue copiar os fluxos de vídeo e áudio enquanto converte apenas o fluxo de legendas. Para as equipas que precisam de criar ficheiros de legendas antes de os incorporar, Sonix pode gerar automaticamente ficheiros SRT a partir de áudio ou vídeo.

Gestão de várias línguas de legendas

Para conteúdos que exijam várias opções linguísticas:

ffmpeg -i video.mp4 -i english.srt -i spanish.srt -map 0 -map 1 -map 2 -c copy -c:s mov_text -metadata:s:s:0 language=eng -metadata:s:s:1 language=spa output.mp4

Isto cria um único ficheiro de vídeo com faixas de legendas em inglês e espanhol, que podem ser selecionadas. O -mapa As opções incluem explicitamente os fluxos de cada entrada.

Inserção definitiva de legendas: Gravar legendas diretamente no vídeo

As legendas integradas tornam-se parte integrante dos fotogramas do vídeo, aparecendo independentemente das definições do reprodutor. Isto pode ajudar a garantir que as legendas permaneçam visíveis em ambientes de exibição que não apresentam de forma fiável faixas de legendas separadas.

Utilização do filtro de legendas para legendas permanentes

O comando básico de «burn-in» é:

ffmpeg -i video.mp4 -vf “subtitles=subtitles.srt” -c:v libx264 -c:a copy output.mp4

O -vf A opção «video-filter» aplica o filtro de legendas, exibindo o texto diretamente nos fotogramas do vídeo. Como o filtro atua sobre fotogramas descodificados, o vídeo tem de ser recodificado. O -c: uma cópia Esta opção preserva o fluxo de áudio original quando este é compatível com o container de saída.

Personalizar a aparência das legendas

O texto branco «Plain» nem sempre se enquadra na estética dos vídeos profissionais. O FFmpeg’s force_style Esta opção permite substituir as propriedades de estilo do ASS:

ffmpeg -i video.mp4 -vf “subtitles=subtitles.srt:force_style=’FontName=Roboto,FontSize=18,BackColour=&H40000000,BorderStyle=3′” -c:v libx264 -c:a copy output.mp4

Isto cria legendas com um fundo parcialmente transparente. As opções de estilo do Available incluem:

  • Nome da fonte: Um nome de tipo de letra available
  • Tamanho da fonte: Um valor ASS para o tamanho da fonte; o tamanho apresentado depende do redimensionamento das legendas e do vídeo
  • Cor Primária: Cor do texto no ASS &HAABBGGRR notação
  • Cor de fundo: Cor de fundo ou de sombra, incluindo transparência
  • BorderStyle: Normalmente 1 para um esboço ou 3 para um fundo em forma de caixa
  • Esboço: Largura do contorno em unidades do script ASS
  • Sombra: Profundidade da sombra em unidades do script ASS

A disponibilidade da fonte avail depende do sistema e da compilação do FFmpeg. Para fluxos de trabalho portáteis, poderá ser necessário indicar um diretório de fontes através do filtro fontsdir opção.

Problemas comuns e resolução de problemas

Existem vários problemas que costumam causar dificuldades aos principiantes do FFmpeg:

“Não existe esse filtro: legendas”: É possível que a sua compilação do FFmpeg não inclua suporte à libass. Verifique ffmpeg -filtros, instale uma versão que inclua o filtro ou compile o FFmpeg com –enable-libass.

Caracteres ilegíveis: O ficheiro de legendas pode estar a utilizar uma codificação de caracteres incorreta. Volte a guardá-lo em UTF-8. Ao trabalhar com outra codificação, utilize o filtro de legendas charenc opção, sempre que for suportada.

Legendas fora de sincronia: Utilizar -itsoffset antes da entrada das legendas, para deslocar todo o fluxo de legendas. Os valores positivos atrasam as legendas; os valores negativos antecipam-nas.

Tamanho enorme do ficheiro de saída: As legendas fixas obrigam à recodificação do vídeo. Para uma saída em H.264, controle a qualidade e o tamanho com um codificador compatível com CRF, como -c:v libx264 -crf 23. Valores mais baixos de CRF resultam, geralmente, em ficheiros de maior qualidade e maior tamanho.

Exemplos de comandos específicos do FFmpeg para cenários comuns

Adicionar SRT a um vídeo MP4 (método não técnico)

ffmpeg -i interview.mp4 -i captions.srt -c copy -c:s mov_text output.mp4

Utilize esta opção para leitores e fluxos de trabalho de distribuição que suportem faixas de legendas selecionáveis em ficheiros MP4. No caso de plataformas que disponibilizem uma interface dedicada ao carregamento de legendas, o carregamento do ficheiro SRT separadamente poderá ser mais fiável.

Converter um ficheiro VTT para vídeo MKV (Difícil)

ffmpeg -i webinar.mkv -vf “subtitles=captions.vtt” -c:v libx264 -c:a copy output.mkv

O -c: uma cópia Esta opção preserva o áudio original sem recodificação quando o codec é compatível com o formato de saída.

Legendas com estilo para as redes sociais

ffmpeg -i clip.mp4 -vf “subtitles=captions.srt:force_style=’FontName=Arial,FontSize=24,PrimaryColour=&H00FFFFFF,BackColour=&H80000000,BorderStyle=3,Alignment=2′” -c:v libx264 -preset veryfast -c:a copy output.mp4

Alinhamento=2 posiciona as legendas na parte inferior central, de acordo com as regras padrão de alinhamento do formato ASS. O -predefinição «veryfast» a opção acelera libx264 codificação, em detrimento de alguma eficiência na compressão.

Técnicas avançadas de legendagem com o FFmpeg

Ajustar a sincronização das legendas

Quando as legendas não correspondem perfeitamente ao áudio:

ffmpeg -i video.mp4 -itsoffset 2.5 -i subtitles.srt -c copy -c:s mov_text output.mp4

Isto atrasa o fluxo de legendas em 2,5 segundos. Para o adiantar, utilize um valor negativo, como, por exemplo, -itsoffset -1,5.

Aproveitar o ASS para efeitos visuais avançados

Os ficheiros ASS oferecem funcionalidades que os ficheiros plain SRT não disponibilizam de forma nativa:

  • Efeitos de texto animados, tais como transições e movimento
  • Destaque ao estilo karaoke
  • Várias posições de texto simultâneas
  • Estilo por carácter ou por palavra

Crie ficheiros ASS utilizando uma ferramenta de criação de legendas e, em seguida, aplique-os com o filtro ASS do FFmpeg:

ffmpeg -i video.mp4 -vf “ass=styled_captions.ass” -c:v libx264 -c:a copy output.mp4

Criação de legendas com o filtro Whisper do FFmpeg

O FFmpeg 8.0 introduziu um filtro de áudio opcional chamado «Whisper» que permite gerar transcrições, incluindo ficheiros de legendas. No entanto, nem todas as versões binárias do FFmpeg 8.x o incluem.

Em primeiro lugar, verifique se a sua compilação disponibiliza o filtro:

ffmpeg -filters | grep whisper

No Windows PowerShell, pode utilizar:

ffmpeg -filters | Select-String whisper

Também vai precisar de um ficheiro de modelo Whisper compatível. Uma estrutura de comandos representativa é a seguinte:

ffmpeg -i input.mp4 -af “whisper=model=/path/to/model.bin:language=auto:destination=output.srt:format=srt” -f null –

As opções exatas podem variar consoante a versão e a compilação do FFmpeg. As compilações compatíveis podem utilizar backends de GPU suportados, mas a aceleração depende da biblioteca Whisper associada, do hardware available, dos controladores e da configuração da compilação.

O filtro pode criar uma transcrição inicial, mas a precisão varia consoante o modelo, o idioma, os sotaques, a qualidade da gravação, o ruído de fundo e o vocabulário. Revise sempre as legendas geradas automaticamente antes da publicação.

O FFmpeg e o software de edição de vídeo: a ponte entre ambos

O FFmpeg destaca-se no processamento em lote e na automatização, enquanto os editores especializados oferecem precisão visual. A combinação ideal envolve, muitas vezes, ambas as ferramentas.

Quando utilizar o FFmpeg em vez de programas de edição de vídeo especializados

Escolha o FFmpeg quando:

  • Processar dezenas ou centenas de vídeos
  • Execução de tarefas em lote automatizadas
  • Adicionar legendas através de scripts repetíveis
  • Trabalhar em pipelines de CI/CD ou em ambientes de servidor

Escolha um software de edição de vídeo quando:

  • Ajustar visualmente a sincronização de cada legenda
  • Criação de legendas animadas complexas
  • Trabalhar em produções que exigem o posicionamento específico de fotogramas
  • Necessidade de uma pré-visualização em tempo real durante os ajustes das legendas

Exportação de legendas geradas pelo FFmpeg para editores de vídeo não lineares (NLE)

O FFmpeg pode extrair ou converter um fluxo de legendas de texto incorporado compatível:

ffmpeg -i video.mp4 -map 0:s:0 subtitles.srt

Esta opção seleciona a primeira faixa de legendas e converte-a para o formato SRT quando o tipo de legenda de origem puder ser representado como texto. As faixas de legendas baseadas em imagens não podem ser convertidas diretamente para o formato SRT sem reconhecimento de texto. O ficheiro resultante pode ser editado noutra ferramenta de legendas ou incorporado num projeto mais abrangente fluxo de trabalho de vídeo.

Otimização dos fluxos de trabalho de legendagem com o Sonix

As ferramentas de linha de comandos oferecem potência e flexibilidade, mas exigem conhecimentos técnicos que nem todos possuem ou desejam adquirir. Quando os prazos se aproximam e a precisão é fundamental, a transcrição manual, a sincronização das legendas e a gestão de ficheiros podem tornar-se pontos de estrangulamento.

Sonix aborda o fluxo de trabalho de legendagem de forma diferente, recorrendo à IA e a ferramentas baseadas no navegador para as etapas que antecedem a codificação final:

  • Transcrição automática converte áudio e vídeo em texto editável com marcação temporal
  • Suporte multilingue oferece serviços de transcrição em Mais de 54 idiomas
  • Edição no navegador combina a reprodução sincronizada com controlos de texto e de sincronização das legendas
  • Exportação de legendas inclui SRT, VTT, TTML, FCPXML e outros formatos de produção suportados
  • Identificação do orador identifica automaticamente os diferentes interlocutores nos fluxos de trabalho de transcrição suportados

A Sonix afirma oficialmente que a geração de legendas demora, em geral, cerca de cinco minutos por hora de vídeo, embora o tempo de processamento efetivo possa variar. As suas ferramentas de legendas também permitem ajustes de sincronização, personalização do estilo e a geração de legendas fixas.

Para equipas que processam volumes regulares de conteúdo, o Sonix’s funcionalidades de colaboração oferece pastas partilhadas, permissões de visualização e edição, notas ao nível do parágrafo, histórico de versões e transferências de tarefas organizadas. O Sonix utiliza um modelo de edição focado, no qual uma pessoa edita enquanto outras podem visualizar, ouvir, pesquisar e deixar notas.

A Sonix também é Certificação SOC 2 Tipo II, com os dados encriptados em trânsito através do protocolo TLS e em repouso através do AES-256. As organizações que lidam com material sujeito a regulamentação devem, ainda assim, avaliar o produto, o plano, a configuração e os requisitos contratuais específicos que se aplicam ao seu caso de utilização.

O FFmpeg remains é excelente para a incorporação final, conversão e renderização. Para as fases iniciais — transcrição, revisão, tradução e colaboração —, uma plataforma baseada no navegador pode reduzir o trabalho manual de preparação de ficheiros.

Veredicto final: Escolher entre o FFmpeg e as plataformas profissionais de transcrição

A escolha entre o FFmpeg e uma plataforma de transcrição especializada depende dos requisitos do seu fluxo de trabalho e do seu nível de familiaridade com a tecnologia.

Escolha o FFmpeg quando precisar de:

  • O Detai permite controlar os parâmetros de codificação e renderização das legendas
  • Processamento em lote para fluxos de trabalho de vídeo automatizados
  • Integração com fluxos de trabalho de linha de comandos existentes
  • Uma ferramenta de código aberto sem taxas recorrentes de subscrição de software
  • Etapas de processamento de multimédia programáveis e repetíveis

Escolha uma plataforma de transcrição profissional quando precisar de:

  • Conversão automática de voz em texto sem ter de criar a transcrição manualmente
  • Edição no navegador com reprodução sincronizada
  • Transcrição multilingue e tradução
  • Colaboração em equipa e fluxos de trabalho de revisão
  • Identificação e rotulagem de oradores
  • Funcionalidades de segurança e administrativas documentadas

Para muitas equipas de conteúdo, um fluxo de trabalho prático combina ambos: utilizar Sonix para gerar e rever transcrições com marcação temporal, identificação dos interlocutores e ferramentas de colaboração, e, em seguida, utilizar o FFmpeg para incorporar ou gravar as legendas nos ficheiros de vídeo finais. Esta abordagem combina um fluxo de trabalho de transcrição assistida com controlo técnico sobre o resultado final.

Perguntas frequentes

Qual é a diferença entre legendas «soft» e «hard»?

As legendas «soft» são armazenadas como faixas separadas que os espectadores podem ativar ou desativar através das definições de um reprodutor multimédia compatível. As legendas «hard» são incorporadas de forma permanente nos fotogramas do vídeo e aparecem independentemente da compatibilidade com faixas de legendas. As legendas «soft» podem preservar o fluxo de vídeo original quando adicionadas sem recodificação, enquanto as legendas «hard» exigem a recodificação do vídeo.

O FFmpeg consegue gerar legendas automaticamente a partir do áudio?

O FFmpeg 8.0 introduziu um filtro de áudio Whisper opcional para transcrição de voz para texto, mas esta funcionalidade só está disponível em binários compilados com suporte para o Whisper e requer um ficheiro de modelo compatível. Algumas compilações podem utilizar backends de GPU suportados, embora a aceleração por hardware não seja garantida. A precisão varia consoante o modelo selecionado, o idioma, a qualidade do áudio, os sotaques, o ruído e o vocabulário, e a saída do filtro padrão não documenta o mesmo fluxo de trabalho de identificação do locutor oferecido por plataformas de transcrição.

Como posso alterar o tipo de letra ou a cor das legendas incorporadas com o FFmpeg?

Utilize o force_style opção no filtro de legendas. Por exemplo, -vf “subtitles=captions.srt:force_style=’FontName=Arial,FontSize=20,PrimaryColour=&H0000FFFF'” aplica texto em Arial com um valor de cor ASS. As cores ASS utilizam &HAABBGGRR notação, em que AA representa o alfa. Também pode especificar Cor de fundo, BorderStyle, Esboço, Sombra, e propriedades de alinhamento.

Que formatos de legendas é que o FFmpeg suporta?

O FFmpeg consegue ler, gravar, converter ou processar vários formatos de legendas, incluindo SRT, WebVTT, ASS/SSA e vários formatos de legendas baseados em imagens. O suporte exato depende da compilação do FFmpeg, do formato de entrada, do container de saída e do codec de legendas selecionado. Para legendas embutidas em MP4, -c:s mov_text é frequentemente utilizado. Os containers Matroska podem armazenar codecs de texto, como SRT e ASS, de forma mais direta, enquanto os fluxos de trabalho com legendas integradas utilizam normalmente o legendas ou rabo filtros para os formatos de texto suportados.

Como posso garantir que as minhas legendas estão perfeitamente sincronizadas com o meu vídeo?

Visualize pequenos segmentos antes de processar o vídeo na íntegra. Se a faixa de legendas completa aparecer sempre adiantada ou atrasada, coloque -itsoffset antes da introdução das legendas: os valores positivos atrasam a faixa, enquanto os valores negativos a adiantam. Em caso de problemas que afetem apenas linhas específicas, edite os carimbos de tempo no ficheiro de legendas ou utilize um editor visual de legendas com controlo da forma de onda e da reprodução.

Obtenha uma transcrição exacta em minutos

Comece a transcrever de forma mais inteligente. Experimente o Sonix gratuitamente ou explore nossos preços para encontrar o plano certo para você.